{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/ui/node_modules/react/index.js","webpack:///./src/ui/node_modules/prop-types/index.js","webpack:///./src/ui/node_modules/classnames/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./src/ui/node_modules/core-js/internals/export.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./src/ui/node_modules/core-js/internals/global.js","webpack:///./src/ui/node_modules/reactcss/lib/index.js","webpack:///../src/index.ts","webpack:///./src/ui/node_modules/core-js/internals/fails.js","webpack:///./src/ui/node_modules/core-js/internals/function-uncurry-this.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/createClass.js","webpack:///./src/ui/node_modules/core-js/internals/descriptors.js","webpack:///./src/ui/node_modules/core-js/internals/an-object.js","webpack:///./src/ui/node_modules/react-dom/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/inherits.js","webpack:///./src/ui/node_modules/core-js/internals/is-object.js","webpack:///./src/ui/node_modules/core-js/internals/well-known-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/function-call.js","webpack:///./src/ui/node_modules/core-js/internals/is-callable.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./src/ui/node_modules/core-js/internals/has-own-property.js","webpack:///./src/ui/node_modules/core-js/internals/object-define-property.js","webpack:///./src/ui/node_modules/core-js/internals/to-object.js","webpack:///./src/ui/node_modules/core-js/internals/to-string.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./src/ui/node_modules/dayjs/dayjs.min.js","webpack:///./src/ui/node_modules/core-js/internals/define-built-in.js","webpack:///./src/ui/node_modules/core-js/internals/length-of-array-like.js","webpack:///./src/ui/node_modules/clsx/dist/clsx.m.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/extends.js","webpack:///./src/ui/node_modules/core-js/internals/array-iteration.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/internals/a-callable.js","webpack:///./src/ui/node_modules/core-js/internals/get-built-in.js","webpack:///./src/ui/node_modules/core-js/internals/to-indexed-object.js","webpack:///./src/ui/node_modules/core-js/internals/require-object-coercible.js","webpack:///./src/ui/node_modules/core-js/internals/is-pure.js","webpack:///./src/ui/node_modules/core-js/internals/internal-state.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/cjs.js","webpack:///./src/ui/node_modules/lodash/lodash.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/ui/node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/create-html.js","webpack:///./src/ui/node_modules/core-js/internals/string-html-forced.js","webpack:///./src/ui/node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./src/ui/node_modules/core-js/internals/to-length.js","webpack:///./src/ui/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./src/ui/node_modules/core-js/internals/set-to-string-tag.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./src/ui/node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./src/ui/node_modules/redux/es/redux.js","webpack:///./src/ui/node_modules/core-js/internals/classof-raw.js","webpack:///./src/ui/node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./src/ui/node_modules/core-js/internals/object-create.js","webpack:///./src/ui/node_modules/core-js/internals/function-bind-context.js","webpack:///./src/ui/node_modules/core-js/internals/function-apply.js","webpack:///./src/ui/node_modules/quill/dist/quill.js","webpack:///./src/ui/node_modules/core-js/internals/engine-user-agent.js","webpack:///./src/ui/node_modules/core-js/internals/to-absolute-index.js","webpack:///./src/ui/node_modules/core-js/internals/array-method-is-strict.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-constructor.js","webpack:///./src/ui/node_modules/file-saver/dist/FileSaver.min.js","webpack:///./src/ui/node_modules/core-js/internals/create-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/internals/to-property-key.js","webpack:///./src/ui/node_modules/core-js/internals/engine-v8-version.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./src/ui/node_modules/core-js/internals/create-property.js","webpack:///./src/ui/node_modules/core-js/internals/add-to-unscopables.js","webpack:///./src/ui/node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./src/ui/node_modules/core-js/internals/an-instance.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/types.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/utils.js","webpack:///./src/ui/node_modules/core-js/internals/get-method.js","webpack:///./src/ui/node_modules/core-js/internals/classof.js","webpack:///./src/ui/node_modules/core-js/internals/is-array.js","webpack:///./src/ui/node_modules/core-js/internals/array-slice.js","webpack:///./src/ui/node_modules/core-js/internals/internal-metadata.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./src/ui/node_modules/core-js/internals/is-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/native-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/try-to-string.js","webpack:///./src/ui/node_modules/core-js/internals/shared.js","webpack:///./src/ui/node_modules/core-js/internals/function-name.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-node.js","webpack:///./src/ui/node_modules/core-js/internals/set-species.js","webpack:///./src/ui/node_modules/core-js/internals/iterate.js","webpack:///./src/ui/node_modules/core-js/internals/string-trim.js","webpack:///./src/ui/node_modules/core-js/internals/promise-native-constructor.js","webpack:///./src/ui/node_modules/lodash-es/_root.js","webpack:///./src/ui/node_modules/dom-helpers/esm/canUseDOM.js","webpack:///./src/ui/node_modules/dom-helpers/esm/scrollbarSize.js","webpack:///./src/ui/node_modules/core-js/internals/function-bind-native.js","webpack:///./src/ui/node_modules/core-js/internals/indexed-object.js","webpack:///./src/ui/node_modules/core-js/internals/uid.js","webpack:///./src/ui/node_modules/core-js/internals/hidden-keys.js","webpack:///./src/ui/node_modules/core-js/internals/array-includes.js","webpack:///./src/ui/node_modules/core-js/internals/is-forced.js","webpack:///./src/ui/node_modules/core-js/internals/object-keys.js","webpack:///./src/ui/node_modules/core-js/internals/array-slice-simple.js","webpack:///./src/ui/node_modules/core-js/internals/array-species-create.js","webpack:///./src/ui/node_modules/core-js/internals/is-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./src/ui/node_modules/core-js/internals/iterators.js","webpack:///./src/ui/node_modules/core-js/internals/get-iterator-method.js","webpack:///./src/ui/node_modules/core-js/internals/define-built-ins.js","webpack:///./src/ui/node_modules/core-js/internals/species-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/freezing.js","webpack:///./src/ui/node_modules/core-js/internals/validate-arguments-length.js","webpack:///./src/ui/node_modules/core-js/internals/promise-constructor-detection.js","webpack:///./src/ui/node_modules/core-js/internals/new-promise-capability.js","webpack:///./src/ui/node_modules/lodash/isArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack:///./src/ui/node_modules/source-map/lib/util.js","webpack:///./src/ui/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./src/ui/node_modules/react/jsx-runtime.js","webpack:///./src/ui/node_modules/tinycolor2/tinycolor.js","webpack:///./src/ui/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./src/ui/node_modules/core-js/internals/document-create-element.js","webpack:///./src/ui/node_modules/core-js/internals/inspect-source.js","webpack:///./src/ui/node_modules/core-js/internals/shared-key.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./src/ui/node_modules/core-js/internals/get-iterator.js","webpack:///./src/ui/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.iterator.js","webpack:///./src/ui/node_modules/core-js/internals/array-reduce.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer.js","webpack:///./src/ui/node_modules/core-js/internals/collection.js","webpack:///./src/ui/node_modules/core-js/internals/object-is-extensible.js","webpack:///./src/ui/node_modules/core-js/internals/inherit-if-required.js","webpack:///./src/ui/node_modules/core-js/internals/math-expm1.js","webpack:///./src/ui/node_modules/core-js/internals/whitespaces.js","webpack:///./src/ui/node_modules/core-js/internals/object-prototype-accessors-forced.js","webpack:///./src/ui/node_modules/core-js/internals/task.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-exec.js","webpack:///./src/ui/node_modules/core-js/internals/string-multibyte.js","webpack:///./src/ui/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-species-constructor.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/shims.js","webpack:///./src/ui/node_modules/lodash/_assocIndexOf.js","webpack:///./src/ui/node_modules/lodash/_copyObject.js","webpack:///./src/ui/node_modules/dayjs/plugin/localizedFormat.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/vendor/detectElementResize.js","webpack:///./src/ui/node_modules/react-quill/lib/index.js","webpack:///./src/ui/node_modules/fast-deep-equal/index.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/index.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/getFetch.cjs","webpack:///./src/ui/node_modules/core-js/internals/to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/shared-store.js","webpack:///./src/ui/node_modules/core-js/internals/set-global.js","webpack:///./src/ui/node_modules/core-js/internals/make-built-in.js","webpack:///./src/ui/node_modules/core-js/internals/own-keys.js","webpack:///./src/ui/node_modules/core-js/internals/enum-bug-keys.js","webpack:///./src/ui/node_modules/core-js/internals/to-string-tag-support.js","webpack:///./src/ui/node_modules/core-js/internals/object-define-properties.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./src/ui/node_modules/core-js/internals/array-fill.js","webpack:///./src/ui/node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./src/ui/node_modules/core-js/internals/define-iterator.js","webpack:///./src/ui/node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./src/ui/node_modules/core-js/internals/array-sort.js","webpack:///./src/ui/node_modules/core-js/internals/engine-webkit-version.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer-native.js","webpack:///./src/ui/node_modules/core-js/internals/a-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/string-pad.js","webpack:///./src/ui/node_modules/core-js/internals/string-repeat.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer-non-extensible.js","webpack:///./src/ui/node_modules/core-js/internals/math-sign.js","webpack:///./src/ui/node_modules/core-js/internals/this-number-value.js","webpack:///./src/ui/node_modules/core-js/internals/is-integral-number.js","webpack:///./src/ui/node_modules/core-js/internals/perform.js","webpack:///./src/ui/node_modules/core-js/internals/is-regexp.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-flags.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./src/ui/node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/ui/node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./src/ui/node_modules/core-js/internals/advance-string-index.js","webpack:///./src/ui/node_modules/core-js/internals/string-trim-forced.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///./src/ui/node_modules/object-assign/index.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/domFns.js","webpack:///./src/ui/node_modules/lodash/_assignValue.js","webpack:///./src/ui/node_modules/lodash/isObject.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/typeof.js","webpack:///./src/ui/node_modules/lodash/_overArg.js","webpack:///./src/ui/node_modules/lodash/isObjectLike.js","webpack:///./node_modules/buffer/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.js","webpack:///./src/ui/node_modules/lodash/forOwn.js","webpack:///./src/ui/node_modules/lodash/keys.js","webpack:///./src/ui/node_modules/postcss/lib/declaration.js","webpack:///./src/ui/node_modules/postcss/lib/node.js","webpack:///./src/ui/node_modules/postcss/lib/stringify.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./src/ui/node_modules/postcss/lib/parse.js","webpack:///./src/ui/node_modules/postcss/lib/comment.js","webpack:///./src/ui/node_modules/postcss/lib/at-rule.js","webpack:///./src/ui/node_modules/postcss/lib/container.js","webpack:///./src/ui/node_modules/postcss/lib/rule.js","webpack:///./src/ui/node_modules/lodash/isString.js","webpack:///./src/ui/node_modules/react-input-autosize/lib/AutosizeInput.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/CellMeasurer/index.js","webpack:///./src/ui/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./src/ui/node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/ie8-dom-define.js","webpack:///./src/ui/node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./src/ui/node_modules/core-js/internals/native-weak-map.js","webpack:///./src/ui/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./src/ui/node_modules/core-js/internals/object-keys-internal.js","webpack:///./src/ui/node_modules/core-js/internals/html.js","webpack:///./src/ui/node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./src/ui/node_modules/core-js/internals/symbol-define-to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/native-symbol-registry.js","webpack:///./src/ui/node_modules/core-js/internals/array-copy-within.js","webpack:///./src/ui/node_modules/core-js/internals/flatten-into-array.js","webpack:///./src/ui/node_modules/core-js/internals/array-for-each.js","webpack:///./src/ui/node_modules/core-js/internals/array-from.js","webpack:///./src/ui/node_modules/core-js/internals/iterator-close.js","webpack:///./src/ui/node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/iterators-core.js","webpack:///./src/ui/node_modules/core-js/internals/a-possible-prototype.js","webpack:///./src/ui/node_modules/core-js/internals/array-last-index-of.js","webpack:///./src/ui/node_modules/core-js/internals/engine-ff-version.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack:///./src/ui/node_modules/core-js/internals/to-index.js","webpack:///./src/ui/node_modules/core-js/internals/function-bind.js","webpack:///./src/ui/node_modules/core-js/internals/collection-strong.js","webpack:///./src/ui/node_modules/core-js/internals/math-log1p.js","webpack:///./src/ui/node_modules/core-js/internals/number-parse-float.js","webpack:///./src/ui/node_modules/core-js/internals/number-parse-int.js","webpack:///./src/ui/node_modules/core-js/internals/object-assign.js","webpack:///./src/ui/node_modules/core-js/internals/object-to-array.js","webpack:///./src/ui/node_modules/core-js/internals/same-value.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-ios.js","webpack:///./src/ui/node_modules/core-js/internals/microtask.js","webpack:///./src/ui/node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack:///./src/ui/node_modules/core-js/internals/promise-resolve.js","webpack:///./src/ui/node_modules/core-js/internals/is-data-descriptor.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-get-flags.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.exec.js","webpack:///./src/ui/node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.iterator.js","webpack:///./src/ui/node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:///./src/ui/node_modules/core-js/internals/string-trim-end.js","webpack:///./src/ui/node_modules/core-js/internals/string-trim-start.js","webpack:///./src/ui/node_modules/core-js/internals/to-offset.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-from.js","webpack:///./src/ui/node_modules/core-js/internals/collection-weak.js","webpack:///./src/ui/node_modules/core-js/internals/dom-iterables.js","webpack:///./src/ui/node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///./src/ui/node_modules/core-js/internals/schedulers-fix.js","webpack:///./src/ui/node_modules/core-js/internals/native-url.js","webpack:///./src/ui/node_modules/core-js/modules/web.url-search-params.constructor.js","webpack:///./src/ui/assets/icons sync ^\\.\\/.*\\.svg$","webpack:///./src/ui/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/positionFns.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/log.js","webpack:///./src/ui/node_modules/lodash/_baseAssignValue.js","webpack:///./src/ui/node_modules/lodash/eq.js","webpack:///./src/ui/node_modules/lodash/_castPath.js","webpack:///./src/ui/node_modules/lodash/_getAllKeysIn.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///../../src/AsapQueue.ts","webpack:///../../src/TaskFactory.ts","webpack:///./src/ui/node_modules/lodash/_Stack.js","webpack:///./src/ui/node_modules/lodash/_getAllKeys.js","webpack:///./src/ui/node_modules/lodash/_getTag.js","webpack:///./src/ui/node_modules/lodash/isBuffer.js","webpack:///./src/ui/node_modules/lodash/_baseGetTag.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/defaultOverscanIndicesGetter.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/defaultCellRangeRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/List/types.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/CellMeasurer/types.js","webpack:///./src/ui/node_modules/lodash/_getPrototype.js","webpack:///./src/ui/node_modules/lodash/keysIn.js","webpack:///./src/ui/node_modules/postcss/lib/css-syntax-error.js","webpack:///./src/ui/node_modules/postcss/lib/stringifier.js","webpack:///./src/ui/node_modules/postcss/lib/processor.js","webpack:///./src/ui/node_modules/postcss/lib/lazy-result.js","webpack:///./src/ui/node_modules/source-map/source-map.js","webpack:///./src/ui/node_modules/source-map/lib/source-map-generator.js","webpack:///./src/ui/node_modules/source-map/lib/base64-vlq.js","webpack:///./src/ui/node_modules/source-map/lib/array-set.js","webpack:///./src/ui/node_modules/postcss/lib/list.js","webpack:///./src/ui/node_modules/postcss/lib/root.js","webpack:///./src/ui/node_modules/react-redux/node_modules/react-is/index.js","webpack:///./src/ui/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./src/ui/node_modules/lodash/pickBy.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/core/DndContext.js","webpack:///../../src/index.ts","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/List/index.js","webpack:///./src/ui/node_modules/lodash.debounce/index.js","webpack:///./src/ui/node_modules/lodash-es/_cloneBuffer.js","webpack:///./src/ui/node_modules/lodash-es/_freeGlobal.js","webpack:///./src/ui/node_modules/@icons/material/UnfoldMoreHorizontalIcon.js","webpack:///./src/ui/node_modules/@icons/material/CheckIcon.js","webpack:///./src/ui/node_modules/react-hot-loader/root.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/request.js","webpack:///./src/ui/node_modules/redux-persist/lib/storage/index.js","webpack:///./src/ui/node_modules/postcss/lib/postcss.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/interfaces.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/utils/predicates.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/utils/offsets.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/utils/supportsPassive.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/OptionsReader.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/TouchBackend.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/utils/math.js","webpack:///./src/ui/node_modules/react-dnd-touch-backend/dist/esm/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/path.js","webpack:///./src/ui/node_modules/core-js/internals/array-species-constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.for.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.key-for.js","webpack:///./src/ui/node_modules/core-js/modules/es.json.stringify.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.description.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.async-iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.has-instance.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.match.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.replace.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.search.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.species.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.split.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.to-primitive.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.unscopables.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.concat.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.copy-within.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.every.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.fill.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.filter.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.find.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.find-index.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.flat.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.flat-map.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.for-each.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.from.js","webpack:///./src/ui/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.includes.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.index-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.is-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.join.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.last-index-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.map.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.of.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.reduce.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.reduce-right.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.reverse.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.slice.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.some.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.sort.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.species.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.splice.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.unscopables.flat.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///./src/ui/node_modules/core-js/modules/es.array-buffer.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/ieee754.js","webpack:///./src/ui/node_modules/core-js/modules/es.array-buffer.is-view.js","webpack:///./src/ui/node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./src/ui/node_modules/core-js/modules/es.data-view.js","webpack:///./src/ui/node_modules/core-js/modules/es.data-view.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.now.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.to-iso-string.js","webpack:///./src/ui/node_modules/core-js/internals/date-to-iso-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.to-json.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/date-to-primitive.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.function.bind.js","webpack:///./src/ui/node_modules/core-js/modules/es.function.has-instance.js","webpack:///./src/ui/node_modules/core-js/modules/es.function.name.js","webpack:///./src/ui/node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///./src/ui/node_modules/core-js/modules/es.map.js","webpack:///./src/ui/node_modules/core-js/modules/es.map.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.acosh.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.asinh.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.atanh.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.cbrt.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.clz32.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.cosh.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.expm1.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.fround.js","webpack:///./src/ui/node_modules/core-js/internals/math-fround.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.hypot.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.imul.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.log10.js","webpack:///./src/ui/node_modules/core-js/internals/math-log10.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.log1p.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.log2.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.sign.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.sinh.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.tanh.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.trunc.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.epsilon.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.is-finite.js","webpack:///./src/ui/node_modules/core-js/internals/number-is-finite.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.is-integer.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.is-nan.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.is-safe-integer.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.parse-float.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.parse-int.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.to-precision.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.assign.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.create.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.define-getter.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.define-properties.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.define-property.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.define-setter.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.entries.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.freeze.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.from-entries.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-names.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.is.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.is-extensible.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.is-frozen.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.is-sealed.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.keys.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.lookup-getter.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.lookup-setter.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.prevent-extensions.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.seal.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.to-string.js","webpack:///./src/ui/node_modules/core-js/internals/object-to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.values.js","webpack:///./src/ui/node_modules/core-js/modules/es.parse-float.js","webpack:///./src/ui/node_modules/core-js/modules/es.parse-int.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-ios-pebble.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///./src/ui/node_modules/core-js/internals/host-report-errors.js","webpack:///./src/ui/node_modules/core-js/internals/queue.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-browser.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.all.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.catch.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.race.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.reject.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.resolve.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.finally.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.apply.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.construct.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.define-property.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.delete-property.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.get.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.get-prototype-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.has.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.is-extensible.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.own-keys.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.prevent-extensions.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.set.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.set-prototype-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/proxy-accessor.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.flags.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.set.js","webpack:///./src/ui/node_modules/core-js/modules/es.set.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.code-point-at.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.ends-with.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.from-code-point.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.includes.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.match.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.pad-end.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.pad-start.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.raw.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.repeat.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.replace.js","webpack:///./src/ui/node_modules/core-js/internals/get-substitution.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.search.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.split.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.starts-with.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.trim.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.trim-end.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.trim-right.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.trim-start.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.trim-left.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.anchor.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.big.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.blink.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.bold.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.fixed.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.fontcolor.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.fontsize.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.italics.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.link.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.small.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.strike.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.sub.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.sup.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///./src/ui/node_modules/core-js/internals/to-positive-integer.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.float64-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.int8-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.int16-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.int32-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.uint16-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.uint32-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.every.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack:///./src/ui/node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.find.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.from.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.join.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.map.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.of.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.set.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.some.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.weak-map.js","webpack:///./src/ui/node_modules/core-js/modules/es.weak-map.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.weak-set.js","webpack:///./src/ui/node_modules/core-js/modules/es.weak-set.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./src/ui/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/web.immediate.js","webpack:///./src/ui/node_modules/core-js/modules/web.clear-immediate.js","webpack:///./src/ui/node_modules/core-js/modules/web.set-immediate.js","webpack:///./src/ui/node_modules/core-js/modules/web.queue-microtask.js","webpack:///./src/ui/node_modules/core-js/modules/web.timers.js","webpack:///./src/ui/node_modules/core-js/modules/web.set-interval.js","webpack:///./src/ui/node_modules/core-js/modules/web.set-timeout.js","webpack:///./src/ui/node_modules/core-js/modules/web.url.js","webpack:///./src/ui/node_modules/core-js/modules/web.url.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///./src/ui/node_modules/core-js/modules/web.url.to-json.js","webpack:///./src/ui/node_modules/core-js/modules/web.url-search-params.js","webpack:///./src/ui/node_modules/regenerator-runtime/runtime.js","webpack:///./src/ui/node_modules/react/cjs/react.production.min.js","webpack:///./src/ui/node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./src/ui/node_modules/react-dom/node_modules/scheduler/index.js","webpack:///./src/ui/node_modules/react-dom/node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./src/ui/node_modules/react-is/index.js","webpack:///./src/ui/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./src/ui/node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./src/ui/assets/icons/calibrate.svg","webpack:///./src/ui/assets/icons/cancel-24px.svg","webpack:///./src/ui/assets/icons/digital_signature_error.svg","webpack:///./src/ui/assets/icons/digital_signature_valid.svg","webpack:///./src/ui/assets/icons/digital_signature_warning.svg","webpack:///./src/ui/assets/icons/edit-24px.svg","webpack:///./src/ui/assets/icons/ic-audio-redact.svg","webpack:///./src/ui/assets/icons/ic-calibrate.svg","webpack:///./src/ui/assets/icons/ic-full-frame-video-and-audio-redact.svg","webpack:///./src/ui/assets/icons/ic-full-frame-video-redact.svg","webpack:///./src/ui/assets/icons/ic-operation-export-line.svg","webpack:///./src/ui/assets/icons/ic-triangle.svg","webpack:///./src/ui/assets/icons/ic_align_bottom.svg","webpack:///./src/ui/assets/icons/ic_align_left.svg","webpack:///./src/ui/assets/icons/ic_align_right.svg","webpack:///./src/ui/assets/icons/ic_align_top.svg","webpack:///./src/ui/assets/icons/ic_annotation_add_redact_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_apply_redact_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_area_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_arrow_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_callout_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_circle_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_cloud_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_cloudy_rectangular_area_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_distance_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_ellipse_area_black.svg","webpack:///./src/ui/assets/icons/ic_annotation_eraser_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_free_highlight_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_freehand_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_freetext_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_highlight_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_image_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_line_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_perimeter_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_polygon_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_polyline_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_rectangular_area_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_redact_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_ruler_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_signature_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_square_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_squiggly_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_stamp_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_sticky_note_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_strikeout_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_underline_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotations_black_24px.svg","webpack:///./src/ui/assets/icons/ic_arrow_down_black_24px.svg","webpack:///./src/ui/assets/icons/ic_arrow_drop_down_black_24px.svg","webpack:///./src/ui/assets/icons/ic_arrow_up_black_24px.svg","webpack:///./src/ui/assets/icons/ic_bookmarks_black_24px.svg","webpack:///./src/ui/assets/icons/ic_check_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_down_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_left_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_right_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_up_black_24px.svg","webpack:///./src/ui/assets/icons/ic_close_black_24px.svg","webpack:///./src/ui/assets/icons/ic_comment_black_24px.svg","webpack:///./src/ui/assets/icons/ic_copy_black_24px.svg","webpack:///./src/ui/assets/icons/ic_crop_black_24px.svg","webpack:///./src/ui/assets/icons/ic_delete_black_24px.svg","webpack:///./src/ui/assets/icons/ic_edit_black_24px.svg","webpack:///./src/ui/assets/icons/ic_edit_page_24px.svg","webpack:///./src/ui/assets/icons/ic_extract_black_24px.svg","webpack:///./src/ui/assets/icons/ic_fileattachment_24px.svg","webpack:///./src/ui/assets/icons/ic_fit_page_black_24px.svg","webpack:///./src/ui/assets/icons/ic_fit_width_black_24px.svg","webpack:///./src/ui/assets/icons/ic_font_size_black_24px.svg","webpack:///./src/ui/assets/icons/ic_group_24px.svg","webpack:///./src/ui/assets/icons/ic_group_button_24px.svg","webpack:///./src/ui/assets/icons/ic_layers_24px.svg","webpack:///./src/ui/assets/icons/ic_left_sidebar_black_24px.svg","webpack:///./src/ui/assets/icons/ic_list_black_24px.svg","webpack:///./src/ui/assets/icons/ic_menu_black_24px.svg","webpack:///./src/ui/assets/icons/ic_microphone_24px.svg","webpack:///./src/ui/assets/icons/ic_mode_day_black_24px.svg","webpack:///./src/ui/assets/icons/ic_mode_night_black_24px.svg","webpack:///./src/ui/assets/icons/ic_more_black_24px.svg","webpack:///./src/ui/assets/icons/ic_music_24px.svg","webpack:///./src/ui/assets/icons/ic_outline_black_24px.svg","webpack:///./src/ui/assets/icons/ic_overflow_black_24px.svg","webpack:///./src/ui/assets/icons/ic_palette_black_24px.svg","webpack:///./src/ui/assets/icons/ic_pan_black_24px.svg","webpack:///./src/ui/assets/icons/ic_pause_24px.svg","webpack:///./src/ui/assets/icons/ic_placeholder_black_24px.svg","webpack:///./src/ui/assets/icons/ic_play_24px.svg","webpack:///./src/ui/assets/icons/ic_playcircle_24px.svg","webpack:///./src/ui/assets/icons/ic_rotate_left_black_24px.svg","webpack:///./src/ui/assets/icons/ic_rotate_right_black_24px.svg","webpack:///./src/ui/assets/icons/ic_search_black_24px.svg","webpack:///./src/ui/assets/icons/ic_select_black_24px.svg","webpack:///./src/ui/assets/icons/ic_select_rectangular_black_24px.svg","webpack:///./src/ui/assets/icons/ic_sound_24px.svg","webpack:///./src/ui/assets/icons/ic_thumbnails_black_24px.svg","webpack:///./src/ui/assets/icons/ic_thumbnails_grid_black_24px.svg","webpack:///./src/ui/assets/icons/ic_ungroup_24px.svg","webpack:///./src/ui/assets/icons/ic_view_mode_continuous_black_24px.svg","webpack:///./src/ui/assets/icons/ic_view_mode_cover_black_24px.svg","webpack:///./src/ui/assets/icons/ic_view_mode_facing_black_24px.svg","webpack:///./src/ui/assets/icons/ic_view_mode_reflow_black_24px.svg","webpack:///./src/ui/assets/icons/ic_view_mode_single_black_24px.svg","webpack:///./src/ui/assets/icons/ic_viewer_settings_black_24px.svg","webpack:///./src/ui/assets/icons/ic_volume_24px.svg","webpack:///./src/ui/assets/icons/ic_zoom_in_black_24px.svg","webpack:///./src/ui/assets/icons/ic_zoom_out_black_24px.svg","webpack:///./src/ui/assets/icons/icon - header - mode - day.svg","webpack:///./src/ui/assets/icons/icon - header - mode - night.svg","webpack:///./src/ui/assets/icons/icon - header - select - line.svg","webpack:///./src/ui/assets/icons/icon - tool - pen and shape - phone - line.svg","webpack:///./src/ui/assets/icons/icon - tool - redaction - full page.svg","webpack:///./src/ui/assets/icons/icon - tool - redaction - text.svg","webpack:///./src/ui/assets/icons/icon - tools - more - vertical.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-accepted.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-cancelled.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-completed.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-marked.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-none.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-rejected.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-unmarked.svg","webpack:///./src/ui/assets/icons/icon-arrow-down.svg","webpack:///./src/ui/assets/icons/icon-arrow-left.svg","webpack:///./src/ui/assets/icons/icon-arrow-right.svg","webpack:///./src/ui/assets/icons/icon-arrow-to-bottom.svg","webpack:///./src/ui/assets/icons/icon-arrow-to-middle.svg","webpack:///./src/ui/assets/icons/icon-arrow-to-top.svg","webpack:///./src/ui/assets/icons/icon-arrow-up.svg","webpack:///./src/ui/assets/icons/icon-chat-bubble.svg","webpack:///./src/ui/assets/icons/icon-chevron-down-bold.svg","webpack:///./src/ui/assets/icons/icon-chevron-down.svg","webpack:///./src/ui/assets/icons/icon-chevron-left.svg","webpack:///./src/ui/assets/icons/icon-chevron-right.svg","webpack:///./src/ui/assets/icons/icon-chevron-up.svg","webpack:///./src/ui/assets/icons/icon-close.svg","webpack:///./src/ui/assets/icons/icon-colour-none.svg","webpack:///./src/ui/assets/icons/icon-comments-filter.svg","webpack:///./src/ui/assets/icons/icon-delete-fill.svg","webpack:///./src/ui/assets/icons/icon-delete-line.svg","webpack:///./src/ui/assets/icons/icon-detach-horizontal.svg","webpack:///./src/ui/assets/icons/icon-detach-toolbar.svg","webpack:///./src/ui/assets/icons/icon-download.svg","webpack:///./src/ui/assets/icons/icon-drag-handle.svg","webpack:///./src/ui/assets/icons/icon-edit-form-field.svg","webpack:///./src/ui/assets/icons/icon-form-field-checkbox.svg","webpack:///./src/ui/assets/icons/icon-form-field-combobox.svg","webpack:///./src/ui/assets/icons/icon-form-field-listbox.svg","webpack:///./src/ui/assets/icons/icon-form-field-radiobutton.svg","webpack:///./src/ui/assets/icons/icon-form-field-signature.svg","webpack:///./src/ui/assets/icons/icon-form-field-text.svg","webpack:///./src/ui/assets/icons/icon-header-annotation-fill.svg","webpack:///./src/ui/assets/icons/icon-header-annotation-line.svg","webpack:///./src/ui/assets/icons/icon-header-annotations-line.svg","webpack:///./src/ui/assets/icons/icon-header-chat-fill.svg","webpack:///./src/ui/assets/icons/icon-header-chat-line.svg","webpack:///./src/ui/assets/icons/icon-header-clear-search.svg","webpack:///./src/ui/assets/icons/icon-header-download.svg","webpack:///./src/ui/assets/icons/icon-header-file-picker-line.svg","webpack:///./src/ui/assets/icons/icon-header-full screen-exit.svg","webpack:///./src/ui/assets/icons/icon-header-full-screen-exit.svg","webpack:///./src/ui/assets/icons/icon-header-full-screen.svg","webpack:///./src/ui/assets/icons/icon-header-language.svg","webpack:///./src/ui/assets/icons/icon-header-page manipulation-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-fill.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-insert-above.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-insert-below.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page- layout-single-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-cover-fill.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-cover-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-cover-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-double-page-fill.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-double-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-single-page-fill.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-single-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-rotation-clockwise-fill.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-rotation-clockwise-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-rotation-counterclockwise-fill.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-rotation-counterclockwise-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-continuous-page-fill.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-continuous-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-page-by-page-fill.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-page-by-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-reader.svg","webpack:///./src/ui/assets/icons/icon-header-pan.svg","webpack:///./src/ui/assets/icons/icon-header-print-fill.svg","webpack:///./src/ui/assets/icons/icon-header-print-line.svg","webpack:///./src/ui/assets/icons/icon-header-search.svg","webpack:///./src/ui/assets/icons/icon-header-select-fill.svg","webpack:///./src/ui/assets/icons/icon-header-select-line.svg","webpack:///./src/ui/assets/icons/icon-header-settings-fill.svg","webpack:///./src/ui/assets/icons/icon-header-settings-line.svg","webpack:///./src/ui/assets/icons/icon-header-sidebar-fill.svg","webpack:///./src/ui/assets/icons/icon-header-sidebar-line-selected.svg","webpack:///./src/ui/assets/icons/icon-header-sidebar-line.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-fit-to-page.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-fit-to-width.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-in-fill.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-in-line.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-marquee.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-out-fill.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-out-line.svg","webpack:///./src/ui/assets/icons/icon-info.svg","webpack:///./src/ui/assets/icons/icon-keyboard.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-closed-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-closed.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-open-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-open.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-butt.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-circle.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-diamond.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-slash.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-square.svg","webpack:///./src/ui/assets/icons/icon-linestyle-none.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-closed-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-closed.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-open-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-open.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-butt.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-circle.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-diamond.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-slash.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-square.svg","webpack:///./src/ui/assets/icons/icon-lock.svg","webpack:///./src/ui/assets/icons/icon-menu-add-style-fill.svg","webpack:///./src/ui/assets/icons/icon-menu-add-style-line.svg","webpack:///./src/ui/assets/icons/icon-menu-add.svg","webpack:///./src/ui/assets/icons/icon-menu-align-centre.svg","webpack:///./src/ui/assets/icons/icon-menu-align-left.svg","webpack:///./src/ui/assets/icons/icon-menu-align-right.svg","webpack:///./src/ui/assets/icons/icon-menu-bold.svg","webpack:///./src/ui/assets/icons/icon-menu-centre-align.svg","webpack:///./src/ui/assets/icons/icon-menu-checkmark.svg","webpack:///./src/ui/assets/icons/icon-menu-italic.svg","webpack:///./src/ui/assets/icons/icon-menu-left-align.svg","webpack:///./src/ui/assets/icons/icon-menu-no-colour.svg","webpack:///./src/ui/assets/icons/icon-menu-right-align.svg","webpack:///./src/ui/assets/icons/icon-menu-style-line.svg","webpack:///./src/ui/assets/icons/icon-menu-text-underline.svg","webpack:///./src/ui/assets/icons/icon-no-marked-redactions.svg","webpack:///./src/ui/assets/icons/icon-operation-eraser.svg","webpack:///./src/ui/assets/icons/icon-operation-redo.svg","webpack:///./src/ui/assets/icons/icon-operation-undo.svg","webpack:///./src/ui/assets/icons/icon-page-insertion-insert-above.svg","webpack:///./src/ui/assets/icons/icon-page-insertion-insert-below.svg","webpack:///./src/ui/assets/icons/icon-page-manipulation-delete.svg","webpack:///./src/ui/assets/icons/icon-page-manipulation-extract.svg","webpack:///./src/ui/assets/icons/icon-page-move-down.svg","webpack:///./src/ui/assets/icons/icon-page-move-up.svg","webpack:///./src/ui/assets/icons/icon-page-replacement.svg","webpack:///./src/ui/assets/icons/icon-panel-bookmark-fill.svg","webpack:///./src/ui/assets/icons/icon-panel-bookmark-line.svg","webpack:///./src/ui/assets/icons/icon-panel-outlines.svg","webpack:///./src/ui/assets/icons/icon-panel-thumbnail-fill.svg","webpack:///./src/ui/assets/icons/icon-panel-thumbnail-line.svg","webpack:///./src/ui/assets/icons/icon-pencil-line.svg","webpack:///./src/ui/assets/icons/icon-plus-sign.svg","webpack:///./src/ui/assets/icons/icon-post-reply.svg","webpack:///./src/ui/assets/icons/icon-redact-panel.svg","webpack:///./src/ui/assets/icons/icon-save.svg","webpack:///./src/ui/assets/icons/icon-text-bold.svg","webpack:///./src/ui/assets/icons/icon-text-italic.svg","webpack:///./src/ui/assets/icons/icon-text-justify-center.svg","webpack:///./src/ui/assets/icons/icon-text-underline.svg","webpack:///./src/ui/assets/icons/icon-thumbtack.svg","webpack:///./src/ui/assets/icons/icon-tool-arc.svg","webpack:///./src/ui/assets/icons/icon-tool-callout-fill.svg","webpack:///./src/ui/assets/icons/icon-tool-callout-line.svg","webpack:///./src/ui/assets/icons/icon-tool-changeview.svg","webpack:///./src/ui/assets/icons/icon-tool-check-stamp.svg","webpack:///./src/ui/assets/icons/icon-tool-comment-fill.svg","webpack:///./src/ui/assets/icons/icon-tool-comment-line.svg","webpack:///./src/ui/assets/icons/icon-tool-cross-stamp.svg","webpack:///./src/ui/assets/icons/icon-tool-dot-stamp.svg","webpack:///./src/ui/assets/icons/icon-tool-fill-and-sign-calendar.svg","webpack:///./src/ui/assets/icons/icon-tool-free-highlight-fill.svg","webpack:///./src/ui/assets/icons/icon-tool-free-highlight-line.svg","webpack:///./src/ui/assets/icons/icon-tool-free-text.svg","webpack:///./src/ui/assets/icons/icon-tool-highlight.svg","webpack:///./src/ui/assets/icons/icon-tool-image-fill.svg","webpack:///./src/ui/assets/icons/icon-tool-image-line.svg","webpack:///./src/ui/assets/icons/icon-tool-link.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-arc.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-ellipse-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-fill.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-polygon-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-cloud-area-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-distance-fill.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-distance-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-perimeter.svg","webpack:///./src/ui/assets/icons/icon-tool-modal-close.svg","webpack:///./src/ui/assets/icons/icon-tool-model3d.svg","webpack:///./src/ui/assets/icons/icon-tool-more.svg","webpack:///./src/ui/assets/icons/icon-tool-page-redact.svg","webpack:///./src/ui/assets/icons/icon-tool-paste-line.svg","webpack:///./src/ui/assets/icons/icon-tool-pen-fill.svg","webpack:///./src/ui/assets/icons/icon-tool-pen-highlight.svg","webpack:///./src/ui/assets/icons/icon-tool-pen-line.svg","webpack:///./src/ui/assets/icons/icon-tool-redaction-area.svg","webpack:///./src/ui/assets/icons/icon-tool-redaction-full-page.svg","webpack:///./src/ui/assets/icons/icon-tool-redaction-inline.svg","webpack:///./src/ui/assets/icons/icon-tool-select-area-redaction.svg","webpack:///./src/ui/assets/icons/icon-tool-select-pages.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-arrow.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-cloud.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-line.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-oval.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-polygon.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-polyline.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-rectangle.svg","webpack:///./src/ui/assets/icons/icon-tool-signature.svg","webpack:///./src/ui/assets/icons/icon-tool-stamp-fill.svg","webpack:///./src/ui/assets/icons/icon-tool-stamp-line.svg","webpack:///./src/ui/assets/icons/icon-tool-text-free-text.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-free-highlight-line.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-highlight.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-squiggly.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-strikethrough.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-underline.svg","webpack:///./src/ui/assets/icons/icon-tool-unlink.svg","webpack:///./src/ui/assets/icons/icon-tools-more.svg","webpack:///./src/ui/assets/icons/icon-transparent-colour.svg","webpack:///./src/ui/assets/icons/icon-unposted-comment.svg","webpack:///./src/ui/assets/icons/icon-view.svg","webpack:///./src/ui/assets/icons/icon-widget-editing.svg","webpack:///./src/ui/assets/icons/icon-zoom-thumb-in.svg","webpack:///./src/ui/assets/icons/icon-zoom-thumb-out.svg","webpack:///./src/ui/assets/icons/illustration - empty state - outlines.svg","webpack:///./src/ui/assets/icons/multi select.svg","webpack:///./src/ui/assets/icons/redact-icons-credit-card.svg","webpack:///./src/ui/assets/icons/redact-icons-email.svg","webpack:///./src/ui/assets/icons/redact-icons-image.svg","webpack:///./src/ui/assets/icons/redact-icons-phone-number.svg","webpack:///./src/ui/assets/icons/textselect_cursor.svg","webpack:///./src/ui/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./src/ui/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/Draggable.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/getPrefix.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/DraggableCore.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./src/ui/node_modules/lodash/_arrayMap.js","webpack:///./src/ui/node_modules/lodash/_baseIteratee.js","webpack:///./src/ui/node_modules/lodash/_basePickBy.js","webpack:///./src/ui/node_modules/lodash/_baseGet.js","webpack:///./src/ui/node_modules/lodash/_baseSet.js","webpack:///./src/ui/node_modules/lodash/_defineProperty.js","webpack:///./src/ui/node_modules/lodash/_getNative.js","webpack:///./src/ui/node_modules/lodash/_isIndex.js","webpack:///./src/ui/node_modules/lodash/_toKey.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./src/ui/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack:///../../src/asap.ts","webpack:///../../src/makeRequestCall.ts","webpack:///../../src/RawTask.ts","webpack:///./src/ui/node_modules/lodash/isEqual.js","webpack:///./src/ui/node_modules/lodash/_baseIsEqual.js","webpack:///./src/ui/node_modules/lodash/_baseIsEqualDeep.js","webpack:///./src/ui/node_modules/lodash/_listCacheClear.js","webpack:///./src/ui/node_modules/lodash/_listCacheDelete.js","webpack:///./src/ui/node_modules/lodash/_listCacheGet.js","webpack:///./src/ui/node_modules/lodash/_listCacheHas.js","webpack:///./src/ui/node_modules/lodash/_listCacheSet.js","webpack:///./src/ui/node_modules/lodash/_equalArrays.js","webpack:///./src/ui/node_modules/lodash/_SetCache.js","webpack:///./src/ui/node_modules/lodash/_arraySome.js","webpack:///./src/ui/node_modules/lodash/_cacheHas.js","webpack:///./src/ui/node_modules/lodash/_baseIndexOf.js","webpack:///./src/ui/node_modules/lodash/_equalByTag.js","webpack:///./src/ui/node_modules/lodash/_equalObjects.js","webpack:///./src/ui/node_modules/lodash/isTypedArray.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/List/List.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/Grid.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/utils/CellSizeAndPositionManager.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/utils/maxElementSize.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/utils/createCallbackMemoizer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/utils/updateScrollIndexHelper.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/utils/requestAnimationTimeout.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/utils/animationFrame.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/CellMeasurer/CellMeasurer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/commonjs/CellMeasurer/CellMeasurerCache.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js","webpack:///./src/ui/node_modules/reactcss/lib/flattenNames.js","webpack:///./src/ui/node_modules/lodash/_baseForOwn.js","webpack:///./src/ui/node_modules/lodash/_baseFor.js","webpack:///./src/ui/node_modules/lodash/_createBaseFor.js","webpack:///./src/ui/node_modules/lodash/_castFunction.js","webpack:///./src/ui/node_modules/lodash/isPlainObject.js","webpack:///./src/ui/node_modules/lodash/map.js","webpack:///./src/ui/node_modules/reactcss/lib/mergeClasses.js","webpack:///./src/ui/node_modules/lodash/cloneDeep.js","webpack:///./src/ui/node_modules/lodash/_baseClone.js","webpack:///./src/ui/node_modules/lodash/_arrayEach.js","webpack:///./src/ui/node_modules/lodash/_baseAssign.js","webpack:///./src/ui/node_modules/lodash/_baseAssignIn.js","webpack:///./src/ui/node_modules/lodash/_cloneBuffer.js","webpack:///./src/ui/node_modules/lodash/_root.js","webpack:///./src/ui/node_modules/lodash/_freeGlobal.js","webpack:///./src/ui/node_modules/lodash/_copyArray.js","webpack:///./src/ui/node_modules/lodash/_copySymbols.js","webpack:///./src/ui/node_modules/lodash/_getSymbols.js","webpack:///./src/ui/node_modules/lodash/_copySymbolsIn.js","webpack:///./src/ui/node_modules/lodash/_getSymbolsIn.js","webpack:///./src/ui/node_modules/lodash/_initCloneArray.js","webpack:///./src/ui/node_modules/lodash/_initCloneByTag.js","webpack:///./src/ui/node_modules/lodash/_initCloneObject.js","webpack:///./src/ui/node_modules/lodash/_baseCreate.js","webpack:///./src/ui/node_modules/lodash/_isPrototype.js","webpack:///./src/ui/node_modules/lodash/isMap.js","webpack:///./src/ui/node_modules/lodash/isSet.js","webpack:///./src/ui/node_modules/reactcss/lib/autoprefix.js","webpack:///./src/ui/node_modules/reactcss/lib/components/hover.js","webpack:///./src/ui/node_modules/reactcss/lib/components/active.js","webpack:///./src/ui/node_modules/reactcss/lib/loop.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./src/ui/node_modules/dayjs/locale lazy ^\\.\\/.*\\.js$ namespace object","webpack:///./src/ui/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./src/ui/node_modules/redux-persist/lib/storage/createWebStorage.js","webpack:///./src/ui/node_modules/redux-persist/lib/storage/getStorage.js","webpack:///./src/ui/node_modules/picocolors/picocolors.browser.js","webpack:///./src/ui/node_modules/postcss/lib/map-generator.js","webpack:///./src/ui/node_modules/source-map/lib/base64.js","webpack:///./src/ui/node_modules/source-map/lib/mapping-list.js","webpack:///./src/ui/node_modules/source-map/lib/source-map-consumer.js","webpack:///./src/ui/node_modules/source-map/lib/binary-search.js","webpack:///./src/ui/node_modules/source-map/lib/quick-sort.js","webpack:///./src/ui/node_modules/source-map/lib/source-node.js","webpack:///./node_modules/process/browser.js","webpack:///./src/ui/node_modules/postcss/lib/warn-once.js","webpack:///./src/ui/node_modules/postcss/lib/result.js","webpack:///./src/ui/node_modules/postcss/lib/warning.js","webpack:///./src/ui/node_modules/postcss/lib/parser.js","webpack:///./src/ui/node_modules/postcss/lib/tokenize.js","webpack:///./src/ui/node_modules/postcss/lib/input.js","webpack:///./src/ui/node_modules/postcss/lib/previous-map.js","webpack:///./src/ui/node_modules/postcss/lib/vendor.js","webpack:///./src/ui/node_modules/react-redux/es/components/Context.js","webpack:///./src/ui/node_modules/react-redux/es/utils/batch.js","webpack:///./src/ui/node_modules/react-redux/es/utils/Subscription.js","webpack:///./src/ui/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack:///./src/ui/node_modules/react-redux/es/components/Provider.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./src/ui/node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./src/ui/node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./src/ui/node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./src/ui/node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./src/ui/node_modules/react-redux/es/utils/bindActionCreators.js","webpack:///./src/ui/node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./src/ui/node_modules/react-redux/es/connect/mergeProps.js","webpack:///./src/ui/node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./src/ui/node_modules/react-redux/es/connect/connect.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useReduxContext.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useStore.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useDispatch.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useSelector.js","webpack:///./src/ui/node_modules/react-redux/es/index.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/context.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/I18nextProvider.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./src/ui/node_modules/i18next/dist/esm/i18next.js","webpack:///./src/ui/node_modules/redux-thunk/es/index.js","webpack:///./src/ui/src/core/getAnnotationManager.js","webpack:///./src/ui/src/core/setActiveSearchResult.js","webpack:///./src/ui/src/core/eventListener.js","webpack:///./src/ui/src/core/mergeDocument.js","webpack:///./src/ui/src/core/index.js","webpack:///./src/ui/src/core/setToolMode.js","webpack:///./src/ui/src/core/getToolMode.js","webpack:///./src/ui/src/core/getTool.js","webpack:///./src/ui/src/core/setDisplayMode.js","webpack:///./src/ui/src/core/getDisplayMode.js","webpack:///./src/ui/src/core/rotateClockwise.js","webpack:///./src/ui/src/core/rotateCounterClockwise.js","webpack:///./src/ui/src/core/rotatePages.js","webpack:///./src/ui/src/core/movePages.js","webpack:///./src/ui/src/core/removePages.js","webpack:///./src/ui/src/core/getFitMode.js","webpack:///./src/ui/src/core/fitToPage.js","webpack:///./src/ui/src/core/fitToWidth.js","webpack:///./src/ui/src/core/fitToHeight.js","webpack:///./src/ui/src/core/fitToZoom.js","webpack:///./src/ui/src/core/zoomToMouse.js","webpack:///./src/ui/src/core/getZoom.js","webpack:///./src/ui/src/core/zoomTo.js","webpack:///./src/ui/src/core/getDocumentViewer.js","webpack:///./src/ui/src/core/getTotalPages.js","webpack:///./src/ui/src/core/getCurrentPage.js","webpack:///./src/ui/src/core/setCurrentPage.js","webpack:///./src/ui/src/core/getType.js","webpack:///./src/ui/src/core/isWebViewerServerDocument.js","webpack:///./src/ui/src/core/getSelectedText.js","webpack:///./src/ui/src/core/clearSelection.js","webpack:///./src/ui/src/core/closeDocument.js","webpack:///./src/ui/src/core/getToolModeMap.js","webpack:///./src/ui/src/core/getCurrentUser.js","webpack:///./src/ui/src/core/getIsAdminUser.js","webpack:///./src/ui/src/core/setIsAdminUser.js","webpack:///./src/ui/src/core/exportAnnotations.js","webpack:///./src/ui/src/core/setCurrentUser.js","webpack:///./src/ui/src/core/setReadOnly.js","webpack:///./src/ui/src/core/setScrollViewElement.js","webpack:///./src/ui/src/core/setViewerElement.js","webpack:///./src/ui/src/core/isContinuousDisplayMode.js","webpack:///./src/ui/src/core/isScrollableDisplayMode.js","webpack:///./src/ui/src/core/scrollViewUpdated.js","webpack:///./src/ui/src/core/canModify.js","webpack:///./src/ui/src/core/canModifyContents.js","webpack:///./src/ui/src/core/deleteAnnotations.js","webpack:///./src/ui/src/core/getDisplayAuthor.js","webpack:///./src/ui/src/core/getDocument.js","webpack:///./src/ui/src/core/getCompleteRotation.js","webpack:///./src/ui/src/core/getRotation.js","webpack:///./src/ui/src/core/getPageInfo.js","webpack:///./src/ui/src/core/clearSearchResults.js","webpack:///./src/ui/src/core/getPageSearchResults.js","webpack:///./src/ui/src/core/displayAdditionalSearchResult.js","webpack:///./src/ui/src/core/displayAdditionalSearchResults.js","webpack:///./src/ui/src/core/getActiveSearchResult.js","webpack:///./src/ui/src/core/textSearchInit.js","webpack:///./src/ui/src/core/displaySearchResult.js","webpack:///./src/ui/src/core/getSearchMode.js","webpack:///./src/ui/src/core/getPageWidth.js","webpack:///./src/ui/src/core/getPageHeight.js","webpack:///./src/ui/src/core/drawAnnotations.js","webpack:///./src/ui/src/core/getOutlines.js","webpack:///./src/ui/src/core/getSelectedAnnotations.js","webpack:///./src/ui/src/core/updateCopiedAnnotations.js","webpack:///./src/ui/src/core/pasteCopiedAnnotations.js","webpack:///./src/ui/src/core/selectAnnotation.js","webpack:///./src/ui/src/core/selectAnnotations.js","webpack:///./src/ui/src/core/addAnnotations.js","webpack:///./src/ui/src/core/applyRedactions.js","webpack:///./src/ui/src/core/isCreateRedactionEnabled.js","webpack:///./src/ui/src/core/isApplyRedactionEnabled.js","webpack:///./src/ui/src/core/isAnnotationRedactable.js","webpack:///./src/ui/src/core/enableRedaction.js","webpack:///./src/ui/src/core/drawAnnotationsFromList.js","webpack:///./src/ui/src/core/setInternalAnnotationsTransform.js","webpack:///./src/ui/src/core/setPagesUpdatedInternalAnnotationsTransform.js","webpack:///./src/ui/src/core/loadThumbnailAsync.js","webpack:///./src/ui/src/core/loadAsync.js","webpack:///./src/ui/src/core/loadDocument.js","webpack:///./src/ui/src/core/getSelectedTextQuads.js","webpack:///./src/ui/src/core/getDisplayModeObject.js","webpack:///./src/ui/src/core/getScrollViewElement.js","webpack:///./src/ui/src/core/getAnnotationById.js","webpack:///./src/ui/src/core/isFullPDFEnabled.js","webpack:///./src/ui/src/core/isBlendModeSupported.js","webpack:///./src/ui/src/core/isAnnotationSelected.js","webpack:///./src/ui/src/core/setAnnotationStyles.js","webpack:///./src/ui/src/core/deselectAnnotation.js","webpack:///./src/ui/src/core/deselectAllAnnotations.js","webpack:///./src/ui/src/core/jumpToAnnotation.js","webpack:///./src/ui/src/core/insertBlankPages.js","webpack:///./src/ui/src/core/createAnnotationReply.js","webpack:///./src/ui/src/core/setNoteContents.js","webpack:///./src/ui/src/core/setAnnotationRichTextStyle.js","webpack:///./src/ui/src/core/updateAnnotationRichTextStyle.js","webpack:///./src/ui/src/core/getAnnotationsList.js","webpack:///./src/ui/src/core/getAnnotationsLoadedPromise.js","webpack:///./src/ui/src/core/getPrintablePDF.js","webpack:///./src/ui/src/core/getIsReadOnly.js","webpack:///./src/ui/src/core/cancelLoadThumbnail.js","webpack:///./src/ui/src/core/showAnnotations.js","webpack:///./src/ui/src/core/hideAnnotations.js","webpack:///./src/ui/src/core/goToOutline.js","webpack:///./src/ui/src/core/getViewerElement.js","webpack:///./src/ui/src/core/setAnnotationCanvasTransform.js","webpack:///./src/ui/src/core/getAnnotationCopy.js","webpack:///./src/ui/src/core/setWatermark.js","webpack:///./src/ui/src/core/getWatermark.js","webpack:///./src/ui/src/core/getAnnotationByMouseEvent.js","webpack:///./src/ui/src/core/groupAnnotations.js","webpack:///./src/ui/src/core/ungroupAnnotations.js","webpack:///./src/ui/src/core/getNumberOfGroups.js","webpack:///./src/ui/src/core/undo.js","webpack:///./src/ui/src/core/redo.js","webpack:///./src/ui/src/core/updateAnnotationState.js","webpack:///./src/ui/src/core/getFontStyles.js","webpack:///./src/ui/src/core/getFormFieldCreationManager.js","webpack:///./src/ui/src/core/syncNamespaces.js","webpack:///./src/ui/src/core/createDocument.js","webpack:///./src/ui/src/helpers/isDataElementLeftPanel.js","webpack:///./src/ui/src/helpers/device.js","webpack:///./src/ui/src/constants/events.js","webpack:///./src/ui/src/helpers/fireEvent.js","webpack:///./src/ui/src/constants/zoomFactors.js","webpack:///./src/ui/src/redux/selectors/exposedSelectors.js","webpack:///./src/ui/src/constants/defaultTimeFormat.js","webpack:///./src/ui/src/redux/selectors/index.js","webpack:///./src/ui/src/helpers/getFilteredDataElements.js","webpack:///./src/ui/src/redux/actions/internalActions.js","webpack:///./src/ui/src/constants/defaultTool.js","webpack:///./src/ui/src/redux/actions/exposedActions.js","webpack:///./src/ui/src/constants/actionPriority.js","webpack:///./src/ui/src/redux/actions/index.js","webpack:///./src/ui/src/components/Accessibility/Accessibility.js","webpack:///./src/ui/src/components/Accessibility/index.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/utils.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/useTranslation.js","webpack:///./src/ui/node_modules/hotkeys-js/dist/hotkeys.esm.js","webpack:///./src/ui/src/helpers/openFilePicker.js","webpack:///./src/ui/src/helpers/copyText.js","webpack:///./src/ui/src/helpers/toolStylesExist.js","webpack:///./src/ui/src/helpers/setToolModeAndGroup.js","webpack:///./src/ui/src/helpers/zoom.js","webpack:///./src/ui/src/constants/types.js","webpack:///./src/ui/src/helpers/rotate.js","webpack:///./src/ui/src/helpers/color.js","webpack:///./src/ui/src/helpers/getAnnotationClass.js","webpack:///./src/ui/src/helpers/getLatestActivityDate.js","webpack:///./src/ui/src/constants/sortStrategies.js","webpack:///./src/ui/src/constants/map.js","webpack:///./src/ui/src/helpers/print.js","webpack:///./src/ui/src/helpers/getToolStyles.js","webpack:///./src/ui/src/helpers/createTextAnnotationAndSelect.js","webpack:///./src/ui/src/helpers/isFocusingElement.js","webpack:///./src/ui/src/helpers/getNumberOfPagesToNavigate.js","webpack:///./src/ui/src/helpers/setCurrentPage.js","webpack:///./src/ui/src/helpers/hotkeysManager.js","webpack:///./src/ui/src/components/Tooltip/Tooltip.js","webpack:///./src/ui/src/components/Tooltip/index.js","webpack:///./src/ui/src/components/Icon/Icon.js","webpack:///./src/ui/src/components/Icon/index.js","webpack:///./src/ui/src/components/Button/Button.js","webpack:///./src/ui/src/components/Button/index.js","webpack:///./src/ui/src/helpers/getColor.js","webpack:///./src/ui/src/components/ToolButton/ToolButton.js","webpack:///./src/ui/src/components/ToolButton/index.js","webpack:///./src/ui/src/hooks/useMedia.js","webpack:///./src/ui/src/components/ToggleElementButton/ToggleElementButton.js","webpack:///./src/ui/src/components/ToggleElementButton/index.js","webpack:///./src/ui/src/components/DataElementWrapper/DataElementWrapper.js","webpack:///./src/ui/src/components/DataElementWrapper/index.js","webpack:///./src/ui/src/components/ToolGroupButton/ToolGroupButton.js","webpack:///./src/ui/src/components/ToolGroupButton/index.js","webpack:///./src/ui/src/components/ActionButton/ActionButton.js","webpack:///./src/ui/src/components/ActionButton/index.js","webpack:///./src/ui/src/components/StatefulButton/StatefulButton.js","webpack:///./src/ui/src/components/StatefulButton/index.js","webpack:///./src/ui/src/components/CustomElement/CustomElement.js","webpack:///./src/ui/src/components/CustomElement/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./src/ui/node_modules/react-measure/dist/index.esm.js","webpack:///./src/ui/src/components/HeaderItems/ScrollGroup.js","webpack:///./src/ui/src/components/HeaderItems/ToolGroupButtonsScroll.js","webpack:///./src/ui/src/components/HeaderItems/HeaderItems.js","webpack:///./src/ui/src/components/HeaderItems/index.js","webpack:///./src/ui/src/components/Header/Header.js","webpack:///./src/ui/src/components/Header/index.js","webpack:///./src/ui/src/components/Header/ToolsHeader.js","webpack:///./src/ui/src/constants/displayModeObjects.js","webpack:///./src/ui/src/helpers/getOverlayPositionBasedOn.js","webpack:///./src/ui/src/hooks/useOnClickOutside.js","webpack:///./src/ui/node_modules/react-swipeable/es/index.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/utils/domUtils.js","webpack:///./src/ui/src/helpers/accessibility.js","webpack:///./src/ui/src/hooks/useArrowFocus.js","webpack:///./src/ui/src/components/FlyoutMenu/FlyoutMenu.js","webpack:///./src/ui/src/apis/hotkeys.js","webpack:///./src/ui/src/helpers/localStorageManager.js","webpack:///./src/ui/src/helpers/TouchEventManager.js","webpack:///./src/ui/src/constants/feature.js","webpack:///./src/ui/src/helpers/getAnnotationCreateToolNames.js","webpack:///./src/ui/src/helpers/createToolAPI.js","webpack:///./src/ui/src/apis/enableTools.js","webpack:///./src/ui/src/apis/disableTools.js","webpack:///./src/ui/src/apis/setToolMode.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useFocusTrap.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useCurrentRef.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/FocusTrap/FocusTrap.js","webpack:///./src/ui/src/components/ModalWrapper/ModalWrapper.js","webpack:///./src/ui/src/components/ModalWrapper/index.js","webpack:///./src/ui/src/components/PasswordModal/PasswordModal.js","webpack:///./src/ui/src/components/PasswordModal/index.js","webpack:///./src/ui/src/helpers/getHashParameters.js","webpack:///./src/ui/src/helpers/loadDocument.js","webpack:///./src/ui/src/helpers/TabManager.js","webpack:///./src/ui/src/helpers/createFeatureAPI.js","webpack:///./src/ui/src/apis/enableFeatures.js","webpack:///./src/ui/src/apis/disableFeatures.js","webpack:///./src/ui/src/helpers/readerMode.js","webpack:///./src/ui/src/components/ViewControlsOverlay/ViewControlsOverlay.js","webpack:///./src/ui/src/components/ViewControlsOverlay/index.js","webpack:///./src/ui/src/helpers/downloadPdf.js","webpack:///./src/ui/src/helpers/isFullscreen.js","webpack:///./src/ui/src/helpers/toggleFullscreen.js","webpack:///./src/ui/src/constants/dataElement.js","webpack:///./src/ui/src/components/MenuOverlay/MenuOverlay.js","webpack:///./src/ui/src/components/MenuOverlay/index.js","webpack:///./src/ui/src/components/AnnotationContentOverlay/FormFieldPlaceHolderOverlay.js","webpack:///./src/ui/src/components/AnnotationContentOverlay/AnnotationContentOverlay.js","webpack:///./src/ui/src/components/AnnotationContentOverlay/index.js","webpack:///./src/ui/src/helpers/documentContainerHelper.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/withTranslation.js","webpack:///./src/ui/src/helpers/parseMeasurementContents.js","webpack:///./src/ui/src/helpers/getFormattedUnit.js","webpack:///./src/ui/src/components/MeasurementOverlay/CustomMeasurementOverlay.js","webpack:///./src/ui/src/components/MeasurementOverlay/EllipseMeasurementOverlay.js","webpack:///./src/ui/src/components/MeasurementOverlay/ArcMeasurementOverlay.js","webpack:///./src/ui/src/components/MeasurementOverlay/LineMeasurementInput.js","webpack:///./src/ui/src/components/MeasurementOverlay/CountMeasurementOverlay.js","webpack:///./src/ui/src/components/MeasurementOverlay/MeasurementOverlay.js","webpack:///./src/ui/src/components/MeasurementOverlay/index.js","webpack:///./src/ui/src/components/PageNavOverlay/PageNavOverlay.js","webpack:///./src/ui/src/components/PageNavOverlay/index.js","webpack:///./src/ui/src/components/ToolButton/PresetButton.js","webpack:///./src/ui/node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","webpack:///./src/ui/src/components/HorizontalDivider/index.js","webpack:///./src/ui/src/components/HorizontalDivider/HorizontalDivider.js","webpack:///./src/ui/src/components/ColorPaletteHeader/ColorPaletteHeader.js","webpack:///./src/ui/src/components/ColorPaletteHeader/index.js","webpack:///./src/ui/src/components/ColorPalette/ColorPalette.js","webpack:///./src/ui/src/components/ColorPalette/index.js","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePicker.js","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePickerRedux.js","webpack:///./src/ui/src/components/ColorPalettePicker/index.js","webpack:///./src/ui/src/constants/slider.js","webpack:///./src/ui/src/components/Slider/Slider.js","webpack:///./src/ui/src/components/Slider/index.js","webpack:///./src/ui/node_modules/tslib/tslib.es6.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useAccessibleFocus.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useFocus.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/utils/idUtils.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useID.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Check.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/ChevronDown.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Circle.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Close.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Download.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Error.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Hide.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Info.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Menu.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/MultiPage.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/RotateRight.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Search.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Show.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/SinglePage.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Success.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Warning.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Icon/Icon.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Choice/Choice.js","webpack:///./src/ui/src/components/Choice/Choice.js","webpack:///./src/ui/src/helpers/getMeasurementTools.js","webpack:///./src/ui/src/components/MeasurementOption/MeasurementOption.js","webpack:///./src/ui/src/components/MeasurementOption/index.js","webpack:///./src/ui/src/components/StyleOption/StyleOption.js","webpack:///./src/ui/src/components/StyleOption/index.js","webpack:///./src/ui/src/components/Dropdown/Dropdown.js","webpack:///./src/ui/src/components/Dropdown/index.js","webpack:///./src/ui/src/components/LineStyleOptions/LineStyleOptions.js","webpack:///./src/ui/src/components/LineStyleOptions/index.js","webpack:///./src/ui/src/components/FontSizeDropdown/FontSizeDropdown.js","webpack:///./src/ui/src/components/FontSizeDropdown/index.js","webpack:///./src/ui/src/components/TextStylePicker/TextStylePicker.js","webpack:///./src/ui/src/components/TextStylePicker/index.js","webpack:///./src/ui/src/components/LabelTextEditor/LabelTextEditor.js","webpack:///./src/ui/src/components/LabelTextEditor/index.js","webpack:///./src/ui/src/components/StylePopup/StylePopup.js","webpack:///./src/ui/src/components/StylePopup/index.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureRowContent.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureAddBtn.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureStylePopup.js","webpack:///./src/ui/src/components/SignatureStylePopup/index.js","webpack:///./src/ui/src/helpers/setToolStyles.js","webpack:///./src/ui/src/helpers/getElements.js","webpack:///./src/ui/src/components/Tabs/Tabs.js","webpack:///./src/ui/src/components/RubberStampOverlay/RubberStampOverlay.js","webpack:///./src/ui/src/components/RubberStampOverlay/index.js","webpack:///./src/ui/src/components/ToolStylePopup/ToolStylePopup.js","webpack:///./src/ui/src/helpers/getTextDecoration.js","webpack:///./src/ui/src/components/ToolStylePopup/index.js","webpack:///./src/ui/src/components/ToolsDropdown/index.js","webpack:///./src/ui/src/components/ToolsDropdown/ToolsDropdown.js","webpack:///./src/ui/src/components/SignatureStylePopup/SelectedSignatureRow.js","webpack:///./src/ui/src/components/RubberStampOverlay/SelectedRubberStamp.js","webpack:///./src/ui/src/components/SelectedStamp/SelectedStamp.js","webpack:///./src/ui/src/components/ToolsOverlay/ToolsOverlay.js","webpack:///./src/ui/src/components/ToolsOverlay/index.js","webpack:///./src/ui/src/helpers/getActualZoomLevel.js","webpack:///./src/ui/src/helpers/setMaxZoomLevel.js","webpack:///./src/ui/src/helpers/getPopupPosition.js","webpack:///./src/ui/src/components/ReaderModeStylePopup/ReaderModeStylePopup.js","webpack:///./src/ui/src/components/ReaderModeStylePopup/index.js","webpack:///./src/ui/src/components/ReaderModeViewer/ReaderModeViewer.js","webpack:///./src/ui/src/components/ReaderModeViewer/index.js","webpack:///./src/ui/src/components/TabsHeader/Tab/Tab.js","webpack:///./src/ui/src/components/TabsHeader/HoverTab/HoverTab.js","webpack:///./src/ui/src/components/PageReplacementModal/FileInputPanel/FileInputPanel.js","webpack:///./src/ui/src/components/PageReplacementModal/FileInputPanel/index.js","webpack:///./src/ui/src/components/PageReplacementModal/FilePickerPanel/FilePickerPanel.js","webpack:///./src/ui/src/components/PageReplacementModal/FilePickerPanel/index.js","webpack:///./src/ui/src/components/OpenFileModal/FileModal/OpenFileModal.js","webpack:///./src/ui/src/components/OpenFileModal/OpenFileModalContainer.js","webpack:///./src/ui/src/components/OpenFileModal/index.js","webpack:///./src/ui/src/components/TabsHeader/CollapsedTab/CollapsedTab.js","webpack:///./src/ui/src/components/TabsHeader/TabsHeader.js","webpack:///./src/ui/src/components/TabsHeader/index.js","webpack:///./src/ui/src/components/DocumentContainer/DocumentContainer.js","webpack:///./src/ui/src/components/DocumentContainer/index.js","webpack:///./src/ui/src/components/Element/Element.js","webpack:///./src/ui/src/components/Element/index.js","webpack:///./src/ui/src/components/LeftPanelTabs/LeftPanelTabs.js","webpack:///./src/ui/src/components/LeftPanelTabs/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/types.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/CellSizeAndPositionManager.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/maxElementSize.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/utils/createCallbackMemoizer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/utils/updateScrollIndexHelper.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/utils/animationFrame.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/Grid.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/utils/requestAnimationTimeout.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/defaultOverscanIndicesGetter.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/defaultCellRangeRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Grid/accessibilityOverscanIndicesGetter.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ArrowKeyStepper/types.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ArrowKeyStepper/ArrowKeyStepper.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/AutoSizer/AutoSizer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/CellMeasurer/types.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurerCache.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/CollectionView.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/Section.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/SectionManager.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/utils/getUpdatedOffsetForIndex.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/Collection.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/utils/calculateSizeAndPositionData.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Collection/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ColumnSizer/ColumnSizer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ColumnSizer/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/InfiniteLoader/InfiniteLoader.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/InfiniteLoader/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/List/List.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/vendor/binarySearchBounds.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/vendor/intervalTree.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Masonry/PositionCache.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Masonry/Masonry.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Masonry/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/MultiGrid/CellMeasurerCacheDecorator.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/MultiGrid/MultiGrid.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/ScrollSync/ScrollSync.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultHeaderRowRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/SortDirection.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/SortIndicator.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultHeaderRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultRowRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/Column.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/Table.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultCellDataGetter.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/defaultCellRenderer.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/Table/index.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/WindowScroller/utils/dimensions.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/WindowScroller/WindowScroller.js","webpack:///./src/ui/node_modules/react-virtualized/dist/es/WindowScroller/index.js","webpack:///./src/ui/src/hooks/useDidUpdate.js","webpack:///./src/ui/src/helpers/extractPagesWithAnnotations.js","webpack:///./src/ui/src/constants/redactionTypes.js","webpack:///./src/ui/src/helpers/pageManipulationFunctions.js","webpack:///./src/ui/src/components/PageManipulationOverlayButton/PageManipulationOverlayButtonContainer.js","webpack:///./src/ui/src/components/PageManipulationOverlayButton/index.js","webpack:///./src/ui/src/components/ThumbnailControls/ThumbnailControls.js","webpack:///./src/ui/src/components/ThumbnailControls/index.js","webpack:///./src/ui/src/constants/thumbnailSelectionModes.js","webpack:///./src/ui/src/components/Thumbnail/Thumbnail.js","webpack:///./src/ui/src/components/Thumbnail/ThumbnailRedux.js","webpack:///./src/ui/src/components/Thumbnail/index.js","webpack:///./src/ui/src/helpers/getPageArrayFromString.js","webpack:///./src/ui/src/components/DocumentControls/DocumentControls.js","webpack:///./src/ui/src/components/DocumentControls/index.js","webpack:///./src/ui/src/helpers/pageManipulation.js","webpack:///./src/ui/src/components/ThumbnailsPanel/ThumbnailsPanel.js","webpack:///./src/ui/src/components/ThumbnailsPanel/index.js","webpack:///./src/ui/src/components/Outline/Context.js","webpack:///./src/ui/src/helpers/OutlineUtils.js","webpack:///./src/ui/src/components/OutlineControls/OutlineControls.js","webpack:///./src/ui/src/components/OutlineControls/index.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/registration.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/DropTargetMonitorImpl.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/wrapConnectorHooks.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/isRef.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/TargetConnector.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/utils.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/disposables.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/decorateHandler.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/createTargetFactory.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/SourceConnector.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/internals/DragSourceMonitorImpl.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/createSourceFactory.js","webpack:///./src/ui/src/constants/dnd.js","webpack:///./src/ui/src/components/OutlineEditPopup/OutlineEditPopup.js","webpack:///./src/ui/src/components/OutlineEditPopup/index.js","webpack:///./src/ui/src/components/OutlineTextInput/OutlineTextInput.js","webpack:///./src/ui/src/components/OutlineTextInput/index.js","webpack:///./src/ui/src/components/Outline/Outline.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/DropTarget.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/decorators/DragSource.js","webpack:///./src/ui/src/components/Outline/index.js","webpack:///./src/ui/src/components/OutlinesPanel/OutlinesPanel.js","webpack:///./src/ui/src/components/OutlinesPanel/index.js","webpack:///./src/ui/src/components/BookmarkOutlineContextMenuPopup/BookmarkOutlineContextMenuPopup.js","webpack:///./src/ui/src/components/BookmarkOutlineContextMenuPopup/index.js","webpack:///./src/ui/src/components/Choice/index.js","webpack:///./src/ui/src/components/Bookmark/Bookmark.js","webpack:///./src/ui/src/components/Bookmark/index.js","webpack:///./src/ui/src/components/BookmarksPanel/BookmarksPanel.js","webpack:///./src/ui/src/components/BookmarksPanel/index.js","webpack:///./src/ui/src/components/Layer/updateLayerVisibililty.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Label/Label.js","webpack:///./src/ui/src/components/Layer/Layer.js","webpack:///./src/ui/src/components/Layer/index.js","webpack:///./src/ui/src/components/LayersPanel/LayersPanel.js","webpack:///./src/ui/src/components/LayersPanel/LayersPanelRedux.js","webpack:///./src/ui/src/components/LayersPanel/index.js","webpack:///./src/ui/src/components/NotesPanel/VirtualizedList/VirtualizedList.js","webpack:///./src/ui/src/components/NotesPanel/VirtualizedList/index.js","webpack:///./src/ui/src/components/NotesPanel/NormalList/NormalList.js","webpack:///./src/ui/src/components/NotesPanel/NormalList/index.js","webpack:///./src/ui/src/components/Note/Context.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/utils.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/html-tag.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/anchor-tag-builder.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/truncate/truncate-smart.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/truncate/truncate-middle.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/truncate/truncate-end.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/match/match.js","webpack:///./src/ui/node_modules/autolinker/node_modules/tslib/tslib.es6.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/match/email-match.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/matcher/url-matcher.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/match/hashtag-match.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/match/mention-match.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/match/phone-match.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/match/url-match.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/matcher/matcher.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/regex-lib.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/matcher/tld-regex.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/matcher/email-matcher.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/matcher/url-match-validator.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/matcher/hashtag-matcher.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/matcher/phone-matcher.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/matcher/mention-matcher.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/htmlParser/parse-html.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/index.js","webpack:///./src/ui/node_modules/autolinker/dist/es2015/autolinker.js","webpack:///./src/ui/node_modules/quill-mention/dist/quill.mention.esm.js","webpack:///./src/ui/src/helpers/MentionsManager.js","webpack:///./src/ui/src/components/NoteTextarea/CommentTextarea/CommentTextarea.js","webpack:///./src/ui/src/components/NoteTextarea/NoteTextarea.js","webpack:///./src/ui/src/components/NoteTextarea/index.js","webpack:///./src/ui/src/helpers/setAnnotationRichTextStyle.js","webpack:///./src/ui/src/helpers/setReactQuillContent.js","webpack:///./src/ui/src/constants/theme.js","webpack:///./src/ui/src/components/NotePopup/NotePopup.js","webpack:///./src/ui/src/components/NotePopup/NotePopupContainer.js","webpack:///./src/ui/src/components/NotePopup/index.js","webpack:///./src/ui/src/components/NoteState/NoteState.js","webpack:///./src/ui/src/components/NoteState/NoteStateContainer.js","webpack:///./src/ui/src/components/NoteState/index.js","webpack:///./src/ui/src/components/NoteUnpostedCommentIndicator/NoteUnpostedCommentIndicator.js","webpack:///./src/ui/src/components/NoteUnpostedCommentIndicator/index.js","webpack:///./src/ui/src/components/NoteUnpostedCommentIndicator/NoteUnpostedCommentIndicatorContainer.js","webpack:///./src/ui/src/components/NoteHeader/NoteHeader.js","webpack:///./src/ui/src/components/NoteHeader/index.js","webpack:///./src/ui/src/components/NoteTextPreview/NoteTextPreview.js","webpack:///./src/ui/src/components/NoteTextPreview/NoteTextPreviewContainer.js","webpack:///./src/ui/src/components/NoteTextPreview/index.js","webpack:///./src/ui/src/components/NoteContent/NoteContent.js","webpack:///./src/ui/src/components/NoteContent/index.js","webpack:///./src/ui/src/components/Note/ReplyArea/ReplyArea.js","webpack:///./src/ui/src/components/Note/ReplyArea/index.js","webpack:///./src/ui/src/components/AnnotationNoteConnectorLine/AnnotationNoteConnectorLine.js","webpack:///./src/ui/src/components/AnnotationNoteConnectorLine/index.js","webpack:///./src/ui/src/components/Note/Note.js","webpack:///./src/ui/src/components/Note/index.js","webpack:///./src/ui/src/components/ListSeparator/ListSeparator.js","webpack:///./src/ui/src/components/ListSeparator/index.js","webpack:///./src/ui/src/components/NotesPanel/NotesPanel.js","webpack:///./src/ui/src/components/NotesPanel/index.js","webpack:///./src/ui/src/helpers/getFileAttachments.js","webpack:///./src/ui/src/components/FileAttachmentPanel/FileAttachmentPanel.js","webpack:///./src/ui/src/components/FileAttachmentPanel/index.js","webpack:///./src/ui/src/helpers/setVerificationResult.js","webpack:///./src/ui/src/components/SignaturePanel/Spinner/index.js","webpack:///./src/ui/src/components/SignaturePanel/SignatureIcon/SignatureIcon.js","webpack:///./src/ui/src/components/SignaturePanel/SignatureIcon/index.js","webpack:///./src/ui/src/components/SignaturePanel/WidgetLocator/WidgetLocator.js","webpack:///./src/ui/src/components/SignaturePanel/WidgetLocator/index.js","webpack:///./src/ui/src/components/SignaturePanel/WidgetInfo/WidgetInfo.js","webpack:///./src/ui/src/components/SignaturePanel/WidgetInfo/index.js","webpack:///./src/ui/src/components/SignaturePanel/SignaturePanel.js","webpack:///./src/ui/src/components/SignaturePanel/index.js","webpack:///./src/ui/src/components/ResizeBar/index.js","webpack:///./src/ui/src/components/ResizeBar/ResizeBar.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsSmall/LeftPanelPageTabsSmall.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabs/LeftPanelPageTabs.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsRotate/LeftPanelPageTabsRotate.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/LeftPanelPageTabsContainer.js","webpack:///./src/ui/src/components/LeftPanelPageTabs/index.js","webpack:///./src/ui/src/components/LeftPanel/LeftPanel.js","webpack:///./src/ui/src/components/LeftPanel/index.js","webpack:///./src/ui/src/components/SearchResult/SearchResult.js","webpack:///./src/ui/src/components/SearchResult/index.js","webpack:///./src/ui/src/components/Spinner/index.js","webpack:///./src/ui/src/components/Spinner/Spinner.js","webpack:///./src/ui/src/components/SearchOverlay/SearchOverlay.js","webpack:///./src/ui/src/helpers/search.js","webpack:///./src/ui/src/apis/searchTextFull.js","webpack:///./src/ui/src/components/SearchOverlay/SearchOverlayContainer.js","webpack:///./src/ui/src/components/SearchOverlay/SearchOverlayRedux.js","webpack:///./src/ui/src/components/SearchOverlay/index.js","webpack:///./src/ui/src/helpers/getClassName.js","webpack:///./src/ui/src/helpers/isSearchResultSame.js","webpack:///./src/ui/src/hooks/useSearch.js","webpack:///./src/ui/src/components/SearchPanel/SearchPanel.js","webpack:///./src/ui/src/components/SearchPanel/SearchPanelContainer.js","webpack:///./src/ui/src/components/SearchPanel/index.js","webpack:///./src/ui/src/components/RightPanel/RightPanel.js","webpack:///./src/ui/src/components/RightPanel/index.js","webpack:///./src/ui/src/apis/toolDefaultStyleUpdateFromAnnotationPopup.js","webpack:///./src/ui/src/components/AnnotationStylePopup/AnnotationStylePopup.js","webpack:///./src/ui/src/components/AnnotationStylePopup/index.js","webpack:///./src/ui/src/components/DatePicker/DatePicker.js","webpack:///./src/ui/src/components/DatePicker/index.js","webpack:///./src/ui/src/components/CustomizablePopup/CustomizablePopup.js","webpack:///./src/ui/src/components/CustomizablePopup/index.js","webpack:///./src/ui/src/helpers/applyRedactions.js","webpack:///./src/ui/src/components/AnnotationPopup/AnnotationPopup.js","webpack:///./src/ui/src/components/AnnotationPopup/index.js","webpack:///./src/ui/src/helpers/getAnnotationStyles.js","webpack:///./src/ui/src/components/TextPopup/TextPopup.js","webpack:///./src/ui/src/components/TextPopup/index.js","webpack:///./src/ui/src/components/ContextMenuPopup/ContextMenuPopup.js","webpack:///./src/ui/src/components/ContextMenuPopup/index.js","webpack:///./src/ui/src/helpers/getRichTextPopupPosition.js","webpack:///./src/ui/src/components/MathSymbolsPicker/MathSymbolsPicker.js","webpack:///./src/ui/src/components/MathSymbolsPicker/index.js","webpack:///./src/ui/src/components/RichTextPopup/RichTextPopup.js","webpack:///./src/ui/src/components/RichTextPopup/index.js","webpack:///./src/ui/src/components/SignatureModal/InkSignature/InkSignature.js","webpack:///./src/ui/src/components/SignatureModal/InkSignature/index.js","webpack:///./src/ui/src/helpers/cropImageFromCanvas.js","webpack:///./src/ui/src/components/SignatureModal/TextSignature/TextSignature.js","webpack:///./src/ui/src/components/SignatureModal/TextSignature/index.js","webpack:///./src/ui/src/components/SignatureModal/ImageSignature/ImageSignature.js","webpack:///./src/ui/src/components/SignatureModal/ImageSignature/index.js","webpack:///./src/ui/src/components/SignatureModal/SignatureModal.js","webpack:///./src/ui/src/components/SignatureModal/index.js","webpack:///./src/ui/src/components/PrintModal/WatermarkModal/web-fonts.js","webpack:///./src/ui/src/components/PrintModal/WatermarkModal/WatermarkModal.js","webpack:///./src/ui/src/components/PrintModal/WatermarkModal/index.js","webpack:///./src/ui/src/constants/layoutMode.js","webpack:///./src/ui/src/components/PrintModal/PrintModal.js","webpack:///./src/ui/src/components/PrintModal/index.js","webpack:///./src/ui/src/components/LoadingModal/LoadingModal.js","webpack:///./src/ui/src/components/LoadingModal/index.js","webpack:///./src/ui/src/components/ErrorModal/ErrorModal.js","webpack:///./src/ui/src/components/ErrorModal/index.js","webpack:///./src/ui/src/components/WarningModal/WarningModal.js","webpack:///./src/ui/src/components/WarningModal/index.js","webpack:///./src/ui/src/components/SignatureValidationModal/SignatureValidationModal.js","webpack:///./src/ui/src/components/SignatureValidationModal/index.js","webpack:///./src/ui/src/components/ProgressModal/ProgressModal.js","webpack:///./src/ui/src/components/ProgressModal/index.js","webpack:///./src/ui/src/helpers/evalFraction.js","webpack:///./src/ui/src/components/CalibrationModal/CalibrationModal.js","webpack:///./src/ui/src/components/CalibrationModal/index.js","webpack:///./src/ui/src/components/LinkModal/LinkModal.js","webpack:///./src/ui/src/components/LinkModal/index.js","webpack:///./src/ui/src/components/ContentEditModal/ContentEditModal.js","webpack:///./src/ui/src/components/ContentEditModal/index.js","webpack:///./src/ui/src/components/FilterAnnotModal/FilterAnnotModal.js","webpack:///./src/ui/src/components/FilterAnnotModal/index.js","webpack:///./src/ui/src/components/FilePickerHandler/index.js","webpack:///./src/ui/src/components/FilePickerHandler/FilePickerHandler.js","webpack:///./src/ui/src/components/CopyTextHandler/index.js","webpack:///./src/ui/src/components/CopyTextHandler/CopyTextHandler.js","webpack:///./src/ui/src/components/PrintHandler/PrintHandler.js","webpack:///./src/ui/src/components/PrintHandler/index.js","webpack:///./src/ui/src/components/FontHandler/index.js","webpack:///./src/ui/src/components/FontHandler/FontHandler.js","webpack:///./src/ui/src/components/OverlayItem/OverlayItem.js","webpack:///./src/ui/src/components/OverlayItem/index.js","webpack:///./src/ui/src/components/ZoomOverlay/ZoomOverlay.js","webpack:///./src/ui/src/components/ZoomOverlay/ZoomOverlayContainer.js","webpack:///./src/ui/src/components/ZoomOverlay/index.js","webpack:///./src/ui/src/components/CreateStampModal/CustomStampForums.js","webpack:///./src/ui/src/components/CreateStampModal/CreateStampModal.js","webpack:///./src/ui/src/components/CreateStampModal/index.js","webpack:///./src/ui/src/components/PageReplacementModal/FileListPanel/FileListPanel.js","webpack:///./src/ui/src/components/PageReplacementModal/FileListPanel/index.js","webpack:///./src/ui/src/components/PageReplacementModal/ThumbnailCard/index.js","webpack:///./src/ui/src/components/PageReplacementModal/ThumbnailCard/ThumbnailCard.js","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/PageNumberInput.js","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/index.js","webpack:///./src/ui/src/components/PageReplacementModal/FileSelectedPanel/FileSelectedPanel.js","webpack:///./src/ui/src/components/PageReplacementModal/FileSelectedPanel/FileSelectedPanelContainer.js","webpack:///./src/ui/src/components/PageReplacementModal/FileSelectedPanel/index.js","webpack:///./src/ui/src/components/PageReplacementModal/PageReplacementModal.js","webpack:///./src/ui/src/components/PageReplacementModal/PageReplacementModalContainer.js","webpack:///./src/ui/src/components/PageReplacementModal/PageReplacementModalRedux.js","webpack:///./src/ui/src/components/PageReplacementModal/index.js","webpack:///./src/ui/src/components/CustomModal/CustomModal.js","webpack:///./src/ui/src/components/CustomModal/index.js","webpack:///./src/ui/src/components/Model3DModal/Model3DModal.js","webpack:///./src/ui/src/components/Model3DModal/Model3DModalContainer.js","webpack:///./src/ui/src/components/Model3DModal/Model3DModalRedux.js","webpack:///./src/ui/src/components/Model3DModal/index.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Input/Input.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./src/ui/node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/core/dist/emotion-element-04d85134.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/css/dist/css.browser.esm.js","webpack:///./src/ui/node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./src/ui/node_modules/react-select/dist/index-75b02bac.browser.esm.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./src/ui/node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./src/ui/node_modules/react-select/dist/Select-e1cf49ae.browser.esm.js","webpack:///./src/ui/node_modules/react-select/dist/stateManager-2f2b6f5b.browser.esm.js","webpack:///./src/ui/node_modules/react-select/creatable/dist/react-select.browser.esm.js","webpack:///./src/ui/src/components/CreatableDropdown/CreatableDropdown.js","webpack:///./src/ui/src/components/CreatableDropdown/index.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useIsomorphicLayoutEffect.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrop/DropTargetImpl.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrop/useRegisteredDropTarget.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrop/useDropTarget.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrop/useAccept.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useOptionalFactory.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useCollector.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useMonitorOutput.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useCollectedProps.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrop/connectors.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrop/useDrop.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrop/useDropTargetMonitor.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrop/useDropTargetConnector.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrag/DragSourceImpl.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrag/useRegisteredDragSource.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrag/useDragSource.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrag/useDragType.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrag/connectors.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrag/useDrag.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrag/useDragSourceMonitor.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/hooks/useDrag/useDragSourceConnector.js","webpack:///./src/ui/src/components/CreatableList/CreatableListItem.js","webpack:///./src/ui/src/components/CreatableList/CreatableListContainer.js","webpack:///./src/ui/src/components/CreatableList/index.js","webpack:///./src/ui/src/components/FormFieldEditPopup/FormFieldEditPopup.js","webpack:///./src/ui/src/hooks/useOnFormFieldAnnotationAddedOrSelected/index.js","webpack:///./src/ui/src/hooks/useOnFormFieldAnnotationAddedOrSelected/useOnFormFieldAnnotationAddedOrSelected.js","webpack:///./src/ui/src/components/FormFieldEditPopup/FormFieldEditPopupContainer.js","webpack:///./src/ui/src/components/FormFieldEditPopup/index.js","webpack:///./src/ui/node_modules/react-color/es/helpers/alpha.js","webpack:///./src/ui/node_modules/react-color/es/helpers/checkboard.js","webpack:///./src/ui/node_modules/react-color/es/components/common/Checkboard.js","webpack:///./src/ui/node_modules/react-color/es/components/common/Alpha.js","webpack:///./src/ui/node_modules/react-color/es/components/common/EditableInput.js","webpack:///./src/ui/node_modules/react-color/es/helpers/hue.js","webpack:///./src/ui/node_modules/react-color/es/components/common/Hue.js","webpack:///./src/ui/node_modules/lodash-es/_listCacheClear.js","webpack:///./src/ui/node_modules/lodash-es/eq.js","webpack:///./src/ui/node_modules/lodash-es/_assocIndexOf.js","webpack:///./src/ui/node_modules/lodash-es/_listCacheDelete.js","webpack:///./src/ui/node_modules/lodash-es/_listCacheGet.js","webpack:///./src/ui/node_modules/lodash-es/_listCacheHas.js","webpack:///./src/ui/node_modules/lodash-es/_listCacheSet.js","webpack:///./src/ui/node_modules/lodash-es/_Stack.js","webpack:///./src/ui/node_modules/lodash-es/_getNative.js","webpack:///./src/ui/node_modules/lodash-es/_defineProperty.js","webpack:///./src/ui/node_modules/lodash-es/_baseAssignValue.js","webpack:///./src/ui/node_modules/lodash-es/_assignMergeValue.js","webpack:///./src/ui/node_modules/lodash-es/_createBaseFor.js","webpack:///./src/ui/node_modules/lodash-es/_baseFor.js","webpack:///./src/ui/node_modules/lodash-es/_Uint8Array.js","webpack:///./src/ui/node_modules/lodash-es/_cloneArrayBuffer.js","webpack:///./src/ui/node_modules/lodash-es/_cloneTypedArray.js","webpack:///./src/ui/node_modules/lodash-es/_copyArray.js","webpack:///./src/ui/node_modules/lodash-es/isObject.js","webpack:///./src/ui/node_modules/lodash-es/_baseCreate.js","webpack:///./src/ui/node_modules/lodash-es/_overArg.js","webpack:///./src/ui/node_modules/lodash-es/_getPrototype.js","webpack:///./src/ui/node_modules/lodash-es/_isPrototype.js","webpack:///./src/ui/node_modules/lodash-es/_initCloneObject.js","webpack:///./src/ui/node_modules/lodash-es/isArguments.js","webpack:///./src/ui/node_modules/lodash-es/isArray.js","webpack:///./src/ui/node_modules/lodash-es/_baseGetTag.js","webpack:///./src/ui/node_modules/lodash-es/isFunction.js","webpack:///./src/ui/node_modules/lodash-es/isLength.js","webpack:///./src/ui/node_modules/lodash-es/isArrayLike.js","webpack:///./src/ui/node_modules/lodash-es/isObjectLike.js","webpack:///./src/ui/node_modules/lodash-es/isArrayLikeObject.js","webpack:///./src/ui/node_modules/lodash-es/isBuffer.js","webpack:///./src/ui/node_modules/lodash-es/isPlainObject.js","webpack:///./src/ui/node_modules/lodash-es/isTypedArray.js","webpack:///./src/ui/node_modules/lodash-es/_safeGet.js","webpack:///./src/ui/node_modules/lodash-es/_assignValue.js","webpack:///./src/ui/node_modules/lodash-es/_copyObject.js","webpack:///./src/ui/node_modules/lodash-es/keysIn.js","webpack:///./src/ui/node_modules/lodash-es/toPlainObject.js","webpack:///./src/ui/node_modules/lodash-es/_baseMergeDeep.js","webpack:///./src/ui/node_modules/lodash-es/_baseMerge.js","webpack:///./src/ui/node_modules/lodash-es/identity.js","webpack:///./src/ui/node_modules/lodash-es/_apply.js","webpack:///./src/ui/node_modules/lodash-es/_overRest.js","webpack:///./src/ui/node_modules/lodash-es/_setToString.js","webpack:///./src/ui/node_modules/lodash-es/_baseRest.js","webpack:///./src/ui/node_modules/lodash-es/_isIterateeCall.js","webpack:///./src/ui/node_modules/lodash-es/_createAssigner.js","webpack:///./src/ui/node_modules/lodash-es/merge.js","webpack:///./src/ui/node_modules/react-color/es/components/common/Raised.js","webpack:///./src/ui/node_modules/lodash-es/now.js","webpack:///./src/ui/node_modules/lodash-es/toNumber.js","webpack:///./src/ui/node_modules/lodash-es/debounce.js","webpack:///./src/ui/node_modules/lodash-es/throttle.js","webpack:///./src/ui/node_modules/react-color/es/components/common/Saturation.js","webpack:///./src/ui/node_modules/react-color/es/helpers/saturation.js","webpack:///./src/ui/node_modules/lodash-es/each.js","webpack:///./src/ui/node_modules/react-color/es/helpers/color.js","webpack:///./src/ui/node_modules/react-color/es/components/common/ColorWrap.js","webpack:///./src/ui/node_modules/react-color/es/helpers/interaction.js","webpack:///./src/ui/node_modules/react-color/es/components/common/Swatch.js","webpack:///./src/ui/node_modules/react-color/es/components/alpha/AlphaPointer.js","webpack:///./src/ui/node_modules/react-color/es/components/alpha/Alpha.js","webpack:///./src/ui/node_modules/lodash-es/map.js","webpack:///./src/ui/node_modules/react-color/es/components/block/BlockSwatches.js","webpack:///./src/ui/node_modules/react-color/es/components/block/Block.js","webpack:///./src/ui/node_modules/material-colors/dist/colors.es2015.js","webpack:///./src/ui/node_modules/react-color/es/components/circle/CircleSwatch.js","webpack:///./src/ui/node_modules/react-color/es/components/circle/Circle.js","webpack:///./src/ui/node_modules/lodash-es/isUndefined.js","webpack:///./src/ui/node_modules/react-color/es/components/chrome/ChromeFields.js","webpack:///./src/ui/node_modules/react-color/es/components/chrome/ChromePointer.js","webpack:///./src/ui/node_modules/react-color/es/components/chrome/ChromePointerCircle.js","webpack:///./src/ui/node_modules/react-color/es/components/chrome/Chrome.js","webpack:///./src/ui/node_modules/react-color/es/components/compact/CompactColor.js","webpack:///./src/ui/node_modules/react-color/es/components/compact/CompactFields.js","webpack:///./src/ui/node_modules/react-color/es/components/compact/Compact.js","webpack:///./src/ui/node_modules/react-color/es/components/github/GithubSwatch.js","webpack:///./src/ui/node_modules/react-color/es/components/github/Github.js","webpack:///./src/ui/node_modules/react-color/es/components/hue/HuePointer.js","webpack:///./src/ui/node_modules/react-color/es/components/hue/Hue.js","webpack:///./src/ui/node_modules/react-color/es/components/material/Material.js","webpack:///./src/ui/node_modules/react-color/es/components/photoshop/PhotoshopFields.js","webpack:///./src/ui/node_modules/react-color/es/components/photoshop/PhotoshopPointerCircle.js","webpack:///./src/ui/node_modules/react-color/es/components/photoshop/PhotoshopPointer.js","webpack:///./src/ui/node_modules/react-color/es/components/photoshop/PhotoshopButton.js","webpack:///./src/ui/node_modules/react-color/es/components/photoshop/PhotoshopPreviews.js","webpack:///./src/ui/node_modules/react-color/es/components/photoshop/Photoshop.js","webpack:///./src/ui/node_modules/react-color/es/components/sketch/SketchFields.js","webpack:///./src/ui/node_modules/react-color/es/components/sketch/SketchPresetColors.js","webpack:///./src/ui/node_modules/react-color/es/components/sketch/Sketch.js","webpack:///./src/ui/node_modules/react-color/es/components/slider/SliderSwatch.js","webpack:///./src/ui/node_modules/react-color/es/components/slider/SliderSwatches.js","webpack:///./src/ui/node_modules/react-color/es/components/slider/SliderPointer.js","webpack:///./src/ui/node_modules/react-color/es/components/slider/Slider.js","webpack:///./src/ui/node_modules/react-color/es/components/swatches/SwatchesColor.js","webpack:///./src/ui/node_modules/react-color/es/components/swatches/SwatchesGroup.js","webpack:///./src/ui/node_modules/react-color/es/components/swatches/Swatches.js","webpack:///./src/ui/node_modules/react-color/es/components/twitter/Twitter.js","webpack:///./src/ui/node_modules/react-color/es/components/google/GooglePointerCircle.js","webpack:///./src/ui/node_modules/react-color/es/components/google/GooglePointer.js","webpack:///./src/ui/node_modules/react-color/es/components/google/GoogleFields.js","webpack:///./src/ui/node_modules/react-color/es/components/google/Google.js","webpack:///./src/ui/src/components/ColorPickerModal/ColorPickerModal.js","webpack:///./src/ui/src/components/ColorPickerModal/ColorPickerModalContainer.js","webpack:///./src/ui/src/components/ColorPickerModal/ColorPickerModalRedux.js","webpack:///./src/ui/src/components/ColorPickerModal/index.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageInsertionControls/PageInsertionControls.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageInsertionControls/PageInsertionControlsContainer.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageInsertionControls/index.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageRotationControls/PageRotationControls.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageRotationControls/PageRotationControlsContainer.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageRotationControls/index.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageManipulationControls/PageManipulationControls.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageManipulationControls/PageManipulationControlsContainer.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageManipulationControls/index.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageAdditionalControls/PageAdditionalControls.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageAdditionalControls/PageAdditionalControlsContainer.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageAdditionalControls/index.js","webpack:///./src/ui/src/components/PageManipulationOverlay/CustomPageManipulationOperations/CustomPageManipulationOperations.js","webpack:///./src/ui/src/components/PageManipulationOverlay/CustomPageManipulationOperations/index.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageManipulationOverlay.js","webpack:///./src/ui/src/components/PageManipulationOverlay/PageManipulationOverlayContainer.js","webpack:///./src/ui/src/components/PageManipulationOverlay/index.js","webpack:///./src/ui/src/components/PageRedactionModal/PageRedactionModal.js","webpack:///./src/ui/src/components/PageRedactionModal/PageRedactionModalContainer.js","webpack:///./src/ui/src/components/PageRedactionModal/index.js","webpack:///./src/ui/node_modules/@virtuoso.dev/urx/dist/urx.esm.js","webpack:///./src/ui/node_modules/@virtuoso.dev/react-urx/dist/react-urx.esm.js","webpack:///./src/ui/node_modules/react-virtuoso/dist/index.m.js","webpack:///./src/ui/src/components/RedactionPanel/RedactionPanelContext.js","webpack:///./src/ui/src/components/RedactionTextPreview/RedactionTextPreviewContainer.js","webpack:///./src/ui/src/components/RedactionTextPreview/index.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionItem/RedactionItem.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionItem/RedactionItemContainer.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionItem/index.js","webpack:///./src/ui/src/components/CollapsiblePanelGroup/CollapsiblePanelGroup.js","webpack:///./src/ui/src/components/CollapsiblePanelGroup/index.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionPageGroup.js","webpack:///./src/ui/src/components/RedactionPageGroup/RedactionPageGroupContainer.js","webpack:///./src/ui/src/components/RedactionPageGroup/index.js","webpack:///./src/ui/src/components/RedactionPanel/RedactionPanel.js","webpack:///./src/ui/src/hooks/useOnRedactionAnnotationChanged/index.js","webpack:///./src/ui/src/hooks/useOnRedactionAnnotationChanged/useOnRedactionAnnotationChanged.js","webpack:///./src/ui/src/components/CreatableMultiSelect/CreatableMultiSelect.js","webpack:///./src/ui/src/components/CreatableMultiSelect/index.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchMultiSelect/RedactionSearchMultiSelect.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchMultiSelect/index.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchOverlay.js","webpack:///./src/ui/src/helpers/multiSearch.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/RedactionSearchOverlayContainer.js","webpack:///./src/ui/src/components/RedactionSearchOverlay/index.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResult/RedactionSearchResult.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResult/index.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResult/RedactionSearchResultContainer.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/RedactionSearchResultGroup.js","webpack:///./src/ui/src/components/RedactionSearchResultGroup/index.js","webpack:///./src/ui/src/constants/searchStatus.js","webpack:///./src/ui/src/components/RedactionSearchResults/RedactionSearchResults.js","webpack:///./src/ui/src/components/RedactionSearchResults/RedactionSearchResultsContainer.js","webpack:///./src/ui/src/components/RedactionSearchResults/index.js","webpack:///./src/ui/src/components/RedactionSearchPanel/RedactionSearchPanel.js","webpack:///./src/ui/src/hooks/useOnRedactionSearchCompleted/useOnRedactionSearchCompleted.js","webpack:///./src/ui/src/hooks/useOnRedactionSearchCompleted/index.js","webpack:///./src/ui/src/components/RedactionSearchPanel/index.js","webpack:///./src/ui/src/components/RedactionSearchPanel/RedactionSearchPanelContainer.js","webpack:///./src/ui/src/components/RedactionPanel/RedactionPanelContainer.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/rng.js","webpack:///./src/ui/src/components/RedactionPanel/index.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/regex.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/validate.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/v4.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertyKeyValuePair/PropertyKeyValuePair.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/GeneralValuesSection/GeneralValuesSection.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Group/Group.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/GroupsContainer/GroupsContainer.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/HeaderTitle/HeaderTitle.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertiesElement/PropertiesElement.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanel.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanelContainer.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/index.js","webpack:///./src/ui/src/hooks/useOnClickPrepareSoundAnnotation/index.js","webpack:///./src/ui/src/hooks/useOnClickPrepareSoundAnnotation/useOnClickPrepareSoundAnnotation.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopup.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopupContainer.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/index.js","webpack:///./src/ui/src/components/Selector/Selector.js","webpack:///./src/ui/src/components/Selector/index.js","webpack:///./src/ui/src/components/DocumentCropPopup/DimensionsInput.js","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopup.js","webpack:///./src/ui/src/hooks/useOnCropAnnotationChangedOrSelected/index.js","webpack:///./src/ui/src/hooks/useOnCropAnnotationChangedOrSelected/useOnCropAnnotationChangedOrSelected.js","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopupContainer.js","webpack:///./src/ui/src/components/DocumentCropPopup/index.js","webpack:///./src/ui/src/components/LeftPanelOverlay/RotatePopup.js","webpack:///./src/ui/src/components/LeftPanelOverlay/InsertPopup.js","webpack:///./src/ui/src/components/LeftPanelOverlay/MoreOptionsPopup.js","webpack:///./src/ui/src/components/LeftPanelOverlay/LeftPanelOverlayContainer.js","webpack:///./src/ui/src/components/LeftPanelOverlay/index.js","webpack:///./src/ui/src/constants/languageRules.js","webpack:///./src/ui/src/apis/setLanguage.js","webpack:///./src/ui/src/apis/getAvailableLanguages.js","webpack:///./src/ui/src/components/LanguageModal/LanguageModal.js","webpack:///./src/ui/src/components/LanguageModal/index.js","webpack:///./src/ui/src/constants/overlays.js","webpack:///./src/ui/src/components/App/App.js","webpack:///./src/ui/src/components/App/index.js","webpack:///./src/ui/src/helpers/getBackendPromise.js","webpack:///./src/ui/src/helpers/wildCardMatch.js","webpack:///./src/ui/src/helpers/loadScript.js","webpack:///./src/ui/src/helpers/getDefaultPageLabels.js","webpack:///./src/ui/src/event-listeners/onCheckStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onCrossStampAnnotationAdded.js","webpack:///./src/ui/src/helpers/isDataElementPanel.js","webpack:///./src/ui/src/helpers/setUIPropertiesForLayers.js","webpack:///./src/ui/src/event-listeners/onLayersUpdated.js","webpack:///./src/ui/src/event-listeners/onDocumentLoaded.js","webpack:///./src/ui/src/event-listeners/onDocumentUnloaded.js","webpack:///./src/ui/src/event-listeners/onToolUpdated.js","webpack:///./src/ui/src/event-listeners/onToolModeUpdated.js","webpack:///./src/ui/src/event-listeners/onAnnotationChanged.js","webpack:///./src/ui/src/event-listeners/onLocationSelected.js","webpack:///./src/ui/src/event-listeners/onDotStampAnnotationAdded.js","webpack:///./src/ui/src/apis/disableElements.js","webpack:///./src/ui/src/apis/enableElements.js","webpack:///./src/ui/src/helpers/getSignatureDataToStore.js","webpack:///./src/ui/src/event-listeners/onDigitalSignatureAvailable.js","webpack:///./src/ui/src/helpers/eventHandler.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/index.js","webpack:///./src/ui/src/helpers/setupI18n.js","webpack:///./src/ui/src/helpers/setupDocViewer.js","webpack:///./src/ui/src/constants/defaultToolStylesMap.js","webpack:///./src/ui/src/helpers/setDefaultToolStyles.js","webpack:///./src/ui/src/components/ToggleZoomOverlay/ToggleZoomOverlay.js","webpack:///./src/ui/src/components/ToggleZoomOverlay/index.js","webpack:///./src/ui/src/components/Ribbons/Ribbons.js","webpack:///./src/ui/src/components/Ribbons/index.js","webpack:///./src/ui/src/components/ApplyFormFieldButton/index.js","webpack:///./src/ui/src/components/ApplyFormFieldButton/ApplyFormFieldButton.js","webpack:///./src/ui/src/helpers/commonToolbarElements.js","webpack:///./src/ui/src/helpers/isContentEditWarningHidden.js","webpack:///./src/ui/src/redux/initialState.js","webpack:///./src/ui/src/constants/defaultFonts.js","webpack:///./src/ui/src/constants/presetCropDimensions.js","webpack:///./src/ui/src/constants/defaultDateTimeFormats.js","webpack:///./src/ui/src/redux/reducers/wv3dPropertiesPanelReducer.js","webpack:///./src/ui/node_modules/redux-persist/es/constants.js","webpack:///./src/ui/node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js","webpack:///./src/ui/node_modules/redux-persist/es/createPersistoid.js","webpack:///./src/ui/node_modules/redux-persist/es/getStoredState.js","webpack:///./src/ui/node_modules/redux-persist/es/purgeStoredState.js","webpack:///./src/ui/node_modules/redux-persist/es/persistReducer.js","webpack:///./src/ui/node_modules/redux-persist/es/persistStore.js","webpack:///./src/ui/src/redux/reducers/viewerReducer.js","webpack:///./src/ui/src/redux/reducers/rootReducer.js","webpack:///./src/ui/src/redux/reducers/searchReducer.js","webpack:///./src/ui/src/redux/reducers/userReducer.js","webpack:///./src/ui/src/redux/reducers/documentReducer.js","webpack:///./src/ui/node_modules/redux-persist/es/integration/react.js","webpack:///./src/ui/src/constants/fitMode.js","webpack:///./src/ui/src/constants/toolbar.js","webpack:///./src/ui/src/constants/redactionSearchPatterns.js","webpack:///./src/ui/src/apis/addSearchListener.js","webpack:///./src/ui/src/apis/addSortStrategy.js","webpack:///./src/ui/src/helpers/createPopupAPI.js","webpack:///./src/ui/src/apis/annotationPopup.js","webpack:///./src/ui/src/helpers/castStringToArray.js","webpack:///./src/ui/src/apis/closeElements.js","webpack:///./src/ui/src/apis/contextMenuPopup.js","webpack:///./src/ui/src/apis/disableAnnotations.js","webpack:///./src/ui/src/apis/disableDownload.js","webpack:///./src/ui/src/apis/disableElement.js","webpack:///./src/ui/src/apis/disableFilePicker.js","webpack:///./src/ui/src/apis/disableHighContrastMode.js","webpack:///./src/ui/src/apis/disableLocalStorage.js","webpack:///./src/ui/src/apis/disableMeasurement.js","webpack:///./src/ui/src/apis/disableNativeScrolling.js","webpack:///./src/ui/src/apis/disableNotesPanel.js","webpack:///./src/ui/src/apis/disableNoteSubmissionWithEnter.js","webpack:///./src/ui/src/apis/disablePrint.js","webpack:///./src/ui/src/apis/disableRedaction.js","webpack:///./src/ui/src/apis/disableTextSelection.js","webpack:///./src/ui/src/apis/disableTool.js","webpack:///./src/ui/src/apis/disableTouchScrollLock.js","webpack:///./src/ui/src/apis/displayErrorMessage.js","webpack:///./src/ui/src/apis/downloadPdf.js","webpack:///./src/ui/src/apis/enableAllElements.js","webpack:///./src/ui/src/apis/enableAnnotations.js","webpack:///./src/ui/src/apis/enableDownload.js","webpack:///./src/ui/src/apis/enableElement.js","webpack:///./src/ui/src/apis/enableHighContrastMode.js","webpack:///./src/ui/src/apis/enableFilePicker.js","webpack:///./src/ui/src/apis/enableLocalStorage.js","webpack:///./src/ui/src/apis/enableMeasurement.js","webpack:///./src/ui/src/apis/enableNativeScrolling.js","webpack:///./src/ui/src/apis/enableNotesPanel.js","webpack:///./src/ui/src/apis/enablePrint.js","webpack:///./src/ui/src/apis/enableRedaction.js","webpack:///./src/ui/src/apis/enableTextSelection.js","webpack:///./src/ui/src/apis/enableTool.js","webpack:///./src/ui/src/apis/enableTouchScrollLock.js","webpack:///./src/ui/src/apis/extractPagesWithAnnotations.js","webpack:///./src/ui/src/apis/focusNote.js","webpack:///./src/ui/src/apis/getAnnotationUser.js","webpack:///./src/ui/src/apis/getBBAnnotManager.js","webpack:///./src/ui/src/apis/getCurrentPageNumber.js","webpack:///./src/ui/src/apis/getFitMode.js","webpack:///./src/ui/src/apis/getLayoutMode.js","webpack:///./src/ui/src/apis/getPageCount.js","webpack:///./src/ui/src/apis/getSelectedThumbnailPageNumbers.js","webpack:///./src/ui/src/apis/getSelectors.js","webpack:///./src/ui/src/apis/getSideWindowVisibility.js","webpack:///./src/ui/src/apis/getShowSideWindow.js","webpack:///./src/ui/src/apis/getToolMode.js","webpack:///./src/ui/src/apis/getZoomLevel.js","webpack:///./src/ui/src/apis/getMaxZoomLevel.js","webpack:///./src/ui/src/apis/getMinZoomLevel.js","webpack:///./src/ui/src/apis/getIsHighContrastMode.js","webpack:///./src/ui/src/apis/goToFirstPage.js","webpack:///./src/ui/src/apis/goToLastPage.js","webpack:///./src/ui/src/apis/goToNextPage.js","webpack:///./src/ui/src/apis/goToPrevPage.js","webpack:///./src/ui/src/apis/hideOutlineControl.js","webpack:///./src/ui/src/apis/isAdminUser.js","webpack:///./src/ui/src/apis/isElementDisabled.js","webpack:///./src/ui/src/apis/isElementOpen.js","webpack:///./src/ui/src/apis/isHighContrastModeEnabled.js","webpack:///./src/ui/src/apis/isMobileDevice.js","webpack:///./src/ui/src/apis/isReadOnly.js","webpack:///./src/ui/src/apis/isToolDisabled.js","webpack:///./src/ui/src/apis/isFullscreen.js","webpack:///./src/ui/src/apis/loadDocument.js","webpack:///./src/ui/src/apis/mentions.js","webpack:///./src/ui/src/apis/menuOverlay.js","webpack:///./src/ui/src/apis/openElement.js","webpack:///./src/ui/src/apis/openElements.js","webpack:///./src/ui/src/apis/print.js","webpack:///./src/ui/src/apis/printInBackground.js","webpack:///./src/ui/src/apis/cancelPrint.js","webpack:///./src/ui/src/apis/registerTool.js","webpack:///./src/ui/src/apis/removeSearchListener.js","webpack:///./src/ui/src/apis/rotateClockwise.js","webpack:///./src/ui/src/apis/rotateCounterClockwise.js","webpack:///./src/ui/src/apis/saveAnnotations.js","webpack:///./src/ui/src/apis/searchText.js","webpack:///./src/ui/src/apis/setWv3dPropertiesPanelModelData.js","webpack:///./src/ui/src/apis/setWv3dPropertiesPanelSchema.js","webpack:///./src/ui/src/apis/setActiveHeaderGroup.js","webpack:///./src/ui/src/apis/setActiveLeftPanel.js","webpack:///./src/ui/src/apis/setAdminUser.js","webpack:///./src/ui/src/apis/setAnnotationUser.js","webpack:///./src/ui/src/constants/mapPaletteToAnnotationColorProperty.js","webpack:///./src/ui/src/constants/mapAnnotationColorPropertyToPalette.js","webpack:///./src/ui/src/apis/setActivePalette.js","webpack:///./src/ui/src/apis/setColorPalette.js","webpack:///./src/ui/src/apis/setPageReplacementModalFileList.js","webpack:///./src/ui/src/apis/setHighContrastMode.js","webpack:///./src/ui/src/apis/setCurrentPageNumber.js","webpack:///./src/ui/src/apis/addCustomModal.js","webpack:///./src/ui/src/apis/setCustomNoteFilter.js","webpack:///./src/ui/src/apis/setCustomPanel.js","webpack:///./src/ui/src/apis/exportBookmarks.js","webpack:///./src/ui/src/apis/importBookmarks.js","webpack:///./src/ui/src/apis/setFitMode.js","webpack:///./src/ui/src/apis/setHeaderItems.js","webpack:///./src/ui/src/apis/setIconColor.js","webpack:///./src/ui/src/apis/setTranslations.js","webpack:///./src/ui/src/apis/setLayoutMode.js","webpack:///./src/ui/src/apis/setMaxZoomLevel.js","webpack:///./src/ui/src/apis/setMinZoomLevel.js","webpack:///./src/ui/src/apis/setNoteDateFormat.js","webpack:///./src/ui/src/apis/setPrintedNoteDateFormat.js","webpack:///./src/ui/src/apis/setNotesPanelSort.js","webpack:///./src/ui/src/apis/setPageLabels.js","webpack:///./src/ui/src/apis/setPrintQuality.js","webpack:///./src/ui/src/apis/setDefaultPrintOptions.js","webpack:///./src/ui/src/apis/setSelectedTab.js","webpack:///./src/ui/src/apis/setSideWindowVisibility.js","webpack:///./src/ui/src/apis/setSortNotesBy.js","webpack:///./src/ui/src/apis/setNotesPanelSortStrategy.js","webpack:///./src/ui/src/apis/setSwipeOrientation.js","webpack:///./src/ui/src/helpers/cssVariablesParser.js","webpack:///./src/ui/node_modules/css-vars-ponyfill/dist/css-vars-ponyfill.esm.js","webpack:///./src/ui/src/apis/setTheme.js","webpack:///./src/ui/src/constants/highContrastLight.scss","webpack:///./src/ui/src/constants/light.scss","webpack:///./src/ui/src/constants/highContrastDark.scss","webpack:///./src/ui/src/constants/dark.scss","webpack:///./src/ui/src/apis/setToolbarGroup.js","webpack:///./src/ui/src/apis/createToolbarGroup.js","webpack:///./src/ui/src/apis/setZoomLevel.js","webpack:///./src/ui/src/apis/setZoomList.js","webpack:///./src/ui/src/apis/showErrorMessage.js","webpack:///./src/ui/src/apis/showOutlineControl.js","webpack:///./src/ui/src/apis/showWarningMessage.js","webpack:///./src/ui/src/apis/syncNamespaces.js","webpack:///./src/ui/src/apis/textPopup.js","webpack:///./src/ui/src/apis/toggleElement.js","webpack:///./src/ui/src/apis/toggleFullScreen.js","webpack:///./src/ui/src/apis/unregisterTool.js","webpack:///./src/ui/src/apis/updateElement.js","webpack:///./src/ui/src/apis/updateOutlines.js","webpack:///./src/ui/src/apis/updateTool.js","webpack:///./src/ui/src/apis/useEmbeddedPrint.js","webpack:///./src/ui/src/apis/useNativeScroll.js","webpack:///./src/ui/src/apis/setDisplayedSignaturesFilterFunction.js","webpack:///./src/ui/src/apis/setMeasurementUnits.js","webpack:///./src/ui/src/apis/setMaxSignaturesCount.js","webpack:///./src/ui/src/apis/setSignatureFonts.js","webpack:///./src/ui/src/apis/disableReplyForAnnotations.js","webpack:///./src/ui/src/apis/getCustomData.js","webpack:///./src/ui/src/apis/setCustomMeasurementOverlayInfo.js","webpack:///./src/ui/src/apis/setNoteTransformFunction.js","webpack:///./src/ui/src/apis/setCustomNoteSelectionFunction.js","webpack:///./src/ui/src/apis/setCustomApplyRedactionsHandler.js","webpack:///./src/ui/src/apis/selectThumbnailPages.js","webpack:///./src/ui/src/apis/unselectThumbnailPages.js","webpack:///./src/ui/src/apis/setSearchResults.js","webpack:///./src/ui/src/apis/setActiveResult.js","webpack:///./src/ui/src/apis/setAnnotationContentOverlayHandler.js","webpack:///./src/ui/src/apis/overrideSearchExecution.js","webpack:///./src/ui/src/apis/reactElements.js","webpack:///./src/ui/src/apis/verificationOptions.js","webpack:///./src/ui/src/apis/notesPanel.js","webpack:///./src/ui/src/apis/thumbnailsPanel.js","webpack:///./src/ui/src/apis/toggleReaderMode.js","webpack:///./src/ui/src/apis/toggleElementVisibility.js","webpack:///./src/ui/src/apis/setAnnotationReadState.js","webpack:///./src/ui/src/apis/getAnnotationReadState.js","webpack:///./src/ui/src/apis/enableClearSearchOnPanelClose.js","webpack:///./src/ui/src/apis/disableClearSearchOnPanelClose.js","webpack:///./src/ui/src/apis/disableFadePageNavigationComponent.js","webpack:///./src/ui/src/apis/enableFadePageNavigationComponent.js","webpack:///./src/ui/src/apis/disablePageDeletionConfirmationModal.js","webpack:///./src/ui/src/apis/enablePageDeletionConfirmationModal.js","webpack:///./src/ui/src/apis/addEventListener.js","webpack:///./src/ui/src/apis/removeEventListener.js","webpack:///./src/ui/src/apis/enableDesktopOnlyMode.js","webpack:///./src/ui/src/apis/disableDesktopOnlyMode.js","webpack:///./src/ui/src/apis/isInDesktopOnlyMode.js","webpack:///./src/ui/src/apis/pageManipulationOverlay.js","webpack:///./src/ui/src/apis/thumbnailControlMenu.js","webpack:///./src/ui/src/apis/getWatermarkModalOptions.js","webpack:///./src/ui/src/apis/enableNoteSubmissionWithEnter.js","webpack:///./src/ui/src/apis/willUseEmbeddedPrinting.js","webpack:///./src/ui/src/apis/reloadOutline.js","webpack:///./src/ui/src/apis/fonts.js","webpack:///./src/ui/src/apis/TabManagerAPI.js","webpack:///./src/ui/src/apis/replaceRedactionSearchPattern.js","webpack:///./src/ui/src/apis/setPresetCropDimensions.js","webpack:///./src/ui/src/apis/addDateTimeFormat.js","webpack:///./src/ui/src/apis/addRedactionSearchPattern.js","webpack:///./src/ui/src/apis/removeRedactionSearchPattern.js","webpack:///./src/ui/src/apis/getZoomStepFactors.js","webpack:///./src/ui/src/apis/setZoomStepFactors.js","webpack:///./src/ui/src/apis/index.js","webpack:///./src/ui/src/helpers/setUserPermission.js","webpack:///./src/ui/src/index.js","webpack:///./src/ui/src/helpers/loadCustomCSS.js","webpack:///./src/ui/src/helpers/logDebugInfo.js","webpack:///./src/ui/src/apis/closeDocument.js","webpack:///./src/ui/src/helpers/setAutoSwitch.js","webpack:///./src/ui/src/event-listeners/onBeforeDocumentLoaded.js","webpack:///./src/ui/src/event-listeners/onDisplayModeUpdated.js","webpack:///./src/ui/src/event-listeners/onFitModeUpdated.js","webpack:///./src/ui/src/event-listeners/onRotationUpdated.js","webpack:///./src/ui/src/event-listeners/onZoomUpdated.js","webpack:///./src/ui/src/event-listeners/onPageNumberUpdated.js","webpack:///./src/ui/src/event-listeners/onUpdateAnnotationPermission.js","webpack:///./src/ui/src/event-listeners/onStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onSignatureAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onStickyAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onFullScreenChange.js","webpack:///./src/ui/src/event-listeners/onPagesUpdated.js","webpack:///./src/ui/src/event-listeners/onRubberStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onReadOnlyModeChanged.js","webpack:///./src/ui/src/event-listeners/onPageComplete.js","webpack:///./src/ui/src/event-listeners/onFileAttachmentAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onFileAttachmentDataAvailable.js","webpack:///./src/ui/src/event-listeners/onSignatureSaved.js","webpack:///./src/ui/src/event-listeners/onSignatureDeleted.js","webpack:///./src/ui/src/event-listeners/onHistoryChanged.js","webpack:///./src/ui/src/event-listeners/onFormFieldCreationModeStarted.js","webpack:///./src/ui/src/event-listeners/onFormFieldCreationModeEnded.js","webpack:///./src/ui/src/helpers/setupLoadAnnotationsFromServer.js","webpack:///./src/ui/src/helpers/setDefaultDisabledElements.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/types.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/js_utils.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/matchesType.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/classes/DragDropManagerImpl.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/index.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/equality.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/dragOffset.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/registry.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/dragOperation.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/refCount.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/dirtiness.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/stateId.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/index.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/coords.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/classes/DragDropMonitorImpl.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/interfaces.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/contracts.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/classes/HandlerRegistryImpl.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/createDragDropManager.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/core/DndProvider.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","0","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","hasOwn","classNames","classes","arguments","arg","argType","Array","isArray","inner","apply","toString","join","default","obj","configurable","writable","global","getOwnPropertyDescriptor","f","createNonEnumerableProperty","defineBuiltIn","setGlobal","copyConstructorProperties","isForced","options","source","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","sham","self","ReferenceError","it","Math","check","globalThis","this","Function","ReactCSS","loop","handleActive","handleHover","hover","_flattenNames2","_interopRequireDefault","_mergeClasses2","_autoprefix2","_hover3","_active2","_loop3","_len","activations","_key","activeNames","merged","invariant","condition","format","args","argIndex","replace","framesToPop","exec","NATIVE_BIND","FunctionPrototype","uncurryThis","fn","instance","Constructor","TypeError","_defineProperties","props","protoProps","staticProps","fails","isObject","String","argument","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_typeof","assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","constructor","isCallable","shared","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","NAME","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","classof","tryToString","isPrototypeOf","wellKnownSymbol","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","toObject","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","O","P","Attributes","current","requireObjectCoercible","_defineProperty","u","a","h","$","y","M","weekdays","split","months","g","z","utcOffset","abs","floor","date","year","month","clone","add","ceil","w","D","ms","Q","toLowerCase","v","_","S","locale","$L","utc","$u","x","$x","$offset","parse","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","$locale","weekStart","$set","min","daysInMonth","Number","round","subtract","invalidDate","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","A","mm","ss","SSS","Z","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","T","forEach","extend","$i","isDayjs","en","Ls","makeBuiltIn","unsafe","simple","toLength","toVal","mix","k","str","tmp","_extends","assign","IndexedObject","lengthOfArrayLike","arraySpeciesCreate","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","$this","callbackfn","that","specificCreate","result","boundFunction","index","map","filter","some","every","find","findIndex","filterReject","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","aFunction","namespace","method","has","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","WeakMap","state","store","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","_require","Draggable","DraggableCore","FUNC_ERROR_TEXT","PLACEHOLDER","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","freeSelf","root","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","types","require","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","func","thisArg","arrayAggregator","array","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","string","trimmedEndIndex","baseUnary","baseValues","cacheHas","cache","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","size","overArg","transform","replaceHolders","setToArray","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","unicodeToArray","asciiToArray","charAt","unescapeHtmlChar","runInContext","context","defaults","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","now","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Set","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","pop","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","sort","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","MAX_ARRAY_LENGTH","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","callback","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","flatten","otherFunc","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","charCodeAt","quote","subString","difference","differenceBy","differenceWith","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","next","done","iteratorToArray","remainder","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","minuend","subtrahend","after","castArray","compact","concat","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","position","escape","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","omission","search","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","wrappedWellKnownSymbolModule","quot","attribute","p1","METHOD_NAME","toIntegerOrInfinity","definePropertyModule","TAG","CORRECT_PROTOTYPE_GETTER","componentWillMount","getDerivedStateFromProps","setState","componentWillReceiveProps","nextProps","prevState","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","formatProdErrorMessage","code","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","listener","isSubscribed","dispatch","listeners","replaceReducer","nextReducer","_ref","outerSubscribe","observer","observeState","unsubscribe","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","_i","previousStateForKey","nextStateForKey","compose","b","applyMiddleware","middlewares","createStore","_dispatch","middlewareAPI","middleware","stringSlice","activeXDocument","definePropertiesModule","enumBugKeys","html","documentCreateElement","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","domain","style","display","contentWindow","open","F","Properties","aCallable","Reflect","factory","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","query","register","Container","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","extendStatics","__extends","__","ParchmentError","_super","_this","attributes","tags","scope","ANY","Node","TEXT_NODE","LEVEL","BLOCK","INLINE","HTMLElement","names","getAttribute","tagName","DATA_KEY","BlotClass","node","bubble","blot","parentNode","Definitions","Definition","blotName","attrName","keyName","className","tagNames","equal","op","NULL_CHARACTER","fromCharCode","Delta","ops","insert","text","newOp","retain","lastOp","unshift","chop","passed","failed","changeLength","elem","delete","iter","hasNext","nextOp","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","delta","thisOp","otherOp","strings","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","line","priority","transformPosition","nextType","toStr","gOPD","arr","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","copyIsArray","deep","BlockEmbed","bubbleFormats","_createClass","_get","receiver","desc","_extend2","_quillDelta2","_parchment2","_break2","_inline2","_text2","_classCallCheck","_possibleConstructorReturn","_inherits","_Parchment$Embed","domNode","formats","BLOCK_ATTRIBUTE","def","block","insertBefore","insertAt","BLOCK_BLOT","_Parchment$Block","_this2","descendants","leaf","lines","children","ref","child","force","statics","defaultChild","allowedChildren","overload","expandConfig","_slicedToArray","_arr","_n","_d","_e","_s","sliceIterator","_editor2","_emitter4","_module2","_selection","_selection2","_logger2","_theme2","debug","Quill","container","innerHTML","classList","__quill","addContainer","scrollingContainer","emitter","scroll","whitelist","editor","selection","theme","keyboard","addModule","clipboard","history","on","events","EDITOR_CHANGE","TEXT_CHANGE","toggle","isBlank","SCROLL_UPDATE","mutations","lastRange","modify","contents","setContents","readOnly","disable","level","overwrite","warn","refNode","setRange","_this3","_overload","_overload2","deleteText","enable","enabled","scrollTop","focus","scrollIntoView","_this4","API","getSelection","change","formatLine","formatText","setSelection","SILENT","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bounds","getBounds","containerBounds","getBoundingClientRect","bottom","top","height","left","right","width","getLength","_overload7","_overload8","getContents","getFormat","MAX_VALUE","getRange","_overload9","_overload10","getText","hasFocus","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","contains","off","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","_overload15","_overload16","Range","USER","_this11","userConfig","DEFAULTS","import","themeConfig","config","moduleConfig","moduleClass","toolbar","querySelector","modifier","strict","isEnabled","oldDelta","shiftRange","_emitter","_emitter2","emit","_map","pos","_map2","_map3","_map4","version","_Parchment$Inline","compare","BLOT","isolate","moveChildren","selfIndex","otherIndex","_parchment","TextBlot","_Parchment$Text","_eventemitter2","eventName","addEventListener","querySelectorAll","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","log","_len2","_key2","handler","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","Module","quill","levels","_console","logger","newLevel","pSlice","objectKeys","deepEqual","actual","expected","opts","isUndefinedOrNull","ka","kb","objEquiv","attributeBit","ATTRIBUTE","item","canAdd","removeAttribute","Code","_block2","_Inline","CodeBlock","_Block","textContent","frag","_descendant","descendant","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","prev","optimize","removeChild","unwrap","TAB","_op2","_code2","_cursor2","_block","_clone2","_deepEqual2","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","image","list","bullet","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","suffix","cursorIndex","textBlot","oldValue","CONTENTS","oldText","newText","diffDelta","combined","_toConsumableArray","arr2","from","Selection","composing","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","ignored","_context$range","startNode","startOffset","endNode","endOffset","restore","body","_format","nativeRange","collapsed","attach","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rect","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","activeElement","positions","_position","startContainer","endContainer","childNodes","lastChild","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","scrollBounds","removeAllRanges","addRange","blur","rangeToNative","oldRange","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","build","makeBlot","forEachAt","_a","lengthLeft","detach","childBlot","refBlot","insertInto","memo","targetParent","inclusive","addedNodes","removedNodes","mutation","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","nextSibling","replaceChild","FormatBlot","replaceWith","replacement","move","LeafBlot","INLINE_BLOT","lib","keepNull","Iterator","retOp","substr","_instanceof","nativeMap","nativeSet","nativePromise","circular","includeNonEnumerable","allParents","allChildren","useBuffer","_clone","then","__isArray","__isRegExp","__getRegExpFlags","__isDate","keyChild","valueChild","entryChild","attrs","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","ignoreCase","multiline","clonePrototype","_container2","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_newlineIndex","getLines","takeRecords","SHORTKEY","_quill2","navigator","platform","Keyboard","_Module","bindings","addBinding","ENTER","shiftKey","handleEnter","metaKey","ctrlKey","altKey","userAgent","BACKSPACE","handleBackspace","handleDelete","handleDeleteRange","listen","evt","normalize","which","keyCode","defaultPrevented","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","preventDefault","makeEmbedArrowHandler","_ref3","where","LEFT","RIGHT","_quill$getLeaf3","_quill$getLine11","_quill$getLine13","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine17","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","ESCAPE","UP","DOWN","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","header","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","createTextNode","_length","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","sanitize","_inline","Link","url","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","href","protocol","_keyboard2","_dropdown2","optionsCounter","toggleAriaAttribute","element","Picker","select","buildPicker","label","togglePicker","option","tabIndex","hasAttribute","selectItem","buildItem","selected","buildLabel","buildOptions","trigger","selectedIndex","Event","dispatchEvent","createEvent","initEvent","isActive","_embed2","_scroll2","_clipboard2","_history2","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","styles","attr","ClassAttributor","camelize","parts","part","StyleAttributor","Theme","themes","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","changeDelta","undoDelta","timestamp","maxStack","deleteLength","changeIndex","endsWithNewlineChange","BaseTooltip","_colorPicker2","_iconPicker2","_picker2","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","removeEventListener","tooltip","textbox","hide","pickers","picker","extendToolbar","buttons","icons","button","selects","fillSelect","align","handlers","formula","edit","fileInput","files","reader","FileReader","readAsDataURL","click","video","_Tooltip","boundsContainer","save","preview","linkRange","restoreFocus","LinkedList","append","nodes","cur","curNode","ret","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","ScrollBlot","MutationObserver","observe","disconnect","records","mark","markParent","previousSibling","grandChild","InlineBlot","obj1","obj2","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","token","searchString","subjectString","execCommand","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","longtext","shorttext","hm","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","j","best_common","prefixLength","text1_a","text1_b","text2_a","text2_b","hm1","hm2","mid_common","diff_halfMatch_","diffs_a","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","y1","x1","k2_offset","x2","diff_bisectSplit_","k2","y2","diff_bisect_","diff_compute_","diff_cleanupMerge","pointer","count_delete","count_insert","text_delete","text_insert","changes","norm","current_pos","next_pos","split_pos","d_left","d_right","cursor_normalize_diff","ndiffs","cursor_pointer","d_next","merge_tuples","fix_cursor","starts_with_pair_end","fixed_diffs","fix_emoji","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","Events","EE","EventEmitter","_events","_eventsCount","eventNames","exists","available","ee","a1","a2","a3","a4","a5","len","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","deltaEndsWith","ELEMENT_NODE","fontStyle","computeStyle","italic","fontWeight","bold","applyFormat","textIndent","matchAlias","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","selector","matcher","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","elementMatchers","textMatchers","traverse","childrenDelta","paste","_pair","getComputedStyle","endText","nextElementSibling","nodeHeight","offsetHeight","marginTop","marginBottom","offsetTop","whiteSpace","replacer","collapse","Bold","addControls","Toolbar","_ret","controls","addHandler","_this$quill$selection","_quill$selection$getR","prompt","addButton","groups","control","addSelect","clean","direction","link","_picker","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","IconPicker","defaultItem","Tooltip","TEMPLATE","offsetWidth","rootBounds","verticalShift","_base","_base2","_link2","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","show","_core2","_indent","_blockquote2","_header2","_list","_list2","_bold2","_italic2","_script2","_strike2","_underline2","_image2","_video2","_code","_formula2","_syntax2","_toolbar2","_bubble2","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","Header","List","_Container","listEventHandler","_bold","Italic","_Bold","Script","Strike","Underline","_link","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","katex","render","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","highlight","timer","interval","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","marginLeft","getBuiltIn","integer","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","anInstance","isIntegralNumber","toIndex","toOffset","typedArrayFrom","setSpecies","getOwnPropertyDescriptorModule","InternalStateModule","inheritIfRequired","getInternalState","setInternalState","nativeDefineProperty","nativeGetOwnPropertyDescriptor","RangeError","ArrayBufferPrototype","fromList","addGetter","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","CLAMPED","BYTES","CONSTRUCTOR_NAME","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","dummy","typedArrayOffset","$length","$len","FORCED","XMLHttpRequest","responseType","response","send","status","MouseEvent","initMouseEvent","saveAs","HTMLAnchorElement","URL","webkitURL","download","rel","origin","location","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","autoBom","Blob","title","safari","onloadend","bitmap","toPrimitive","Deno","versions","v8","internalObjectKeys","propertyKey","UNSCOPABLES","ArrayPrototype","aPossiblePrototype","CORRECT_SETTER","_interopRequireWildcard","bpfrpt_proptype_VisibleCellRange","bpfrpt_proptype_Alignment","bpfrpt_proptype_OverscanIndicesGetter","bpfrpt_proptype_OverscanIndices","bpfrpt_proptype_OverscanIndicesGetterParams","bpfrpt_proptype_RenderedSection","bpfrpt_proptype_ScrollbarPresenceChange","bpfrpt_proptype_Scroll","bpfrpt_proptype_NoContentRenderer","bpfrpt_proptype_CellSize","bpfrpt_proptype_CellSizeGetter","bpfrpt_proptype_CellRangeRenderer","bpfrpt_proptype_CellRangeRendererParams","bpfrpt_proptype_StyleCache","bpfrpt_proptype_CellCache","bpfrpt_proptype_CellRenderer","bpfrpt_proptype_CellRendererParams","bpfrpt_proptype_CellPosition","hasXMLHttpRequest","makePromise","maybePromise","isPromise","V","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","getOwnPropertyNamesModule","getOwnPropertyNamesExternalModule","isExtensible","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","meta","fastKey","getWeakData","onFreeze","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","$Symbol","V8_VERSION","IS_PURE","copyright","license","getDescriptor","EXISTS","PROPER","CONFIGURABLE","SPECIES","isArrayIteratorMethod","getIterator","getIteratorMethod","iteratorClose","Result","stopped","ResultPrototype","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","callFn","whitespaces","whitespace","ltrim","rtrim","scrollbarSize","recalc","canUseDOM","scrollDiv","overflow","clientWidth","postfix","toAbsoluteIndex","IS_INCLUDES","el","feature","detection","POLYFILL","NATIVE","createProperty","fin","arraySpeciesConstructor","originalArray","inspectSource","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","foo","Boolean","getMethod","Iterators","ITERATOR","aConstructor","defaultConstructor","preventExtensions","required","NativePromiseConstructor","IS_BROWSER","NativePromisePrototype","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","CONSTRUCTOR","REJECTION_EVENT","PromiseCapability","$$resolve","$$reject","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","newObj","hasPropertyDescriptor","getArg","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","aUrl","scheme","auth","host","port","urlGenerate","aParsedUrl","aPath","isAbsolute","up","aRoot","aPathUrl","aRootUrl","joined","relative","supportsNullProto","isProtoString","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","parseSourceMapInput","JSON","computeSourceURL","sourceRoot","sourceMapURL","parsed","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","mixins","propTypes","KNOWN_STATICS","caller","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","trimLeft","trimRight","tinyCounter","mathRound","mathMin","mathMax","mathRandom","tinycolor","color","rgb","ok","named","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","convertToPercentage","q","mod","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_roundA","_gradientType","gradientType","_ok","_tc_id","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","hex","pad2","rgbaToArgbHex","convertDecimalToHex","desaturate","amount","toHsl","clamp01","saturate","greyscale","lighten","brighten","toRgb","darken","spin","hue","complement","triad","tetrad","splitcomplement","analogous","results","slices","monochromatic","toHsv","modification","isDark","getBrightness","isLight","getOriginalInput","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","pow","setAlpha","toHsvString","toHslString","toHex","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","_applyCombination","fromRatio","newColor","equals","color1","color2","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","out","parms","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","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","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","isOnePointZero","processPercent","isPercentage","val","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","$propertyIsEnumerable","NASHORN_BUG","1","functionToString","usingIterator","iteratorMethod","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","addToUnscopables","defineIterator","iterated","kind","Arguments","IS_RIGHT","argumentsLength","FunctionName","defineBuiltIns","IEEE754","arrayFill","arraySlice","setToStringTag","PROPER_FUNCTION_NAME","CONFIGURABLE_FUNCTION_NAME","NativeArrayBuffer","$ArrayBuffer","$DataView","DataViewPrototype","packIEEE754","pack","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","isLittleEndian","intIndex","bytes","conversion","INCORRECT_ARRAY_BUFFER_NAME","testView","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","InternalMetadataModule","iterate","checkCorrectnessOfIteration","common","IS_WEAK","ADDER","NativeConstructor","NativePrototype","fixMethod","uncurriedNativeMethod","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","FAILS_ON_PRIMITIVES","Wrapper","NewTarget","NewTargetPrototype","$expm1","expm1","exp","WEBKIT","__defineSetter__","channel","validateArgumentsLength","IS_IOS","IS_NODE","setImmediate","clearImmediate","Dispatch","MessageChannel","counter","queue","run","runner","post","postMessage","nextTick","port2","port1","onmessage","importScripts","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","raw","sticky","charsAdded","strCopy","CONVERT_TO_STRING","second","codeAt","regexpExec","RegExpPrototype","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","uncurriedNativeRegExpMethod","methods","nativeMethod","arg2","forceStringMethod","$exec","R","speciesConstructor","dontSetMe","propName","findInArray","int","isNum","num","LTS","L","LL","LLL","LLLL","createDetectElementResize","nonce","hostWindow","_window","raf","attachEvent","requestFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","cancelFrame","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","resetTriggers","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","scrollLeft","scrollWidth","scrollHeight","scrollListener","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","animation","keyframeprefix","animationstartevent","domPrefixes","startEvents","elm","animationName","animationKeyframes","animationStyle","addResizeListener","doc","ownerDocument","elementStyle","getElementById","css","getElementsByTagName","styleSheet","cssText","createStyles","resizeTriggersHtml","trustedTypes","staticPolicy","createPolicy","createHTML","__animationListener__","removeResizeListener","detachEvent","__assign","__spreadArrays","il","jl","__importDefault","react_1","react_dom_1","isEqual_1","quill_1","ReactQuill","dirtyProps","cleanProps","generation","onEditorChange","rangeOrDelta","oldRangeOrDelta","_c","onEditorChangeText","unprivilegedEditor","onEditorChangeSelection","isControlled","validateProps","Children","only","lastDeltaChangeSet","shouldComponentUpdate","prevContents","getEditorContents","nextContents","isEqualValue","setEditorContents","setEditorReadOnly","shouldComponentRegenerate","componentDidMount","instantiateEditor","componentWillUnmount","destroyEditor","regenerationSnapshot","selection_1","editor_1","postpone","setEditorSelection","createEditor","getEditingArea","getEditorConfig","unhookEditor","getEditor","setEditorTabIndex","hookEditor","makeUnprivilegedEditor","getEditorSelection","isDelta","nextValue","sel","length_1","getHTML","editingArea","findDOMNode","renderEditingArea","preserveWhitespace","cloneElement","onKeyPress","onKeyDown","onKeyUp","onChange","nextSelection","_f","currentSelection","hasGainedFocus","hasLostFocus","onChangeSelection","onFocus","onBlur","EnterLeaveCounter","isNodeInDocument","enteringNode","previousLength","entered","itemsA","itemsB","insertItem","leavingNode","items","isFirefox","isSafari","MonotonicInterpolant","xs","ys","dx","dy","dys","dxs","c1s","_i2","m2","mNext","dxNext","c2s","c3s","_i3","invDx","_common","xHere","diffSq","getNodeClientOffset","parentElement","_el$getBoundingClient","getEventClientOffset","clientX","clientY","getDragPreviewOffset","sourceNode","dragPreview","clientOffset","anchorPoint","offsetPoint","_document$documentEle","isImage","nodeName","documentElement","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","sourceWidth","sourceHeight","anchorX","anchorY","_getDragPreviewSize","dragPreviewWidth","dragPreviewHeight","devicePixelRatio","getDragPreviewSize","offsetX","offsetY","isManualOffsetY","_nativeTypesConfig","FILE","TEXT","HTML","getDataFromDataTransfer","dataTransfer","typesToTry","resultSoFar","typeToTry","nativeTypesConfig","NativeTypes","exposeProperties","_dataTransfer","matchesTypes","_dataTransfer2","urls","_dataTransfer3","_dataTransfer4","NativeDragSource","initializeExposedProperties","newProperties","monitor","handle","getSourceId","matchNativeItemType","dataTransferTypes","nativeItemType","OptionsReader","globalContext","optionsArgs","_this$globalContext","_this$optionsArgs","rootElement","_objectSpread","HTML5BackendImpl","manager","sourceId","sourceNodes","isDraggingNativeItem","endDrag","currentNativeHandle","registry","removeSource","currentNativeSource","currentDragSourceNode","clearCurrentDragSourceNode","isDragging","dragStartSourceIds","beginDrag","publishSource","getSourceClientOffset","nativeType","setDragImage","sourcePreviewNodes","_this$getCurrentSourc","getCurrentSourcePreviewNodeOptions","dragPreviewOffset","setCurrentDragSourceNode","captureDraggingState","publishDragSource","beginDragNativeItem","dragEnterTargetIds","enterLeaveCounter","enter","altKeyPressed","targetId","canDropOnTarget","dropEffect","getCurrentDropEffect","dragOverTargetIds","lastClientOffset","hoverRafId","leave","endDragNativeItem","_this$currentNativeSo","dropTargetIds","loadDataTransfer","reset","dragDrop","isContentEditable","getActions","getMonitor","getRegistry","_this$dragStartSource","_this$dragOverTargetI","sourcePreviewNodeOptions","sourceNodeOptions","__isReactDndBackendSetUp","addEventListeners","_this$window","removeEventListeners","asyncEndDragFrameId","handleDragStart","handleSelectStart","handleDragEnter","handleDragOver","handleDrop","handleTopDragStart","handleTopDragStartCapture","handleTopDragEndCapture","handleTopDragEnter","handleTopDragEnterCapture","handleTopDragLeaveCapture","handleTopDragOver","handleTopDragOverCapture","handleTopDrop","handleTopDropCapture","getCurrentSourceNodeOptions","itemType","getItemType","createNativeDragSource","addSource","mouseMoveTimeoutTimer","_this5$rootElement","endDragIfSourceWasRemovedFromDOM","_this$window2","HTML5Backend","fetch","fetchApi","ordinaryToPrimitive","TO_PRIMITIVE","pref","exoticToPrim","enforceInternalState","CONFIGURABLE_LENGTH","getOwnPropertySymbolsModule","$getOwnPropertyNames","windowNames","getWindowNames","endPos","createIteratorConstructor","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","mergeSort","comparefn","middle","insertionSort","llength","rlength","lindex","rindex","webkit","isConstructor","$repeat","IS_END","fillString","fillLen","stringFiller","intMaxLength","stringLength","fillStr","sign","MATCH","hasIndices","dotAll","unicode","$RegExp","MISSED_STICKY","error1","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","to","addClassName","addEvent","inputOptions","capture","addUserSelectStyles","styleEl","createCSSTransform","controlPos","positionOffset","translation","getTranslation","_getPrefix","browserPrefixToKey","createSVGTransform","getTouch","identifier","targetTouches","_shims","changedTouches","getTouchIdentifier","innerHeight","clientHeight","computedStyle","defaultView","paddingTop","paddingBottom","innerWidth","paddingLeft","paddingRight","matchesSelector","matchesSelectorAndParentsTo","baseNode","offsetXYFromParent","offsetParent","scale","offsetParentRect","outerHeight","borderTopWidth","borderBottomWidth","outerWidth","borderLeftWidth","borderRightWidth","removeClassName","removeEvent","removeUserSelectStyles","matchesSelectorFunc","unitSuffix","defaultX","defaultY","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","fromString","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","_objectWithoutProperties2","_classCallCheck2","_createClass2","_defineProperty2","_CellSizeAndPositionManager","_maxElementSize","ScalingCellSizeAndPositionManager","_ref$maxScrollSize","maxScrollSize","getMaxElementSize","params","_cellSizeAndPositionManager","_maxScrollSize","getTotalSize","configure","getCellCount","getEstimatedCellSize","getLastMeasuredIndex","containerSize","totalSize","safeTotalSize","offsetPercentage","_getOffsetPercentage","getSizeAndPositionOfCell","getSizeAndPositionOfLastMeasuredCell","_ref3$align","currentOffset","targetIndex","_safeOffsetToOffset","getUpdatedOffsetForIndex","_offsetToSafeOffset","_ref4","getVisibleCellRange","resetCell","_ref5","_ref6","_ref7","_default","_Node","Declaration","_cssSyntaxError","_stringifier","_stringify","raws","_proto","positionBy","column","stringifier","stringify","overrides","cloned","cloneBefore","cloneAfter","insertAfter","_nodes","fixed","defaultType","cleanRaws","keepBetween","between","positionInside","builder","normalizeArray","allowAboveRoot","resolvedPath","resolvedAbsolute","cwd","trailingSlash","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","_parser","_input","parser","Comment","AtRule","_Container$prototype$","prepend","_Container$prototype$2","_declaration","_comment","_createForOfIteratorHelperLoose","allowArrayLike","minLen","_arrayLikeToArray","_unsupportedIterableToArray","lastEach","walk","postcssNode","walkDecls","walkRules","walkAtRules","walkComments","_children","_step","_iterator","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","exist","_step5","_iterator5","_step6","_iterator6","removeAll","_step7","_iterator7","replaceValues","decl","fast","cleanSource","_step8","_iterator8","_step9","_iterator9","_container","Rule","comma","_react","_react2","_propTypes2","sizerStyle","visibility","INPUT_PROPS_BLACKLIST","copyStyles","fontSize","fontFamily","letterSpacing","textTransform","isIE","generateId","AutosizeInput","_Component","inputRef","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","minWidth","inputId","prevId","mounted","copyInputStyles","updateInputWidth","onAutosize","inputStyles","newInputWidth","placeholderIsMinWidth","extraWidth","injectStyles","dangerouslySetInnerHTML","__html","sizerValue","previousValue","currentValue","wrapperStyle","inputStyle","boxSizing","inputProps","_objectWithoutProperties","field","cleanInputProps","inputClassName","renderStyles","any","oneOfType","bool","_CellMeasurer","_CellMeasurerCache","exceptions","SymbolPrototype","hint","keyFor","copyWithin","inc","flattenIntoArray","original","sourceLen","mapper","elementLen","sourceIndex","mapFn","$forEach","STRICT_METHOD","arrayMethodIsStrict","callWithSafeIterationClosing","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","innerResult","innerError","ENUMERABLE_NEXT","PrototypeOfArrayIteratorPrototype","arrayIterator","$lastIndexOf","NEGATIVE_ZERO","searchElement","firefox","UA","factories","partArgs","internalStateGetterFor","define","getEntry","removed","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","log1p","n$ParseFloat","trimmedString","$parseInt","$assign","B","TO_ENTRIES","is","notify","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","exit","task","newPromiseCapability","promiseCapability","regExpFlags","point","$trimEnd","forcedStringTrimMethod","$trimStart","toPositiveInteger","ArrayIterationModule","uncaughtFrozenStore","frozen","UncaughtFrozenStore","findUncaughtFrozen","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","DOMTokenListPrototype","MSIE","scheduler","boundArgs","setInterval","searchParams","pathname","URLSearchParams","username","hash","USE_NATIVE_URL","$toString","arraySort","getInternalParamsState","URL_SEARCH_PARAMS","safeGetBuiltIn","nativeFetch","NativeRequest","Headers","RequestPrototype","HeadersPrototype","decodeURIComponent","encodeURIComponent","plus","sequences","percentSequence","percentDecode","sequence","deserialize","replacements","serialize","URLSearchParamsIterator","URLSearchParamsState","parseObject","parseQuery","bindURL","entryIterator","entryNext","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","getAll","headersHas","headersSet","wrapRequestOptions","headers","RequestConstructor","Request","webpackContext","req","webpackContextResolve","arrayLikeToArray","webpackPolyfill","deprecate","canDragX","draggable","axis","canDragY","createCoreData","isStart","lastX","deltaX","deltaY","lastY","createDraggableData","coreData","getBoundPosition","cloneBounds","boundNode","ownerWindow","boundNodeEl","nodeStyle","boundNodeStyle","offsetLeft","_domFns","marginRight","getControlPosition","touchIdentifier","draggableCore","touchObj","snapToGrid","grid","pendingX","pendingY","_setPrototypeOf","AsapQueue","pendingErrors","flushing","capacity","currentIndex","scan","newLength","registerPendingError","requestErrorThrow","requestFlush","makeRequestCall","makeRequestCallFromTimer","TaskFactory","onError","freeTasks","tasks","RawTask","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","cellCount","overscanCellsCount","scrollDirection","startIndex","stopIndex","overscanStartIndex","overscanStopIndex","SCROLL_DIRECTION_VERTICAL","SCROLL_DIRECTION_HORIZONTAL","SCROLL_DIRECTION_FORWARD","SCROLL_DIRECTION_BACKWARD","cellCache","cellRenderer","columnSizeAndPositionManager","columnStartIndex","columnStopIndex","deferredMeasurementCache","horizontalOffsetAdjustment","isScrolling","isScrollingOptOut","rowSizeAndPositionManager","rowStartIndex","rowStopIndex","styleCache","verticalOffsetAdjustment","visibleColumnIndices","visibleRowIndices","renderedCells","areOffsetsAdjusted","canCacheStyle","rowIndex","rowDatum","columnIndex","columnDatum","isVisible","cellRendererParams","renderedCell","bpfrpt_proptype_RenderedRows","bpfrpt_proptype_RowRenderer","bpfrpt_proptype_RowRendererParams","bpfrpt_proptype_CellMeasureCache","_picocolors","_terminalHighlight","_wrapNativeSuper","_cache","_construct","Parent","_isNativeReflectConstruct","Proxy","_Error","CssSyntaxError","file","plugin","reason","setMessage","captureStackTrace","_assertThisInitialized","showSourceCode","isColorSupported","maxWidth","aside","gutter","spacing","DEFAULT_RAW","colon","beforeDecl","beforeRule","beforeOpen","beforeClose","beforeComment","emptyBody","commentLeft","commentRight","semicolon","Stringifier","comment","rawValue","important","rule","ownSemicolon","atrule","afterName","own","detect","rawCache","beforeAfter","rawSemicolon","rawEmptyBody","rawIndent","rawBeforeComment","rawBeforeDecl","rawBeforeRule","rawBeforeClose","rawBeforeOpen","rawColon","_lazyResult","Processor","plugins","use","_process","_x","postcss","postcssPlugin","_mapGenerator","_stringify2","_result","_parse","LazyResult","processor","stringified","processed","inline","syntax","warnings","sync","onFulfilled","onRejected","async","catch","finally","onFinally","handleError","postcssVersion","asyncTick","processing","lastPlugin","generate","messages","SourceMapGenerator","SourceMapConsumer","SourceNode","base64VLQ","util","ArraySet","MappingList","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","generator","eachMapping","newMapping","generated","addMapping","sourceFile","sourceRelative","sourceContentFor","setSourceContent","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","encode","_generateSourcesContent","aSources","aSourceRoot","sourcesContent","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","hasNativeMap","_array","_set","fromArray","aArray","aAllowDuplicates","sStr","isDuplicate","idx","aIdx","separators","space","Root","ignore","toResult","MapShim","__entries__","ctx","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","unobserve","clearActive","observation","ResizeObserver","arrayWithoutHoles","iterableToArray","nonIterableSpread","DndContext","createContext","dragDropManager","_asapJs","_typesJs","_asapQueueJs","_taskFactoryJs","_List","_types","reTrim","_ref$fill","_ref$width","_ref$height","_ref$style","viewBox","hot","XmlHttpRequestApi","ActiveXObjectApi","addQueryString","queryString","paramName","payload","queryStringParams","customHeaders","requestOptions","statusText","requestWithFetch","crossDomain","setRequestHeader","withCredentials","overrideMimeType","onreadystatechange","readyState","responseText","requestWithXmlHttpRequest","_processor","_atRule","_vendor","_rule","_root","creator","transformer","processOpts","pluginOpts","vendor","atRule","ListenerType","MouseButtons","MouseButton","eventShouldStartDrag","isTouchEvent","lastTargetTouchFallback","touches","getEventClientTouchOffset","supportsPassive","_eventNames","incoming","enableTouchEvents","enableMouseEvents","enableKeyboardEvents","ignoreContextMenu","enableHoverOutsideTarget","touchSlop","scrollAngleRanges","delayTouchStart","delayMouseStart","mouse","contextmenu","touch","keydown","TouchBackend","handleTopMoveStartCapture","moveStartSourceIds","handleMoveStart","handleTopMoveStart","_mouseClientOffset","waitingForDelay","handleTopMoveStartDelay","handleTopMoveCapture","handleMove","handleTopMove","_isScrolling","angleRanges","angle","atan2","PI","inAngleRanges","sqrt","installSourceNodeRemovalObserver","dragOverTargetNodes","targetNodes","elementsAtPoint","getDropTargetElementsAtPoint","elementsFromPoint","elementsAtPointExtended","nodeId","currentNode","orderedDragOverTargetIds","ids","handleTopMoveEndCapture","eventShouldEndDrag","didDrop","uninstallSourceNodeRemovalObserver","handleCancelOnEscape","listenerTypes","isSetUp","getTopMoveStartHandler","subject","passive","listenerType","coords","droppedOn","elementFromPoint","childMatch","draggedSourceNode","draggedSourceNodeRemovalObserver","resurrectSourceNode","createBackend","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","defineSymbolToPrimitive","HIDDEN","QObject","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","useSetter","useSimple","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","$stringify","numberToString","tester","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","spreadable","E","$every","$filter","$find","SKIPS_HOLES","$findIndex","flat","depthArg","ENTRIES","$includes","$IndexOf","un$IndexOf","un$Join","ES3_STRINGS","$map","of","$reduce","CHROME_VERSION","$reduceRight","un$Reverse","un$Slice","HAS_SPECIES_SUPPORT","$some","internalSort","FF","IE_OR_EDGE","V8","un$Sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","itemsLength","arrayLength","getSortCompare","deleteCount","insertCount","actualDeleteCount","actualStart","arrayBufferModule","LN2","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","nBits","un$ArrayBufferSlice","viewSource","viewTarget","DatePrototype","n$DateToISOString","getUTCDate","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","milliseconds","pv","dateToPrimitive","un$DateToString","HAS_INSTANCE","FUNCTION_NAME_EXISTS","nameRE","regExpExec","$acosh","acosh","$asinh","asinh","$atanh","atanh","cbrt","LOG2E","clz32","$cosh","cosh","fround","EPSILON","EPSILON32","MAX32","MIN32","$abs","$sign","$hypot","hypot","value1","value2","div","aLen","larg","$imul","imul","xn","yn","xl","yl","log10","LOG10E","log2","sinh","tanh","trunc","thisNumberValue","NativeNumber","NumberPrototype","toNumeric","primValue","third","maxCode","digits","NumberWrapper","globalIsFinite","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","un$ToFixed","toFixed","acc","dataToString","fractionDigits","fractDigits","un$ToPrecision","toPrecision","__defineGetter__","$entries","$freeze","freeze","fromEntries","nativeGetPrototypeOf","$isFrozen","isFrozen","$isSealed","isSealed","__lookupGetter__","__lookupSetter__","$preventExtensions","$seal","seal","$values","$parseFloat","Internal","OwnPromiseCapability","nativeThen","microtask","hostReportErrors","perform","Queue","PromiseConstructorDetection","newPromiseCapabilityModule","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","isThenable","callReaction","reaction","exited","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","isUnhandled","internalReject","internalResolve","executor","PromiseWrapper","Pebble","capability","$promiseResolve","alreadyCalled","real","race","promiseResolve","PromiseConstructorWrapper","CHECK_WRAPPER","functionApply","thisArgument","argumentsList","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","deleteProperty","isDataDescriptor","objectGetPrototypeOf","objectPreventExtensions","existingDescriptor","ownDescriptor","objectSetPrototypeOf","getRegExpFlags","proxyAccessor","NativeRegExp","SyntaxError","stringIndexOf","IS_NCG","CORRECT_NEW","BASE_FORCED","RegExpWrapper","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","Source","defineBuiltInAccessor","n$ToString","NOT_GENERIC","INCORRECT_NAME","codePointAt","notARegExp","correctIsRegExpLogic","un$EndsWith","CORRECT_IS_REGEXP_LOGIC","endPosition","$fromCodePoint","fromCodePoint","elements","fixRegExpWellKnownSymbolLogic","advanceStringIndex","nativeMatch","maybeCallNative","rx","fullUnicode","matchStr","$padEnd","$padStart","rawTemplate","literalSegments","getSubstitution","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","UNSAFE_SUBSTITUTE","searchValue","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","tailPos","ch","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","callRegExpExec","$push","SPLIT","nativeSplit","internalSplit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","originalExec","un$StartsWith","$trim","forcedStringHTMLMethod","big","blink","fontcolor","fontsize","italics","small","strike","sup","createTypedArrayConstructor","u$ArrayCopyWithin","$fill","fromSpeciesAndList","arrayFromConstructorAndList","typedArraySpeciesConstructor","$indexOf","ArrayIterators","arrayValues","arrayKeys","arrayEntries","GENERIC","ITERATOR_IS_VALUES","typedArrayValues","$join","WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS","TO_OBJECT_BUG","ACCEPT_INCORRECT_ARGUMENTS","begin","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","IS_NOT_ARRAY_METHOD","InternalWeakMap","collectionWeak","IS_IE11","$WeakMap","WeakMapPrototype","nativeDelete","nativeHas","nativeGet","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","ArrayIteratorMethods","ArrayValues","EOF","arrayFrom","toASCII","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","compress","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","http","https","ws","wss","isWindowsDriveLetter","startsWithWindowsDriveLetter","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","URLState","isBase","base","baseState","failure","urlString","stateOverride","bufferCodePoints","seenAt","seenBracket","seenPasswordToken","password","fragment","cannotBeABaseURL","isSpecial","includesCredentials","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","swaps","address","pieceIndex","parseIPv6","partsLength","numbers","ipv4","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","getProtocol","setProtocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","getHash","setHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","nativeRevokeObjectURL","regexNonASCII","regexSeparators","OVERFLOW_ERROR","digitToBasic","adapt","numPoints","firstTime","baseMinusTMin","inputLength","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","labels","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","genFun","ctor","awrap","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Fragment","StrictMode","Profiler","Suspense","for","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","forceUpdate","isPureReactComponent","G","I","__self","__source","J","$$typeof","_owner","N","K","_status","ReactCurrentDispatcher","ReactCurrentBatchConfig","transition","ReactCurrentOwner","IsSomeRendererActing","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","createFactory","createRef","forwardRef","isValidElement","lazy","_payload","_init","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","aa","ba","ca","da","ea","fa","ha","ia","ja","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","_render","Ra","Sa","Ta","Va","_valueTracker","setValue","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","eb","db","fb","defaultSelected","disabled","gb","hb","ib","jb","lb","mb","nb","ob","MSApp","execUnsafeLocalFunction","namespaceURI","firstChild","pb","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","opacity","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","ub","menuitem","area","br","col","hr","img","keygen","param","track","wbr","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","sibling","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","returnValue","isPropagationStopped","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","pageX","pageY","getModifierState","zd","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","Fd","Hd","elapsedTime","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","MozPrintableKey","Nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Control","Meta","Shift","Pd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","Xd","Zd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","ae","be","documentMode","ce","de","fe","ge","he","ie","le","datetime","email","tel","week","me","ne","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","Le","Ne","HTMLIFrameElement","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","Nb","ef","ff","gf","hf","je","char","ke","jf","kf","lf","mf","autoFocus","nf","pf","qf","rf","sf","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","firstBaseUpdate","lastBaseUpdate","pending","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","Mg","Ng","Og","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","implementation","Wg","Xg","Yg","Zg","ah","bh","dh","eh","fh","gh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","createElementNS","Hi","Ii","W","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","_reactRootContainer","hj","ij","jj","kj","lj","mj","nj","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","focusedElem","selectionRange","ek","Me","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","unstable_observedBits","unmount","form","Vj","vk","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","inject","createPortal","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","performance","unstable_forceFrameRate","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","arrayOf","instanceOf","objectOf","oneOf","shape","exact","checkPropTypes","PropTypes","_DraggableCore","React","_propTypes","_reactDom","_clsx2","_positionFns","_log","_excluded","sourceKeys","_objectWithoutPropertiesLoose","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_createSuper","Derived","hasNativeReflectConstruct","Super","_React$Component","onStart","dragging","dragged","uiData","newState","slackX","slackY","_getBoundPosition2","newStateX","newStateY","onDrag","onStop","_this$props$position","defaultPosition","prevPropsPosition","isElementSVG","_this$props$nodeRef$c","_this$props","_this$props$nodeRef","nodeRef","_clsx","_this$props2","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","draggableCoreProps","svgTransform","validPosition","transformOpts","onDragStart","onDragStop","browserPrefixToStyle","getPrefix","prefixes","_window$document","_window$document$docu","shouldCapitalize","kebabToTitleCase","eventsFor","dragEventFor","onMouseDown","allowAnyClick","thisNode","coreEvent","enableUserSelectHack","handleDrag","handleDragStop","_snapToGrid2","_snapToGrid4","onTouchStart","_this$props2$nodeRef","onMouseUp","onTouchEnd","jsx","jsxs","asap","asapQueue","enqueueTask","taskFactory","makeRequestCallFromMutationObserver","BrowserMutationObserver","handleTimer","intervalHandle","clearInterval","release","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","_class","_temp","_extends2","_possibleConstructorReturn2","_getPrototypeOf3","_assertThisInitialized2","_inherits2","_Grid","_React$PureComponent","_getPrototypeOf2","rowRenderer","widthDescriptor","Grid","onScroll","rowOverscanStartIndex","rowOverscanStopIndex","onRowsRendered","alignment","getOffsetForCell","invalidateCellSizeAfterRender","measureAllCells","_ref6$columnIndex","_ref6$rowIndex","recomputeGridSize","scrollToPosition","scrollToCell","noRowsRenderer","scrollToIndex","autoContainerWidth","_cellRenderer","columnWidth","noContentRenderer","_onScroll","onSectionRendered","_onSectionRendered","_setRef","scrollToRow","autoHeight","estimatedRowSize","overscanIndicesGetter","accessibilityOverscanIndicesGetter","overscanRowCount","scrollToAlignment","_accessibilityOverscanIndicesGetter","_defaultCellRangeRenderer","_defaultOverscanIndicesGetter","DEFAULT_SCROLLING_RESET_TIME_INTERVAL","_calculateSizeAndPositionDataAndUpdateScrollOffset","_ScalingCellSizeAndPositionManager","_createCallbackMemoizer","_updateScrollIndexHelper","_scrollbarSize","_reactLifecyclesCompat","_requestAnimationTimeout","SCROLL_POSITION_CHANGE_REASONS","_disablePointerEventsTimeoutId","needToResetStyleCache","_onGridRenderedMemoizer","indices","columnOverscanStartIndex","_columnStartIndex","columnOverscanStopIndex","_columnStopIndex","_renderedColumnStartIndex","_renderedColumnStopIndex","_rowStartIndex","_rowStopIndex","_renderedRowStartIndex","_renderedRowStopIndex","_scrollingContainer","handleScrollEvent","cellSizeGetter","_wrapSizeGetter","estimatedCellSize","_getEstimatedColumnSize","rowCount","rowHeight","_getEstimatedRowSize","instanceProps","prevColumnWidth","prevRowHeight","prevColumnCount","prevRowCount","prevIsScrolling","prevScrollToColumn","scrollToColumn","prevScrollToRow","scrollbarSizeMeasured","scrollDirectionHorizontal","scrollDirectionVertical","scrollPositionChangeReason","_initialScrollTop","_getCalculatedScrollTop","_initialScrollLeft","_getCalculatedScrollLeft","_ref$alignment","_ref$columnIndex","_ref$rowIndex","offsetProps","_ref2$scrollLeft","scrollLeftParam","_ref2$scrollTop","scrollTopParam","_debounceScrollEnded","autoWidth","totalRowsHeight","totalColumnsWidth","_invokeOnScrollMemoizer","_deferredInvalidateColumnIndex","_deferredInvalidateRowIndex","_ref4$columnIndex","_ref4$rowIndex","_this$props3","_recomputeScrollLeftFlag","_recomputeScrollTopFlag","_styleCache","_cellCache","_updateScrollLeftForScrollToColumn","_updateScrollTopForScrollToRow","_this$props4","getScrollbarSize","_handleInvalidatedGridSize","stateUpdate","_getScrollToPositionStateUpdate","sizeIsBiggerThanZero","_invokeOnGridRenderedHelper","_maybeCallOnScrollbarPresenceChange","_this$props5","_this$state","columnOrRowCountJustIncreasedFromZero","sizeJustIncreasedFromZero","cellSizeAndPositionManager","previousCellsCount","previousCellSize","previousScrollToAlignment","previousScrollToIndex","previousSize","scrollOffset","updateScrollIndexCallback","cancelAnimationTimeout","_this$props6","containerProps","containerRole","containerStyle","role","_this$state2","gridStyle","WebkitOverflowScrolling","willChange","_resetStyleCache","_calculateChildrenToRender","verticalScrollBarSize","horizontalScrollBarSize","_horizontalScrollBarSize","_verticalScrollBarSize","_scrollbarPresenceChanged","overflowX","overflowY","childrenToDisplay","_childrenToDisplay","showNoContentRenderer","_setScrollingContainerRef","maxHeight","pointerEvents","cellRangeRenderer","overscanColumnCount","getOffsetAdjustment","overscanColumnIndices","overscanRowIndices","hasFixedHeight","hasFixedWidth","scrollingResetTimeInterval","requestAnimationTimeout","_debounceScrollEndedCallback","_onScrollMemoizer","_this3$props","onScrollbarPresenceChange","horizontal","vertical","_ref8","_getScrollLeftForScrollToColumnStateUpdate","_getScrollTopForScrollToRowStateUpdate","maybeStateA","maybeStateB","cellSize","computeMetadataCallback","computeMetadataCallbackProps","nextCellsCount","nextCellSize","nextScrollToIndex","updateScrollOffsetForScrollToIndex","estimatedColumnSize","_ref9","finalColumn","scrollBarSize","calculatedScrollLeft","finalRow","calculatedScrollTop","CellSizeAndPositionManager","_cellSizeGetter","_cellCount","_estimatedCellSize","_lastMeasuredIndex","lastMeasuredCellSizeAndPosition","_cellSizeAndPositionData","_lastBatchedIndex","idealOffset","datum","maxOffset","minOffset","_findNearestCell","_binarySearch","lastMeasuredIndex","_exponentialSearch","chrome","requireAllKeys","cachedIndices","allInitialized","indexChanged","cachedValue","hasScrollToIndex","sizeHasChanged","bpfrpt_proptype_AnimationTimeoutId","_animationFrame","frame","caf","win","oRequestAnimationFrame","msRequestAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","CellMeasurer","_this$props$columnInd","_this$props$rowIndex","_this$_getCellMeasure","_getCellMeasurements","getHeight","getWidth","_child","_maybeMeasureCell","measure","_measure","registerChild","_registerChild","styleWidth","styleHeight","_this$props2$columnIn","_this$props2$rowIndex","_this$_getCellMeasure2","DEFAULT_WIDTH","DEFAULT_HEIGHT","CellMeasurerCache","_keyMapper","_columnWidthCache","_defaultWidth","_rowHeightCache","_defaultHeight","defaultHeight","defaultWidth","fixedHeight","fixedWidth","keyMapper","minHeight","_hasFixedHeight","_hasFixedWidth","_minHeight","_minWidth","defaultKeyMapper","_cellHeightCache","_cellWidthCache","_updateCachedColumnAndRowSizes","_rowCount","_columnCount","columnKey","rowKey","flattenNames","_isString3","_forOwn3","_isPlainObject3","things","thing","mergeClasses","_cloneDeep3","toMerge","autoprefix","_forOwn2","borderRadius","msBorderRadius","MozBorderRadius","OBorderRadius","WebkitBorderRadius","boxShadow","msBoxShadow","MozBoxShadow","OBoxShadow","WebkitBoxShadow","userSelect","WebkitTouchCallout","KhtmlUserSelect","MozUserSelect","msUserSelect","WebkitUserSelect","WebkitBoxFlex","MozBoxFlex","WebkitFlex","msFlex","flexBasis","WebkitFlexBasis","justifyContent","WebkitJustifyContent","msTransition","MozTransition","OTransition","WebkitTransition","msTransform","MozTransform","OTransform","WebkitTransform","absolute","otherElementStyles","otherStyle","expanded","Span","Hover","handleMouseOver","handleMouseOut","onMouseOver","onMouseOut","active","Active","handleMouseDown","handleMouseUp","setProp","originalModule","webpackAsyncContext","__self__","DOMException","support","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","consumed","bodyUsed","fileReaderReady","readBlobAsArrayBuffer","blob","readAsArrayBuffer","bufferClone","Body","_initBody","_bodyInit","_bodyText","_bodyBlob","FormData","_bodyFormData","_bodyArrayBuffer","rejected","readAsText","readArrayBufferAsText","formData","json","upcased","credentials","signal","referrer","Response","bodyInit","redirectStatuses","redirect","aborted","xhr","abortXhr","abort","rawHeaders","getAllResponseHeaders","responseURL","ontimeout","onabort","ponyfill","storage","_getStorage","getItem","setItem","removeItem","storageType","testKey","hasStorage","noopStorage","dim","underline","inverse","hidden","strikethrough","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","_sourceMap","_path","MapGenerator","mapOpts","previousMaps","isInline","annotation","isSourcesContent","withContent","clearAnnotation","setSourcesContent","already","applyPrevMaps","consumer","isAnnotation","toBase64","btoa","addAnnotation","outputFile","eol","generateMap","generateString","sourcePath","intToCharMap","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","binarySearch","quickSort","aSourceMap","aSourceMapURL","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","_absoluteSources","_sourceMapURL","Mapping","lastOffset","_sections","offsetLine","offsetColumn","generatedOffset","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findSourceIndex","_findMapping","lastColumn","relativeSource","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","cachedSegments","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","computeColumnSpans","nextMapping","lastGeneratedColumn","hasContentsOfAllSources","nullOnMissing","fileUriAbsPath","generatedPositionFor","sectionIndex","section","generatedPosition","sectionMappings","adjustedMapping","aHaystack","aCompare","recursiveSearch","aLow","aHigh","doQuickSort","pivot","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","browser","env","argv","prependListener","prependOnceListener","chdir","umask","printed","_warning","warning","Warning","opt","_tokenize","Parser","spaces","createTokenizer","tokenizer","endOfFile","nextToken","freeSemicolon","emptyRule","endFile","bracket","tokens","back","unclosedBracket","unknownWord","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","precheckMissedSemicolon","stringFrom","spacesFromEnd","_type","checkMissedSemicolon","unnamedAtrule","unexpectedClose","unclosedBlock","lastTokenType","doubleColon","founded","nextOffset","escaped","escapePos","currentToken","ignoreErrors","returned","unclosed","what","ignoreUnclosed","NEWLINE","FEED","CR","SPACE","OPEN_SQUARE","CLOSE_SQUARE","OPEN_CURLY","CLOSE_CURLY","COLON","SEMICOLON","CLOSE_PARENTHESES","controlChar","OPEN_PARENTHESES","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","RE_BAD_BRACKET","AT","RE_AT_END","SLASH","RE_HEX_ESCAPE","ASTERISK","RE_WORD_END","_previousMap","Input","hasBOM","mapResolve","_fs","PreviousMap","loadAnnotation","startWith","loadMap","consumerCache","getAnnotationURL","sourceMapString","annotations","lastAnnotation","decodeInline","uri","lastMatch","atob","prevPath","existsSync","readFileSync","unprefixed","ReactReduxContext","createListenerCollection","nullListeners","createSubscription","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","notifyNestedSubs","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","contextValue","previousState","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","stateOrDispatch","ownProps","mapDispatchToProps","actionCreators","boundActionCreators","_loop","actionCreator","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","strictEqual","createConnect","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","createStoreHook","useReduxContext","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","i18nInstance","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","ReportNamespaces","usedNamespaces","namespaces","getI18n","I18nextProvider","i18n","defaultNS","consoleLogger","baseLogger","Logger","concreteLogger","forward","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","_cloned","rej","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","regexEscape","_entityMap","isIE10","ResourceStore","keySeparator","lng","silent","addNamespaces","resources","addResource","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","translator","checkedLoadedFor","Translator","services","language","interpolation","resolved","nsSeparator","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","updateMissing","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","fallbackValue","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","defaultVariables","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","returnNull","returnEmptyString","resourceStore","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","sets","nr","_rulesPluralsTypes","2","3","4","5","6","7","10","11","14","15","21","22","createRules","rules","plurals","PluralResolver","getRule","noAbs","simplifyPluralSuffix","returnSuffix","compatibilityJSON","Interpolator","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","missingInterpolationHandler","regex","safeValue","todo","clonedOptions","handleHasOptions","inheritedOptions","optionsString","formatters","doReduce","Connector","backend","languages","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","loaded","errors","addResourceBundle","_getLastOfPath2","fcName","tried","queueLoad","loadOne","prepareLoading","isUpdate","initImmediate","nonExplicitWhitelist","preload","pluralSeparator","partialBundledLanguages","tDescription","transformOptions","I18n","external","isInitialized","isClone","createClassOnDemand","ClassOrObject","lu","languageDetector","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","changeLanguage","usedCallback","isLanguageChangingTo","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","fixedT","_this$translator","_this$translator2","lastLng","loadNotPending","loadState","precheck","preResult","preloaded","newLngs","mergedOptions","membersToCopy","createThunkMiddleware","extraArgument","thunk","withExtraArgument","documentViewer","getAnnotationManager","getEventToObjectMap","annotManager","historyManager","getAnnotationHistoryManager","editBoxManager","getEditBoxManager","formFieldCreationManager","getFormFieldCreationManager","measurementManager","getMeasurementManager","signatureSaved","signatureDeleted","annotationsLoaded","dblClick","displayPageLocation","keyDown","keyUp","mouseEnter","mouseLeave","mouseLeftDown","mouseLeftUp","mouseMove","mouseRightDown","mouseRightUp","pageComplete","readOnlyModeChanged","searchInProgress","activeSearchResultChanged","searchResultsChanged","textSelected","beginRendering","finishedRendering","beforeDocumentLoaded","displayModeUpdated","documentLoaded","documentUnloaded","fitModeUpdated","rotationUpdated","toolUpdated","toolModeUpdated","zoomUpdated","pageNumberUpdated","pagesUpdated","historyChanged","annotationSelected","annotationChanged","updateAnnotationPermission","addReply","deleteReply","annotationHidden","annotationDoubleClicked","annotationFiltered","annotationToggled","fieldChanged","setNoteText","fileAttachmentDataAvailable","digitalSignatureAvailable","editorFocus","editorBlur","editorTextChanged","editorSelectionChanged","formFieldCreationModeStarted","formFieldCreationModeEnded","scaleUpdated","setToolMode","toolName","getTool","getToolMode","setDisplayMode","displayModeManager","getDisplayModeManager","displayMode","isVirtualDisplayEnabled","Core","VirtualDisplayMode","DisplayMode","getDisplayMode","rotateClockwise","rotateCounterClockwise","rotatePages","rotation","getDocument","movePages","pageArray","newLocation","removePages","getFitMode","fitToPage","setFitMode","FitMode","FitPage","fitToWidth","FitWidth","fitToHeight","FitHeight","fitToZoom","Zoom","zoomToMouse","zoomFactor","xOffset","yOffset","getZoom","getZoomLevel","zoomTo","getDocumentViewer","getTotalPages","getPageCount","getCurrentPage","setCurrentPage","pageNumber","getType","isWebViewerServerDocument","getSelectedText","clearSelection","closeDocument","getToolModeMap","getCurrentUser","getIsAdminUser","isUserAdmin","setIsAdminUser","isAdmin","promoteUserToAdmin","demoteUserFromAdmin","exportAnnotations","setCurrentUser","userName","setReadOnly","isReadOnly","enableReadOnlyMode","disableReadOnlyMode","setScrollViewElement","setViewerElement","isContinuousDisplayMode","isContinuous","isScrollableDisplayMode","IsScrollable","scrollViewUpdated","canModify","canModifyContents","deleteAnnotations","getDisplayAuthor","userId","getCompleteRotation","getRotation","getPageInfo","clearSearchResults","getPageSearchResults","displayAdditionalSearchResult","displayAdditionalSearchResults","getActiveSearchResult","setActiveSearchResult","textSearchInit","searchMode","isFullSearch","handleSearchResult","displaySearchResult","getSearchMode","Search","Mode","getPageWidth","getPageHeight","drawAnnotations","overrideCanvas","majorRedraw","overrideContainer","getOutlines","getBookmarks","outlines","getSelectedAnnotations","updateCopiedAnnotations","pasteCopiedAnnotations","selectAnnotation","selectAnnotations","addAnnotations","applyRedactions","isCreateRedactionEnabled","isApplyRedactionEnabled","isAnnotationRedactable","enableRedaction","disableRedaction","drawAnnotationsFromList","setInternalAnnotationsTransform","setPagesUpdatedInternalAnnotationsTransform","loadThumbnailAsync","pageNum","loadThumbnail","thumb","loadAsync","partRetriever","docOptions","loadDocument","getSelectedTextQuads","getDisplayModeObject","getScrollViewElement","getAnnotationById","Id","isFullPDFEnabled","isBlendModeSupported","isAnnotationSelected","setAnnotationStyles","deselectAnnotation","deselectAllAnnotations","jumpToAnnotation","insertBlankPages","insertBeforeThesePages","createAnnotationReply","reply","setNoteContents","setAnnotationRichTextStyle","updateAnnotationRichTextStyle","getAnnotationsList","getAnnotationsLoadedPromise","getPrintablePDF","eventListener","eventToObjectMap","getIsReadOnly","isReadOnlyModeEnabled","cancelLoadThumbnail","requestId","showAnnotations","hideAnnotations","goToOutline","outline","displayBookmark","getViewerElement","setAnnotationCanvasTransform","annotCanvasContext","getAnnotationCopy","setWatermark","watermarkOptions","getWatermark","getAnnotationByMouseEvent","groupAnnotations","primaryAnnotation","annotationsToGroup","ungroupAnnotations","getNumberOfGroups","updateAnnotationState","stateModel","getFontStyles","FontStyles","mergeDocument","documentToMerge","filename","getFilename","pages","syncNamespaces","createDocument","sourceDoc","maxthon","edge","dataElement","getLeftPanelDataElements","defaultLeftPanels","viewer","notesInLeftPanel","customPanels","panel","isMobile","isIEEdge","isIE11","checkForIOS13","maxTouchPoints","isIOS","isAndroid","isMobileDevice","isMac","appVersion","isWindows","isChrome","isChromeOniOS","isFirefoxOniOS","fireEvent","CustomEvent","fireError","LOAD_ERROR","minZoom","maxZoom","getMinZoomLevel","getMaxZoomLevel","defaultZoomList","getPresetCropDimensions","presetCropDimensions","getDateTimeFormats","dateTimeFormats","getThumbnailSelectionMode","thumbnailSelectionMode","getFonts","fonts","getTabs","tabs","getActiveTab","activeTab","getIsMultiTab","isMultiTab","getTabManager","TabManager","getIsHighContrastMode","highContrastMode","getLastPickedToolForGroup","lastPickedToolForGroup","getStandardStamps","standardStamps","getCustomStamps","customStamps","getSelectedStampIndex","selectedStampIndex","getSelectedStamp","selectedStamp","getSavedSignatures","savedSignatures","getDisplayedSignatures","displayedSignaturesFilterFunction","getSelectedDisplayedSignatureIndex","selectedDisplayedSignatureIndex","getSelectedDisplayedSignature","getDisplayedSignaturesFilterFunction","getAutoFocusNoteOnAnnotationSelection","autoFocusNoteOnAnnotationSelection","getNotesInLeftPanel","getLeftPanelWidth","panelWidths","leftPanel","getSearchPanelWidth","searchPanel","getNotesPanelWidth","notesPanel","getRedactionPanelWidth","redactionPanel","getWv3dPropertiesPanelWidth","wv3dPropertiesPanel","getLeftPanelWidthWithReszieBar","getSearchPanelWidthWithReszieBar","getNotesPanelWidthWithReszieBar","getDocumentContentContainerWidthStyle","notesPanelWidth","searchPanelWidth","leftPanelWidth","redactionPanelWidth","wv3dPropertiesPanelWidth","isLeftPanelOpen","isElementOpen","isNotesPanelOpen","isSearchPanelOpen","isRedactionPanelOpen","isWv3dPropertiesPanelOpen","getDocumentContainerWidth","documentContainerWidth","getDocumentContainerHeight","documentContainerHeight","isElementDisabled","disabledElements","openElements","allButtonsInGroupDisabled","toolGroup","toolButtonObjects","getToolButtonObjects","getToolbarHeaders","getEnabledToolbarGroups","getToolbarGroupDataElements","toolGroupButtons","flattenHeaderItems","dataItems","total","isEveryToolGroupButtonDisabled","toolGroupDataElement","getCurrentToolbarGroup","toolbarGroup","getActiveTheme","activeTheme","getDefaultHeaderItems","getActiveHeaderItems","activeHeaderGroupItems","activeHeaderGroup","getDisabledElementPriority","getToolsHeaderItems","toolbarGroupHeaders","getToolbarGroupItems","isToolGroupReorderingEnabled","enableToolGroupReordering","isNoteSubmissionWithEnterEnabled","enableNoteSubmissionWithEnter","isNotesPanelTextCollapsingEnabled","isNotesPanelRepliesCollapsingEnabled","isCommentThreadExpansionEnabled","getActiveToolNamesForActiveToolGroup","activeToolGroup","toolButtonObject","getToolButtonDataElements","toolNames","getToolButtonObject","getToolButtonDataElement","getToolNamesByGroup","getToolNameByDataElement","getActiveToolName","activeToolName","getActiveToolStyles","activeToolStyles","getCustomColor","customColor","getCustomColors","customColors","getActiveLeftPanel","activeLeftPanel","getActiveToolGroup","getNotePopupId","notePopupId","fitMode","currentPage","getSortStrategy","sortStrategy","getNoteDateFormat","noteDateFormat","getPrintedNoteDateFormat","printedNoteDateFormat","isFullScreen","doesDocumentAutoLoad","doesAutoLoad","isDocumentReadOnly","getCustomPanels","getCustomModals","customModals","getPageLabels","pageLabels","getSelectedThumbnailPageIndexes","selectedThumbnailPageIndexes","getShiftKeyThumbnailPivotIndex","shiftKeyThumbnailPivotIndex","getDisabledCustomPanelTabs","disabledTabs","tab","isEmbedPrintSupported","useEmbeddedPrint","isOutlineControlVisible","outlineControlVisibility","getColorMap","colorMap","getCursorOverlayData","cursorOverlay","getOpenElements","getDisabledElements","getCurrentPalette","colorMapKey","currentPalette","getIconColor","iconColor","getCustomNoteFilter","customNoteFilter","getIsReplyDisabled","isReplyDisabledFunc","getZoomList","zoomList","getMeasurementUnits","measurementUnits","getIsNoteEditing","isNoteEditing","getMaxSignaturesCount","maxSignaturesCount","getUserData","userData","getIsMentionEnabled","getSignatureFonts","signatureFonts","getSelectedTab","getCustomElementOverrides","customElementOverrides","getPopupItems","popupDataElement","getMenuOverlayItems","menuOverlay","getIsThumbnailMergingEnabled","isThumbnailMerging","getIsThumbnailReorderingEnabled","isThumbnailReordering","isThumbnailMultiselectEnabled","isThumbnailMultiselect","getIsMultipleViewerMerging","isMultipleViewerMerging","getEnableNotesPanelVirtualizedList","enableNotesPanelVirtualizedList","notesShowLastUpdatedDate","getAllowPageNavigation","allowPageNavigation","getCustomMeasurementOverlay","customMeasurementOverlay","getAnnotationContentOverlayHandler","annotationContentOverlayHandler","getEnableMouseWheelZoom","enableMouseWheelZoom","isReaderMode","getCertificates","certificates","getTrustLists","trustLists","getValidationModalWidgetName","validationModalWidgetName","getVerificationResult","fieldName","verificationResult","isThumbnailSelectingPages","thumbnailSelectingPages","getWatermarkModalOptions","watermarkModalOptions","getZoomStepFactors","zoomStepFactors","getWarningMessage","getWarningTitle","getWarningConfirmEvent","onConfirm","getWarningConfirmBtnText","confirmBtnText","getWarningSecondaryEvent","onSecondary","getWarningSecondaryBtnText","secondaryBtnText","getWarningCancelEvent","onCancel","isAccessibleMode","getErrorMessage","errorMessage","getPasswordAttempts","passwordAttempts","getPrintQuality","printQuality","getDefaultPrintOptions","defaultPrintOptions","totalPages","getIsOutlineEditing","isOutlineEditing","bookmarks","getLayers","layers","getLoadingProgress","loadingProgress","getUserName","user","getServerUrl","advanced","serverUrl","getSearchValue","shouldClearSearchPanelOnClose","clearSearchPanelOnClose","isCaseSensitive","isWholeWord","isWildcard","isSearchUp","isAmbientString","isRegex","isProcessingSearchResults","getRedactionSearchPatterns","redactionSearchPatterns","getNoteTransformFunction","noteTransformFunction","getCustomNoteSelectionFunction","customNoteFunction","getCustomApplyRedactionsHandler","customApplyRedactionsHandler","isSnapModeEnabled","getUnreadAnnotationIdSet","unreadAnnotationIdSet","getCurrentLanguage","currentLanguage","shouldFadePageNavigationComponent","fadePageNavigationComponent","isContentEditWarningHidden","hideContentEditWarning","getCurrentContentBeingEdited","currentContentBeingEdited","getFeatureFlags","featureFlags","isInDesktopOnlyMode","pageDeletionConfirmationModalEnabled","getPageReplacementFileList","pageReplacementFileList","getPageManipulationOverlayItems","pageManipulationOverlay","getThumbnailControlMenuItems","thumbnailControlMenu","shouldShowPresets","showPresets","shouldResetAudioPlaybackPosition","getActiveSoundAnnotation","activeSoundAnnotation","getWv3dPropertiesPanelModelData","modelData","getWv3dPropertiesPanelSchema","schema","getAnnotationFilters","annotationFilters","exposedSelectors","dataElements","filteredDataElements","currentPriority","selectors","disableElement","disableElements","getFilteredDataElements","enableElement","enableElements","core","ele","setThumbnailMerging","useThumbnailMerging","setThumbnailReordering","useThumbnailReordering","setThumbnailMultiselect","useThumbnailMultiselect","setIsMultipleViewerMerging","setEnableNotesPanelVirtualizedList","setNotesShowLastUpdatedDate","setAllowPageNavigation","setLastPickedToolForGroup","setEnableToolGroupReordering","setActiveToolNameAndStyle","toolObject","toolStyles","setActiveToolStyles","setCustomColor","setCustomColors","setActiveToolGroup","currentActiveToolGroup","setNotePopupId","triggerNoteEditing","finishNoteEditing","setZoom","setRotation","setFullScreen","registerTool","tool","unregisterTool","setToolButtonObjects","setHeaderItems","headerItems","setPopupItems","setMenuOverlayItems","setColorPalette","colorPalette","setActivePalette","setIconColor","setColorMap","setLeftPanelWidth","disableReplyForAnnotations","setMouseWheelZoom","setReaderMode","setThumbnailSelectingPages","isSelecting","setPageManipulationOverlayItems","setThumbnailControlMenuItems","setTabManager","setMultiTab","setTabs","setActiveTab","setFonts","setTotalPages","setOutlines","setIsOutlineEditing","setBookmarks","addBookmark","pageIndex","USER_BOOKMARKS_CHANGED","editBookmark","removeBookmark","setLayers","setPasswordAttempts","setPrintQuality","quality","setDefaultPrintOptions","setLoadingProgress","percent","progress","resetLoadingProgress","setVerificationResult","setUserName","setAdminUser","isAdminUser","searchText","searchTextFull","addSearchListener","removeSearchListener","setSearchValue","setCaseSensitive","setWholeWord","setWildcard","resetSearch","setNoteTransformFunction","setCustomNoteSelectionFunction","setCustomApplyRedactionsHandler","setEnableSnapMode","setLanguage","setHideContentEditWarning","hideWarning","setCurrentContentBeingEdited","updateCurrentContentBeingEdited","clearCurrentContentBeingEdited","setProcessingSearchResults","triggerResetAudioPlaybackPosition","setActiveSoundAnnotation","setAnnotationFilters","setPresetCropDimensions","setDateTimeFormats","setEnableDesktopOnlyMode","enableDesktopOnlyMode","setHighContrastMode","useHighContrastMode","setCanUndo","canUndo","setCanRedo","canRedo","setStandardStamps","rubberStampTool","canvasWidth","canvasHeight","getStandardStampAnnotations","getPreview","previews","imgSrc","setCustomStamps","getCustomStampAnnotations","setReadOnlyRibbons","setToolbarGroup","toolbarGroupsToDisable","enableRibbons","isInFormFieldCreationMode","toolbarGroupsToEnable","pickTool","closeElements","defaultTool","lastPickedToolGroup","_toolbarGroup","toolGroups","firstToolGroupForToolbarGroup","firstTool","getFirstToolGroupForToolbarGroup","lastPickedToolName","tools","getFirstToolNameForGroup","TOOLBAR_GROUP_CHANGED","setSelectedStampIndex","setOutlineControlVisibility","setSelectedDisplayedSignatureIndex","setSavedSignatures","setDisplayedSignaturesFilterFunction","filterFunction","setSearchPanelWidth","setNotesPanelWidth","setRedactionPanelWidth","setWv3dPropertiesPanelWidth","setWv3dPropertiesPanelModelData","setWv3dPropertiesPanelSchema","setDocumentContainerWidth","setDocumentContainerHeight","enableAllElements","openElement","isDataElementLeftPanel","VISIBILITY_CHANGED","setActiveLeftPanel","closeElement","isElementClosed","toggleElement","addCustomModal","modalOptions","setActiveHeaderGroup","headerGroup","panelDataElements","setNotesPanelSortStrategy","setSortNotesBy","setNoteDateFormat","setPrintedNoteDateFormat","setCustomPanel","newPanel","setPageLabels","setSelectedPageThumbnails","SELECTED_THUMBNAIL_CHANGED","setShiftKeyThumbnailsPivotIndex","setSwipeOrientation","swipeOrientation","showWarningMessage","showErrorMessage","setCustomNoteFilter","filterFunc","setZoomList","minZoomLevel","maxZoomLevel","filteredZoomList","outOfRangeZooms","setMaxSignaturesCount","setUserData","setCustomMeasurementOverlay","setSelectedTab","setCustomElementOverrides","setPageReplacementModalFileList","setActiveTheme","THEME_CHANGED","setSearchResults","searchResults","setClearSearchOnPanelClose","shouldClear","setAnnotationContentOverlayHandler","setAnnotationReadState","isRead","annotationId","addTrustedCertificates","addTrustList","trustList","setSignatureValidationModalWidgetName","widgetName","setNoteSubmissionEnabledWithEnter","setNotesPanelTextCollapsing","enableNotesPanelTextCollapsing","setNotesPanelRepliesCollapsing","enableNotesPanelRepliesCollapsing","setCommentThreadExpansion","enableCommentThreadExpansion","enableFadePageNavigationComponent","disableFadePageNavigationComponent","enablePageDeletionConfirmationModal","disablePageDeletionConfirmationModal","setWatermarkModalOptions","replaceRedactionSearchPattern","searchPattern","setThumbnailSelectionMode","addRedactionSearchPattern","removeRedactionSearchPattern","searchPatternType","setZoomStepFactors","exposedActions","internalActions","Accessibility","setIsVisible","useSelector","isNotesPanelDisabled","isSearchPanelDisabled","a11yClass","data-element","searchEl","noteEl","alreadyWarned","warnOnce","loadNamespaces","initialized","oldI18nextHasLoadedNamespace","isNewerI18next","ignoreJSONStructure","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","ready","react","i18nOptions","keyPrefix","addUsedNamespaces","initializedStoreOnce","getT","getFixedT","nsMode","_useState","_useState2","setT","boundReset","isInitial","isff","useCapture","getMods","mods","getKeys","_keyMap","backspace","esc","down","del","ins","home","pageup","pagedown","capslock","num_0","num_1","num_2","num_3","num_4","num_5","num_6","num_7","num_8","num_9","num_multiply","num_add","num_enter","num_subtract","num_decimal","num_divide","'","_modifier","alt","ctrl","cmd","command","modifierMap","91","_mods","_handlers","_downKeys","winListendFocus","_scope","elementHasBindEvent","setScope","getScope","eachUnbind","_ref$splitKey","splitKey","originKey","unbindKeys","arr1","compareArray","eventHandler","modifiersMatch","shortcut","asterisk","hotkeys","keyNum","keyup","keyShortcut","_downKeysCurrent","isElementBind","clearModifier","_api","deleteScope","newScope","getPressedKeyCodes","isPressed","flag","unbind","keysInfo","keyMap","_hotkeys","textarea","setSelectionRange","toolStylesExist","getStep","currentZoomFactor","zoomFactorRangesMap","rangesMap","startZoom","zoomStepFactor","nextZoomStepFactor","convertZoomStepFactorsToRangesMap","UI","zoomFactorRanges","ranges","rangeLowBound","rangeHighBound","isCurrentZoomFactorInRange","zoomStepHistory","storedZoomFactor","zoomToInternal","newZoomFactor","documentContainer","getElementsByClassName","documentWrapper","getViewCenterAfterScale","resetZoomStepHistory","zoomIn","zoomOut","workerTypes","rotateRad","cx","cy","radians","sin","cos","hexToRgba","hexString","isDarkColorHex","getAnnotationClass","Annotations","CaretAnnotation","CustomAnnotation","EllipseAnnotation","FileAttachmentAnnotation","FreeHandAnnotation","FreeTextAnnotation","getIntent","Intent","FreeTextCallout","LineAnnotation","PolygonAnnotation","PolylineAnnotation","RectangleAnnotation","RedactionAnnotation","SignatureWidgetAnnotation","StampAnnotation","StickyAnnotation","TextHighlightAnnotation","TextStrikeoutAnnotation","TextUnderlineAnnotation","TextSquigglyAnnotation","Model3DAnnotation","latestReplyActivityDate","getReplies","replyDate","DateModified","DateCreated","sortStrategies","getSortedNotes","notes","PageNumber","center","getDocumentCenter","rotatedA","Width","Height","rotatedB","smallest","shouldRenderSeparator","prevNote","currNote","getSeparatorContent","i18next","createdDate","prevNoteDate","currNoteDate","dayjs","today","yesterday","createdDateString","modifiedDate","getLatestActivityDate","latestActivityDate","latestActivityDay","statusA","getStatus","statusB","author","authorA","authorB","typeA","typeB","colorA","colorB","Color","flexDirection","alignItems","background","getSortStrategies","NotesPanelSortStrategy","POSITION","CREATED_DATE","MODIFIED_DATE","STATUS","AUTHOR","COLOR","signature","icon","availablePalettes","annotationCheck","Subject","freeHand","freeHandHighlight","freeText","FreeText","dateFreeText","distanceMeasurement","hasLineEndings","IT","Measure","perimeterMeasurement","arcMeasurement","ArcAnnotation","rectangularAreaMeasurement","isRectangularPolygon","cloudyRectangularAreaMeasurement","areaMeasurement","ellipseMeasurement","countMeasurement","getCustomData","callout","getStartStyle","getEndStyle","polygon","cloud","squiggly","strikeout","redaction","rectangle","ellipse","arc","polyline","stickyNote","changeView","ViewState","ToolName","pan","ContentEditTool","textSelect","marqueeZoomTool","eraser","cropPage","fileattachment","sound","SoundAnnotation","threeDAnnotation","textField","signatureFormField","checkBoxFormField","radioButtonFormField","listBoxFormField","comboBoxFormField","mapToolNameToKey","mapAnnotationToKey","copyMapWithDataProperties","newMap","getDataWithKey","pendingCanvases","PRINT_QUALITY","LocalizedFormat","print","includeAnnotations","includeComments","maintainPageOrientation","onProgress","printWithoutModal","isPrintCurrentView","dateFormat","pagesToPrint","documentType","bbURLPromise","printPage","printPdf","createPages","creatingPages","printPages","xfdfString","getFileData","printDocument","printHandler","loadListener","clrMap","createdPages","printableAnnotationNotes","getPrintableAnnotationNotes","creatingImage","htmlElement","sortedNotes","creatingNotesPage","createDocumentFragment","page","Listable","isReply","isGrouped","Printable","renderRect","printRotation","getPrintRotation","onCanvasLoaded","canvas","pendingCanvas","positionCanvas","printableAnnotInfo","annotatationsToPrint","WidgetAnnotation","printable","isGrayscaleModeEnabled","getContext","globalCompositeOperation","fillStyle","globalAlpha","fillRect","drawAnnotationsOnCanvas","toDataURL","containerElement","headerElement","headerItemsElements","headerHeight","coordinates","windowToPageNoRotate","loadCanvas","pageRotation","drawComplete","note","getNote","getDocumentRotation","documentRotation","isAutoRotated","isPdfjs","rotate","isGrayscaleAnnotationsModeEnabled","widgetContainer","createWidgetContainer","html2canvas","logging","noteRoot","noteRootInfo","noteIcon","getNoteIcon","getNoteInfo","getNoteContent","noteReply","contentElement","contentText","ToolNames","Tools","HIGHLIGHT","HIGHLIGHT2","HIGHLIGHT3","HIGHLIGHT4","Opacity","TEXT_FORM_FIELD","annotationConstructor","createTextAnnotation","quads","createAnnotation","TextAnnotationCreateTool","AUTO_SET_TEXT","setCustomData","setRedactionStyle","IsText","setAnnotationStyle","Quads","Author","mapAnnotationToToolName","newStyles","getToolStyles","AnnotationCreateRedaction","StrokeColor","StrokeThickness","FillColor","fillColor","isEditingFreetext","annot","HTMLInputElement","HTMLTextAreaElement","Single","Continuous","Facing","FacingContinuous","CoverFacing","Cover","nextPageNumber","totalPageNumber","currPageNumber","nextPage","NOOP","Keys","CTRL_SHIFT_EQUAL","COMMAND_SHIFT_EQUAL","CTRL_SHIFT_MINUS","COMMAND_SHIFT_MINUS","CTRL_C","COMMAND_C","CTRL_V","COMMAND_V","CTRL_Z","COMMAND_Z","CTRL_Y","COMMAND_SHIFT_Z","CTRL_O","COMMAND_O","CTRL_F","COMMAND_F","CTRL_EQUAL","COMMAND_EQUAL","CTRL_MINUS","COMMAND_MINUS","CTRL_0","COMMAND_0","CTRL_P","COMMAND_P","PAGE_UP","PAGE_DOWN","concatKeys","unbindedHotkeysMap","HotkeysManager","initialize","keyHandlerMap","createKeyHandlerMap","prevToolName","didInitializeAllKeys","enableHotkey","_handler","getHotkeyByToolName","toLocaleLowerCase","hotkeyName","copyText","isFocusingElement","openFilePicker","getNumberOfPagesToNavigate","scrollViewElement","createToolHotkeyHandler","setToolModeAndGroup","sigToolButton","createTextAnnotationAndSelect","currentToolName","isSignatureModalOpen","SIGNATURE","AnnotationEdit","Pan","AnnotationCreateArrow","AnnotationCreateCallout","AnnotationEraserTool","AnnotationCreateFreeHand","AnnotationCreateStamp","AnnotationCreateLine","AnnotationCreateSticky","AnnotationCreateEllipse","AnnotationCreateRectangle","AnnotationCreateFreeText","AnnotationCreateSignature","AnnotationCreateTextSquiggly","AnnotationCreateTextHighlight","AnnotationCreateTextStrikeout","AnnotationCreateTextUnderline","AnnotationCreateRubberStamp","hideShortcut","forcePosition","hideOnClick","timeoutRef","childRef","tooltipRef","setShow","setOpacity","setPosition","setLocation","showToolTip","delayShow","hideTooltip","lastMutation","childRect","tooltipRect","locationTopLeftMap","bestLocation","tooltipTop","tooltipLeft","childEle","tooltipEle","bottomLeft","newTop","newLeft","isUsingMobileDevices","translatedContent","shortcutKey","hotkeysManager","hasShortcut","ReactDOM","Icon","updateSvg","glyph","isInlineSvg","domElement","svg","DOMParser","parseFromString","svgElement","strokeColor","mediaQueryClassName","onDoubleClick","isSubmitType","ariaLabel","hideTooltipShortcut","useI18String","Button","removeElement","customOverrides","iconClassName","forceTooltipPosition","aLabel","ariaKeyshortcuts","aria","shortcutAria","isBase64","imgToShow","actuallyDisabled","isGlyph","shouldRenderTooltip","aria-label","aria-keyshortcuts","ToolButton","restProps","iconColorKey","restObjectData","showColor","getColor","hasStyles","queries","mediaQueryLists","matchMedia","mql","ConnectedToggleElementButton","connect","ToggleElementButton","useMedia","DataElementWrapper","useIsDisabledWithDefaultValue","ToolGroupButton","ConnectedToolGroupButton","isTabletAndMobile","ActionButton","isNotClickableSelector","StatefulButton","activeState","states","initialState","mount","didUpdate","getContent","AnotherState","isOpen","CustomElement","reactComponent","setReactComponent","wrapperRef","toolTipWrapperRef","isDOMElement","wrapperElement","isReactElement","_inheritsLoose","getTypes","allowedTypes","calculations","client","clientTop","clientLeft","margin","withContentRect","WithContentRect","_animationFrameID","_resizeObserver","_node","onResize","_handleRef","innerRef","measureRef","ScrollGroup","scrollRef","isScrolledToEnd","setIsScrolledToEnd","isScrolledToStart","setIsScrolledToStart","checkScrollPosition","ToolGroupButtonsScroll","toolGroupButtonsItems","toolBtn","screen","innerKey","HeaderItems","handledToolGroupButtons","hiddenOnMobileDevice","activeHeaderItems","isToolsHeaderOpen","currentToolbarGroup","ToolsHeader","ConnectedToolsHeader","isToolsOverlayOpen","isToolsOverlayDisabled","isSignatureOverlayOpen","isSignatureOverlayDisabled","pageTransition","layout","overlay","isSmallBrowserHeight","buttonBottom","buttonLeft","overlayWidth","overlayHeight","verticalGap","preventDefaultTouchmoveEvent","rotationAngle","trackMouse","trackTouch","xy","swiping","eventData","rotateXYByAngle","angleInRadians","getHandlers","handlerProps","onMove","onUp","_rotateXYByAngle","absX","absY","velocity","getDirection","onSwiping","cancelablePageSwipe","onSwiped","onEnd","cleanUpMouse","attachTouch","tls","addState","cleanUpTouch","updateTransientState","Swipeable","transientState","_this$props$nodeName","_getHandlers","onSwipedUp","onSwipedRight","onSwipedDown","onSwipedLeft","focusableElementDomString","escapePressListener","onEscapeFunction","useArrowFocus","onClose","overlayRef","getFocusableElements","lastFocusedElement","keydownListener","focusable","focusIndex","toFind","findFocusableIndex","MENUS","menu","FlyoutMenu","allOtherMenus","closeMenu","onClickOutside","menuButton","useOnClickOutside","isTabletOrMobile","overlayPosition","getOverlayPositionBasedOn","overlayClass","mobile","closed","localStorageEnabled","localStorage","touchType","TouchEventManager","allowSwipe","allowHorizontalSwipe","allowVerticalSwipe","verticalMomentum","horziontalMomentum","verticalLock","horziontalLock","enableTouchScrollLock","startingScrollLeft","startingScrollTop","useNativeScroll","distance","horizontalDistance","verticalDistance","handleTouchStart","handleTouchMove","handleTouchEnd","handleTouchCancel","terminate","viewerWidth","isDoubleTap","getDistance","touchStartTimeStamp","stopMomentumScroll","touchMoveCount","doubleTapTimeout","t1","t2","docX","docY","previousPinchScale","transformOrigin","axisLockThreshold","isScrollingVertically","isScrollingHorziontally","canLockScrolling","doesPagesFitOnScreen","alreadyLocked","handleScroll","scrollTo","panTool","isPanning","isPinching","isUsingAnnotationTools","reachedBoundary","reachedLeft","reachedTop","reachedRight","reachedBottom","threshold","swipedToBottom","swipedToTop","swipedToRight","swipedToLeft","numberOfPagesToNavigate","isFirstPage","isLastPage","isSingleDisplayMode","shouldGoToPrevPage","shouldGoToNextPage","touchDuration","startMomentumScroll","annotationUnderMouse","isFreeTextUnderMouse","oldZoom","getPointAfterScale","currentIteration","initScrollLeft","initScrollTop","dHorizontal","dVertical","momentumScroll","nextLeft","easeOutQuad","nextTop","isNotNewTouchEvent","horzDiff","vertDiff","isMomentumScrollAlmostFinish","currentTime","startValue","changeInValue","duration","Measurement","Ribbons","Download","FilePicker","LocalStorage","NotesPanel","Print","Redaction","TextSelection","TouchScrollLock","Copy","MultipleViewerMerging","ThumbnailMerging","ThumbnailReordering","ThumbnailMultiselect","PageNavigation","MouseWheelZoom","MathSymbols","OutlineEditing","NotesPanelVirtualizedList","NotesShowLastUpdatedDate","MultiTab","ChangeView","toolModeMap","toolMode","GenericAnnotationCreateTool","getAnnotationCreateToolNames","toolNameArray","currTool","EDIT","createToolAPI","useFocusTrap","locked","focusLastOnUnlock","focusRef","lockFocus","focusableElements","focusedItemIndex","checkFocus","toRef","toRefRef","focusLastOnUnlockRef","FocusTrap","ModalWrapper","containerOnClick","closeButtonDataElement","onCloseClick","checkPassword","PasswordModal","passwordInput","userCancelled","setUserCancelled","closeModal","handleSubmit","getErrorModal","renderEnterPasswordContent","wrongPassword","onSubmit","autoComplete","remainingAttempts","tabsPadding","Modal","getDefaultOptions","docId","documentId","onLoadingProgress","transformPasswordOption","xodOptions","extractXodOptions","userDefinedOnErrorCallback","startOffline","getHashParameters","azureWorkaround","webviewerServerURL","fallbackToClientSide","singleServerMode","forceClientSideInit","disableWebsockets","cacheKey","officeOptions","streaming","useDownloader","backendType","loadAsPDF","passwordChecked","decryptOptions","decrypt","Encryption","docArr","extensionArr","useDB","disableIndexedDB","extension","Document","Tab","indexedDB","indexedDBNotSupported","onsuccess","throwError","onupgradeneeded","createObjectStore","saveCurrentActiveTabState","currentTab","listenForAnnotChanges","newTab","annotationsChanged","nextTab","deletedTab","saveCurrentTabState","loadOption","currId","highestId","moveTab","prevIndex","newIndex","onAnnotChange","addAnnotListener","annotInDB","docInDB","annots","writeToDB","restorePageDataOnLoad","saveData","restoreAnnotDataFromDBOnLoad","restoreAnnotDataOnLoad","tx","transaction","objectStore","savePageData","arePagesAltered","saveFileData","saveAnnotDataInDB","saveAnnotData","SaveOptions","LINEARIZED","finishedWithDocument","annotList","put","docContainer","updateScroll","getDocumentCompletePromise","updateZoom","updatePage","updateAnnotations","importAnnotations","annotReq","removeListeners","arrBuff","features","Feature","Annotating","enableTools","disableTools","localStorageManager","enableLocalStorage","disableLocalStorage","Tool","ENABLE_TEXT_SELECTION","touchEventManager","arrowUpHandler","arrowDownHandler","tabManager","createFeatureAPI","enterReaderMode","PDFNet","main","docViewer","getPDFDoc","pdfDoc","widgets","fields","xfdf","FDFDoc","createFromXFDF","fdfDoc","fdfUpdate","disableFeatures","runWithCleanup","exitReaderMode","enableFeatures","fdfExtract","PDFDoc","ExtractFlag","e_both","saveAsXFDFAsString","TextMarkupAnnotation","ViewControlsOverlay","isPageTransitionEnabled","handleClick","displayModeObject","displayModeObjects","showReaderButton","row","externalURL","useDisplayAuthor","downloadType","annotationsPromise","documentToBeDownloaded","extractXFDF","downloadName","File","FINISHED_SAVING_PDF","FILE_DOWNLOADED","downloadIframe","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","isFullscreen","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","FULLSCREEN_MODE_TOGGLED","isInFullscreen","docElm","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","ALLOW_KEYBOARD_INPUT","webkitCurrentFullScreenElement","DataElements","COLOR_PALETTE","OPACITY_SLIDER","STROKE_THICKNESS_SLIDER","FONT_SIZE_SLIDER","STYLE_OPTION","STYLE_POPUP","SCALE_INPUT_CONTAINER","PRECISION_INPUT_CONTAINER","STYLE_POPUP_TEXT_STYLE_CONTAINER","STYLE_POPUP_COLORS_CONTAINER","STYLE_POPUP_LABEL_TEXT_CONTAINER","REDACTION_PANEL","REDACTION_PANEL_TOGGLE","WV3D_PROPERTIES_PANEL","WV3D_PROPERTIES_PANEL_TOGGLE","OUTLINE_PANEL","OUTLINE_CONTROLS","BOOKMARK_PANEL","BOOKMARK_SHORTCUT_OPTION","PAGE_REDACT_MODAL","LINK_MODAL","LANGUAGE_MODAL","FILTER_MODAL","ANNOTATION_USER_FILTER_PANEL_BUTTON","ANNOTATION_COLOR_FILTER_PANEL_BUTTON","ANNOTATION_TYPE_FILTER_PANEL_BUTTON","ANNOTATION_STATUS_FILTER_PANEL_BUTTON","InitialMenuOverLayItem","childrenArray","MenuOverlay","setDocumentType","closeMenuOverlay","setActiveLightTheme","setActiveDarkTheme","onDocumentLoaded","toggleFullscreen","downloadPdf","FormFieldPlaceHolderOverlay","formFieldPlaceHolderName","getFieldName","formFieldPlaceHolderType","getFormFieldPlaceHolderType","mapPlaceHolderTypeToTranslation","AnnotationContentOverlay","isOverlayOpen","setAnnotation","setOverlayPosition","customHandler","isUsingCustomHandler","onMouseHover","viewElement","ungroupedAnnots","getGroupAnnotations","overlayRect","fitWindowSize","numberOfReplies","preRenderedElements","customRender","isFormFieldPlaceholder","getWidthAfterTransition","oldTransition","containerWidth","expandContainerWidthBy","panelWidth","shrinkContainerWidthBy","withTranslation","I18nextWithTranslation","forwardedRef","_useTranslation","_useTranslation2","passDownProps","tReady","commaRegex","unit","CustomMeasurementOverlay","CustomEllipseMeasurementOverlay","renderAppropriateOverlay","factor","annotationKey","distanceMeasurementTool","Precision","Scale","EllipseMeasurementOverlay","getFormattedUnit","onAnnotationChanged","setRadius","computeRadius","decimalPlaces","getNumberOfDecimalPlaces","onChangeRadiusLength","radius","diameterInPts","getRect","newRect","setHeight","setWidth","resize","forceEllipseRedraw","annotationManager","redrawAnnotation","getMaxDiameterInPts","currentPageNumber","documentWidth","documentHeight","maxX","maxY","ensureDiameterIsWithinBounds","boundingRect","validateDiameter","ArcMeasurementOverlay","Length","Radius","Angle","LineMeasurementInput","DisplayUnits","getLineLength","setLength","showQuotMark","setShowQuotMark","setAngle","computeAngle","onInputChanged","validateLineLength","finishAnnotation","ensureLineIsWithinBounds","lengthInPts","maxLengthInPts","getMaxLineLengthInPts","setLineLength","forceLineRedraw","angleInDegrees","getAngle","startPoint","getStartPoint","startX","startY","maxLenX","maxLenY","onAngleChange","Start","endX","endY","setEndPoint","adjustRect","setLineAngle","CountMeasurementOverlay","annotationCount","showFraction","convertDecimalToFraction","denominator","numerator","gcd","greatestCommonDivisor","firstNum","secondNum","getFraction","integerPart","fractionPart","MeasurementOverlay","useTransparentBackground","insideRect","isMouseInsideRect","isCreatingAnnotation","drawMode","getDrawMode","annotUnderMouse","transparentBackground","isMeasurementToolWithInfo","isSmallAnnotation","shouldShowCustomOverlay","overlayElement","TouchEvent","minSize","getRectPadding","isMeasurementAnnotation","validate","showInfo","pt1","pt2","pt3","AB","BC","AC","acos","keyTitleMap","isImperialMarksEnabled","scaleFrom","scaleTo","keyDisplayNameMap","getAngleInRadians","End","getIPathAnnotationPts","pts","pt","customOverlay","renderTitle","renderScaleRatio","renderValue","renderDeltas","renderAngle","onMouseMove","onAnnotationSelected","isMeasurementTool","shouldShowInfo","syncDraggablePosition","Overlay","transparent","renderOverlay","PageNavOverlay","textInput","pageToGo","isFocused","isCustomPageLabels","enableFadePageNavigation","FadeOut","showNavOverlay","onMouseEnter","onMouseLeave","goToPrevPage","goToNextPage","isLeftPanelDisabled","ConnectedPageNavOverlay","PresetButton","isToolStyleOpen","isNodeFound","componentNode","ignoreClass","correspondingElement","passiveEventSupport","handlersMap","enabledInstances","touchEvents","getEventHandlerOptions","handlerOptions","__outsideClickHandler","__clickOutsideHandlerProp","handleClickOutside","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","testPassiveEventSupport","eventTypes","excludeScrollbar","findHighest","composed","composedPath","outsideClickIgnoreClass","disableOnClickOutside","getRef","instanceRef","wrappedRef","getClass","HorizontalDivider","ColorPaletteHeader","newPalette","disableSeparator","isTextColorPaletteDisabled","isBorderColorPaletteDisabled","isFillColorPaletteDisabled","palette","pallette","ColorPalette","onStyleChange","hasPadding","overridePalette","overridePalette2","allowTransparent","transparentIcon","strokeLinecap","padding","setColor","cell","border","ColorPalettePicker","getHexColor","openColorPicker","handleColorOnClick","openDeleteModal","colorToBeDeleted","setColorToBeDeleted","enableEdit","disableTitle","colorsAreHex","ColorPickerModalRedux","ColorPalettePickerRedux","modifyColorMode","setModifyColorMode","activeCustomColor","handleColorChange","givenColor","addNew","updatedCustomColors","newColorHex","newColorExist","selectedColorindex","newProps","getCircleRadius","Slider","sliderSvg","isMouseDown","convertRelativeCirclePositionToValue","getRelativeCirclePosition","withInputField","isEiditingInputField","onSliderChange","localValue","circlePosition","isUsingMouse","lineStart","lineEnd","svgLeft","getLocalValue","inputFieldType","getDisplayValue","displayValue","onInputChange","onInputKeyDown","onInputBlur","onInputFocus","displayProperty","getCirclePosition","circleCenter","getInputElement","renderSlider","ConnectedSlider","__rest","tabObservable","AccessibleFocusObservable","_handleFirstTab","_setIsUserTabbing","_tabToMouseListener","_handleFirstMouse","_mouseToTabListener","_subscribers","_isUserTabbing","subscriber","_unsubscribe","_removeAllListeners","isUserTabbing","useFocus","focused","setFocused","handleOnFocus","handleOnBlur","currentId","getStringId","useID","Check","xmlns","ChevronDown","Close","Hide","Info","MultiPage","RotateRight","Show","SinglePage","Success","svgProps","iconClass","IconChild","Choice","leftLabel","radio","isSwitch","disabledLabelChange","setIsUserTabbing","useAccessibleFocus","choiceID","setChecked","choiceClass","inputClass","checkClass","labelClass","labelElement","htmlFor","RadioObservable","_trigger","MeasurementUnits","Annotation","MEASUREMENT_TOOL_NAMES","ARC_MEASUREMENT","ARC_MEASUREMENT2","ARC_MEASUREMENT3","ARC_MEASUREMENT4","DISTANCE_MEASUREMENT","DISTANCE_MEASUREMENT2","DISTANCE_MEASUREMENT3","DISTANCE_MEASUREMENT4","PERIMETER_MEASUREMENT","PERIMETER_MEASUREMENT2","PERIMETER_MEASUREMENT3","PERIMETER_MEASUREMENT4","AREA_MEASUREMENT","AREA_MEASUREMENT2","AREA_MEASUREMENT3","AREA_MEASUREMENT4","RECTANGULAR_AREA_MEASUREMENT","RECTANGULAR_AREA_MEASUREMENT2","RECTANGULAR_AREA_MEASUREMENT3","RECTANGULAR_AREA_MEASUREMENT4","CLOUDY_RECTANGULAR_AREA_MEASUREMENT","CLOUDY_RECTANGULAR_AREA_MEASUREMENT2","CLOUDY_RECTANGULAR_AREA_MEASUREMENT3","CLOUDY_RECTANGULAR_AREA_MEASUREMENT4","ELLIPSE_MEASUREMENT","ELLIPSE_MEASUREMENT2","ELLIPSE_MEASUREMENT3","ELLIPSE_MEASUREMENT4","PRIME_FT","DOUBLE_PRIME_IN","decimalPrecision","fractionPrecision","MeasurementOption","currScaleFrom","currUnitFrom","currScaleTo","currUnitTo","currPrecision","newScale","enableSnapping","SnapMode","e_DefaultSnapMode","POINT_ON_LINE","setSnapMode","onSnapModeChange","lang","getLanguage","maximumFractionDigits","onScaleChange","inputMode","formatValue","isScaleInputDisabled","isPrecisionInputDisabled","hideSnapModeCheckbox","unitFromOptions","unitToOptions","precisionOptions","IN","FT_IN","getPrecisionByUnit","renderScaleInput","onUnitChange","onPrecisionChange","onSnappingChange","StyleOption","borderStyle","onClickItem","images","currentSelectionKey","translationPrefix","getTranslationLabel","isFont","Dropdown","buttonRef","setIsOpen","onToggle","dropdownItems","optionIsSelected","selectedItem","onClickDropdownItem","getDropdownStyles","maxheight","imageKeys","selectedImageIndex","getImageIndexFromKey","buttonStyle","scrollItemsStyle","imageArray","imageIndex","startLineStyles","endLineStyles","LineStyleOptions","onLineStyleChange","StartLineStyle","selectedStartLineStyle","setSelectedStartLineStyle","EndLineStyle","selectedEndLineStyle","setSelectedEndLineStyle","isMouseInLowerHalfOfWindow","setIsMouseInLowerHalfOfWindow","handleMouseClick","dropdownContainerClass","fontUnit","onFontSizeChange","maxFontSize","incrementMap","BREAKS_AND_INCREMENT","48","FontSizeDropdown","iconButtonRef","dropdownDivRef","sizes","setSizes","setError","setOpen","currSize","setCurrSize","isValidNum","getIncrement","greaterThanLast","curr","startArr","higherIncrement","higher","getNewNumbers","itemHeight","divHeight","itemDistance","newSize","checkValidity","validFontSize","onSelectCapture","TextStylePicker","onPropertyChange","onRichTextStyleChange","isRedaction","supportedFonts","font","Font","FontSize","setBold","setItalic","setUnderline","setStrikeout","textAlign","TextAlign","changeXAlign","xAlign","textVerticalAlign","TextVerticalAlign","changeYAlign","yAlign","fontSizeProps","newUnderline","newStrikeout","LabelTextEditor","overlayText","OverlayText","curOverlayText","setCurOverlayText","StylePopup","isFreeText","isMeasure","isOpacitySliderDisabled","isStrokeThicknessSliderDisabled","isFontSizeSliderDisabled","sliderProps","strokeThickness","placeOfDecimal","sliders","slider","sliderComponents","isColorPaletteDisabled","isStyleOptionDisabled","isTextStyleContainerActive","isColorsContainerActive","isLabelTextContainerActive","isLabelTextContainerDisabled","showLineStyleOptions","textMenuItems","openTextMenuItem","openLabelText","openTextStyle","openColors","Popup","showTextStyle","showColorsMenu","showColorPicker","showLabelText","showSliders","useMobileMinMaxWidth","renderSliders","isStylePopupDisabled","ConnectedStylePopup","SignatureRowContent","altText","SignatureStylePopup","displayedSignatures","isSignatureDeleteButtonDisabled","signatureTool","setSignature","hasLocation","addSignature","showPreview","indexOfDisplayedSignature","savedSignatureIndex","displayedSignatureIndex","deleteSavedSignature","hidePreview","deleteSignature","getToolNamesByTheSamePreset","setStyles","getOpenedWarningModal","getOpenedColorPicker","TabsContext","Tabs","isSelected","propsToInject","isTabSelected","TabHeader","TabPanel","isTabPanelSelected","TOOL_NAME","RubberStampOverlay","stamps","stampTool","setRubberStamp","rubberStamps","customImgs","deleteCustomStamp","openCustomSampModal","ConnectedRubberStampOverlay","ToolStylePopup","toolsOverlays","pageNavOverlays","warningModal","colorPicker","openedModal","clickedOnToolsOverlay","toolsOverlay","clickedONPageNavOverlay","pageNavOverlay","clickedONCreateStampModal","pageModal","setToolStyles","richTextStyle","activeToolStyle","activeToolRichTextStyle","newTextDecoration","currentTextDecoration","addUnderLine","removeUnderLine","addLineThrough","removeLineThrough","getTextDecoration","popup","isEllipseMeasurementTool","handleStyleChange","handleRichTextStyleChange","handleLineStyleChange","ConnectedToolStylePopup","toolButtonDataElement","isTablet","isDesktop","ToolsDropdown","SelectedSignatureRow","displayedSignature","SelectedRubberStamp","prevLanguage","usePrevious","onStampsAdded","preselectRubberStamp","SelectedStamp","ToolsOverlay","isStylingOpen","siblingWidth","handleWindowResize","clickedOnAnotherToolGroupButton","noPresets","ToolsOverlayContainer","shadow","ConnectedToolsOverlay","zoomLevel","getActualZoomLevel","zoomFactors","MarqueeZoomTool","setMaxZoomLevel","getAnnotationPopupPositionBasedOn","calcAnnotationPopupPosition","getAnnotationPosition","getPopupDimensions","getAnnotationPageCoordinates","getPageNumber","topLeft","convertPageCoordinatesToWindowCoordinates","bottomRight","isNote","noteAdjustment","getSelectedTextPosition","allQuads","getSelectedTextPageNumber","startPageNumber","endPageNumber","getSelectedTextPageCoordinates","pageNumbers","y3","endPageQuads","getTopAndBottom","quad","quadLeft","quadRight","getLeftAndRight","pageToWindow","annotationPosition","popupDimension","calcPopupTop","calcPopupLeft","calcTextPopupPosition","selectedTextPosition","scrollContainer","boundingBox","visibleRegion","annotTop","annotBottom","ReaderModeStylePopup","popupRef","annotPosition","viewerRect","getReaderModePopupPositionBasedOn","ReaderModeViewer","WebViewerReadingMode","wvReadingMode","pageNumberUpdateHandler","editStyleHandler","onEditStyle","setAddAnnotConfig","goToPage","pageWidth","readerModeElement","TextHighlightCreateTool","AnnotationType","Highlight","TextUnderlineCreateTool","TextStrikeoutCreateTool","Strikeout","TextSquigglyCreateTool","Squiggly","annotType","getAnnotTypeFromToolMode","setAnnotStyleCb","doneSetAnnotColorCb","getColorMapKey","showStylePopup","originalMaxZoom","originalEnableFadePageNavigation","updateMaxZoom","renderDocument","handleOpacityChange","handleStylePopupClose","isToLeftOfActive","closeTab","setActive","onDragOver","onDragLeave","setDisabled","HoverTab","FileInputPanel","onFileSelect","acceptFormats","setExtension","FilePickerPanel","onFileProcessed","setIsDragging","setErrorMessage","SupportedFileFormats","CLIENT","handleFileDrop","processedFile","mergeDocuments","sourceArray","nextCount","newDocument","newDocumentPageCount","pageIndexToInsert","insertPages","onDragEnter","onDrop","onDragExit","accept","OpenFileModal","setSrc","setFilename","setSize","handleAddTab","_extension","_filename","useDb","MAX_FILE_SIZE","addTab","modalClass","FileModal","extensionRegExp","handleFileChange","mimeTypeToExtension","handleURLChange","SERVER","uniqueArr","urlError","fileError","extensionError","OpenFileModalContainer","TabsHeader","setDragging","dragIndex","setDragIndex","dropTarget","setDropTarget","hovering","setHovering","hoveredTab","currTabs","breakpoint","onDragOverHoverTab","activeIndex","effectAllowed","moveLeft","onDragEnd","renderedTabs","deleteTab","additionalTabs","DocumentContainer","isRightPanelOpen","isMouseWheelZoomEnabled","wheelToZoom","shouldGoUp","shouldGoDown","wheelToNavigatePages","pageUp","pageDown","showPageNavigationOverlay","debouncedHidePageNavigationOverlay","hidePageNavigationOverlay","isSearchOverlayOpen","handleResize","updateContainerWidth","onWheel","updateContainerSize","showAndFadeNavigationOverlay","documentContentContainerWidthStyle","documentContainerClassName","isHeaderOpen","getClassName","documentClassName","showPageNav","onTransitionEnd","pageNavOnMouseEnter","pageNavOnMouseLeave","ConnectedDocumentContainer","LeftPanelTabs","activePanel","isLeftPanelTabsDisabled","disabledCustomPanelTabs","calculateSizeAndPositionDataAndUpdateScrollOffset","createCallbackMemoizer","updateScrollIndexHelper","ArrowKeyStepper","_this$_getScrollState","_getScrollState","scrollToColumnPrevious","scrollToRowPrevious","_this$_getScrollState2","_updateScrollState","_this$_getScrollState3","_onKeyDown","onScrollToChange","AutoSizer","disableHeight","disableWidth","_parentNode","newHeight","newWidth","autoSizer","_autoSizer","_detectElementResize","_onResize","outerStyle","childParams","CollectionView","cellLayoutManager","_onSectionRenderedMemoizer","getLastRenderedIndices","scrollPosition","getScrollPositionForCell","cellIndex","_setScrollPosition","_enablePointerEventsAfterDelay","isScrollingChange","_cellLayoutManager$ge","totalHeight","totalWidth","_scrollbarSizeMeasured","_calculateSizeAndPositionDataOnNextUpdate","_updateScrollPositionForScrollToCell","_invokeOnSectionRenderedHelper","_cellLayoutManager$ge2","horizontalOverscanSize","verticalOverscanSize","_this$state3","_lastRenderedCellCount","_lastRenderedCellLayoutManager","calculateSizeAndPositionData","_cellLayoutManager$ge3","cellRenderers","collectionStyle","Section","_indexMap","_indices","SectionManager","sectionSize","_sectionSize","_cellMetadata","getSections","getCellIndices","sectionXStart","sectionXStop","sectionYStart","sectionYStop","sectionX","sectionY","cellMetadatum","addCellIndex","_ref$align","cellOffset","Collection","_lastRenderedCellIndices","_isScrollingChange","_setCollectionViewRef","_collectionView","recomputeCellSizesAndPositions","cellSizeAndPositionGetter","cellMetadata","sectionManager","registerCell","_sectionManager","_height","_width","cellGroupRenderer","getCellMetadata","cellRendererProps","ColumnSizer","columnMaxWidth","columnMinWidth","_registeredChild","safeColumnMinWidth","safeColumnMaxWidth","adjustedWidth","getColumnWidth","InfiniteLoader","_loadMoreRowsMemoizer","_onRowsRendered","autoReload","_doStuff","_lastRenderedStartIndex","_lastRenderedStopIndex","unloadedRanges","loadMoreRows","unloadedRange","lastRenderedStartIndex","lastRenderedStopIndex","recomputeSize","recomputeRowHeights","forceUpdateReactVirtualizedComponent","isRowLoaded","minimumBatchSize","rangeStartIndex","rangeStopIndex","potentialStopIndex","_index","firstUnloadedRange","_index2","scanForUnloadedRanges","squashedUnloadedRanges","_loadUnloadedRanges","registeredChild","_GEP","_GEA","_GTP","_GTA","_LTP","_LTA","_LEP","_LEA","_EQP","_EQA","IntervalTreeNode","leftPoints","rightPoints","rebuild","intervals","ntree","createIntervalTree","rebuildWithInterval","rebuildWithoutInterval","reportLeftRange","reportRightRange","reportRange","compareNumbers","compareBegin","compareEnd","leftIntervals","rightIntervals","centerIntervals","IntervalTree","weight","queryPoint","queryInterval","tproto","PositionCache","defaultCellHeight","unmeasuredCellCount","tallestColumnSize","renderCallback","_intervalTree","_leftMap","columnSizeMap","_columnSizeMap","columnHeight","Masonry","eventScrollTop","_getEstimatedTotalHeight","_debounceResetIsScrolling","_positionCache","_invalidateOnUpdateStartIndex","_invalidateOnUpdateStopIndex","_populatePositionCache","_checkInvalidateOnUpdate","_invokeOnScrollCallback","_invokeOnCellsRenderedCallback","_debounceResetIsScrollingId","cellMeasurerCache","overscanByPixels","rowDirection","estimateTotalHeight","shortestColumnSize","measuredCellCount","_style","batchSize","_startIndex","_stopIndex","_debounceResetIsScrollingCallback","estimatedColumnCount","_onScrollMemoized","_startIndexMemoized","_stopIndexMemoized","onCellsRendered","cellPositioner","_cellPositioner","CellMeasurerCacheDecorator","_cellMeasurerCache","_columnIndexOffset","_rowIndexOffset","_params$columnIndexOf","columnIndexOffset","_params$rowIndexOffse","rowIndexOffset","clearAll","MultiGrid","showHorizontalScrollbar","showVerticalScrollbar","_bottomLeftGrid","_bottomRightGrid","fixedRowCount","fixedColumnCount","scrollInfo","_topLeftGrid","_topRightGrid","_fixedColumnCount","_fixedRowCount","_maybeCalculateCachedStyles","_deferredMeasurementCacheBottomLeftGrid","_deferredMeasurementCacheBottomRightGrid","_deferredMeasurementCacheTopRightGrid","_ref7$columnIndex","_ref7$rowIndex","_ref8$columnIndex","_ref8$rowIndex","adjustedColumnIndex","adjustedRowIndex","_leftGridWidth","_topGridHeight","_this$props7","_this$props8","_prepareForRender","_this$state4","_containerOuterStyle","_containerTopStyle","_renderTopLeftGrid","_renderTopRightGrid","_containerBottomStyle","_renderBottomLeftGrid","_renderBottomRightGrid","_getTopGridHeight","leftGridWidth","_getLeftGridWidth","topGridHeight","resetAll","_this$props9","enableFixedColumnScroll","enableFixedRowScroll","styleBottomLeftGrid","styleBottomRightGrid","styleTopLeftGrid","styleTopRightGrid","sizeChange","_lastRenderedHeight","_lastRenderedWidth","leftSizeChange","_lastRenderedColumnWidth","_lastRenderedFixedColumnCount","topSizeChange","_lastRenderedFixedRowCount","_lastRenderedRowHeight","_lastRenderedStyle","_lastRenderedStyleBottomLeftGrid","_bottomLeftGridStyle","_lastRenderedStyleBottomRightGrid","_bottomRightGridStyle","_lastRenderedStyleTopLeftGrid","_topLeftGridStyle","_lastRenderedStyleTopRightGrid","_topRightGridStyle","hideBottomLeftGridScrollbar","additionalRowCount","_getBottomGridHeight","gridWidth","bottomLeftGrid","_cellRendererBottomLeftGrid","classNameBottomLeftGrid","_onScrollTop","_bottomLeftGridRef","_rowHeightBottomGrid","_cellRendererBottomRightGrid","classNameBottomRightGrid","_columnWidthRightGrid","_onScrollbarPresenceChange","_bottomRightGridRef","_getRightGridWidth","classNameTopLeftGrid","_topLeftGridRef","hideTopRightGridScrollbar","_this$state5","additionalColumnCount","additionalHeight","gridHeight","topRightGrid","_cellRendererTopRightGrid","classNameTopRightGrid","_onScrollLeft","_topRightGridRef","ScrollSync","defaultHeaderRowRenderer","ASC","DESC","SortIndicator","sortDirection","defaultHeaderRenderer","dataKey","showSortIndicator","defaultRowRenderer","onRowClick","onRowDoubleClick","onRowMouseOut","onRowMouseOver","onRowRightClick","rowData","a11yProps","onContextMenu","Column","cellDataGetter","cellData","defaultSortDirection","headerRenderer","Table","scrollbarWidth","_createColumn","_createRow","_ref3$columnIndex","_ref3$rowIndex","_setScrollbarWidth","disableHeader","gridClassName","headerRowRenderer","rowClassName","rowStyle","availableRowsHeight","rowClass","rowStyleObject","_cachedColumnStyles","flexStyles","_getFlexStyleForColumn","_getHeaderColumns","onColumnClick","_column$props","columnData","headerOnClick","headerOnKeyDown","headerTabIndex","headerAriaSort","headerAriaLabel","headerClassName","headerStyle","onHeaderClick","_column$props2","disableSort","sortEnabled","ReactVirtualized__Table__sortableHeaderColumn","renderedHeader","newSortDirection","rowGetter","flattenedStyle","_getRowHeight","customStyle","flexValue","_createHeader","getScrollbarWidth","mountedInstances","originalBodyPointerEvents","disablePointerEventsTimeoutId","enablePointerEventsIfDisabled","enablePointerEventsAfterDelayCallback","__resetIsScrolling","onScrollWindow","maximumTimeout","enablePointerEventsAfterDelay","scrollElement","__handleWindowScrollEvent","registerScrollListener","unregisterScrollListener","isWindow","getBoundingBox","getDimensions","serverHeight","serverWidth","getPositionOffset","elementRect","containerRect","getScrollOffset","_elementRect","_containerRect","scrollY","scrollX","getWindow","WindowScroller","updatePosition","_positionFromTop","_isMounted","_positionFromLeft","dimensions","_registerResizeListener","prevScrollElement","_unregisterResizeListener","onChildScroll","_onChildScroll","didMount","pageNumbersToExtract","pageCount","finishPromise","pageMap","extractPages","fileName","ex","redactionTypeMap","defaultRedactionTypes","getNewRotation","counterClockwise","PageRotation","E_0","E_90","E_180","E_270","docType","currentRotations","getPageRotations","insertAbove","insertBelow","extractPagesWithAnnotations","deletePages","isModalEnabled","movePagesToBottom","movePagesToTop","noPagesSelectedWarning","keepOpen","createPageRedactions","redactionStyles","pageInfo","Rect","replacePages","pagesToRemove","pagesToReplaceIntoDocument","documentLoadedInViewer","pageCountOfLoadedDocument","pagesToRemoveFromOriginal","PageManipulationOverlayButtonContainer","PageManipulationOverlayButton","selectedPageIndexes","ThumbnailControls","isMoreOptionDisabled","isPageDeletionConfirmationModalEnabled","selectedIndexes","pageThumbnailControlMenuItems","isXod","isOffice","BUTTONS_MAP","isCustomized","occuredButtons","THUMBNAIL","CHECKBOX","Thumbnail","onFinishLoading","onLoad","onRemove","isDraggable","shouldShowControls","thumbnailSize","canLoad","thumbSize","setDimensions","setLoaded","loadTimeout","thumbnailContainer","viewerRotation","childElement","ratio","cssTransform","onPagesUpdated","contentChanged","moved","added","isPageAdded","didPageChange","changedPage","didPageMove","movedPage","isPageRemoved","newPageCount","onRotationUpdated","useDidUpdate","pageLabel","checkboxRotateClass","checkboxToggled","multiSelectionKeyPressed","shiftKeyPressed","updatedSelectedPages","shiftKeyPivot","currSelectMinIndex","currSelectMaxIndex","thumbnailSelectionModes","selectionModes","customInput","pageGroups","pageGroup","isSinglePage","isRangeOfPages","addRangeOfPagesTo","character","getPageString","selectedPageArray","sortedPages","DocumentControls","initialPagesString","pageString","setPageString","previousPageString","setPreviousPageString","enableThumbnailSelectingPages","selectedPagesString","getPageArrayFromString","pageIndexes","updatedString","toggleDocumentControl","srcToMerge","mergeToPage","shouldFireEvent","mergeResults","DOCUMENT_MERGED","ThumbnailsPanel","isThumbnailMergingEnabled","isThumbnailReorderingEnabled","isThumbnailControlDisabled","isThumbnailSliderDisabled","listRef","pendingThumbs","thumbs","afterMovePageNumber","setCanLoad","draggingOverPageIndex","setDraggingOverPageIndex","isDraggingToPreviousPage","setDraggingToPreviousPage","numberOfColumns","setNumberOfColumns","setThumbnailSize","lastTimeTriggered","setLastTimeTriggered","globalIndex","setGlobalIndex","activeThumbRenders","thumbContainer","pageHeight","getThumbnailSize","annotCanvas","getCanvasMultiplier","overridePageRotation","overridePageCanvas","debouncedDraw","onBeginRendering","onFinishedRendering","needsMoreRendering","onPageComplete","updatedPagesIndexes","onPageNumberUpdated","scrollToRowHelper","thumbnail","hoverAreaHeight","scrollDown","scrollUp","draggingSelectedPage","pagesToMove","THUMBNAIL_DRAGGED","frameElement","extractedDataPromise","pagesExtracted","externalPageWebViewerFrameId","insertTo","viewerID","mergingDocument","currentPageIndex","otherWebViewerIframe","docToMerge","targetPageNumber","pageNumbersToMove","updatedPagesNumbers","THUMBNAIL_DROPPED","pageNumbersBeforeMove","pagesNumbersAfterMove","numberOfPagesMoved","thumbIsLoaded","thumbIsPending","removeFromPendingThumbs","getPendingThumbIndex","thumbStatus","canvases","renderThumbnails","columnsOfThumbnails","allowPageOperationsUI","thumbIndex","allowDragAndDrop","showPlaceHolder","updateNumberOfColumns","thumbnailHeight","thumbnailAutoScrollAreaStyle","OutlineContext","OutlineUtils","setDoc","setOutlineName","newName","findPDFNetOutline","setTitle","bookmarkEventObject","bookmark","OUTLINE_BOOKMARKS_CHANGED","addRootOutline","createOutline","newOutline","addRootBookmark","addNewOutline","getLastOutline","addNext","findPathInTree","addedOutlinePath","Bookmark","getPage","Destination","createFit","Action","createGoto","setAction","deleteOutline","moveOutlineUp","getPrev","addPrev","changedOutlinePath","moveOutlineDown","getNext","moveOutlineBeforeTarget","targetPath","currTarget","moveOutlineAfterTarget","moveOutlineOutward","getIndent","getParent","moveOutlineOutwardBeforeParent","moveOutlineOutwardBeforeAncestor","ancestorPath","ancestorTarget","moveOutlineInTarget","targetOutline","hasChildren","getLastChild","addChild","moveOutlineInward","getCanMoveState","outward","inward","getOutlineId","getName","getSplitter","getFirstBookmark","childIdx","getFirstChild","rootOutline","isAncestor","parentOutline","pdfnetOutline","OutlineControls","selectedOutlinePath","setSelectedOutlinePath","updateOutlines","canMove","setCanMove","nextIndexRef","outlineUtils","setCanMoveState","nextIndex","registerTarget","addTarget","removeTarget","registerSource","isCallingCanDrop","DropTargetMonitorImpl","internalMonitor","subscribeToStateChange","isOverTarget","getDropResult","getInitialClientOffset","getInitialSourceClientOffset","getClientOffset","getDifferenceFromInitialOffset","compareContext","compareResult","bHasOwnProperty","valueA","valueB","throwIfCompositeComponentElement","wrapConnectorHooks","hooks","wrappedHooks","hook","wrappedHook","elementOrNode","cloneWithRef","wrapHookToRecognizeElement","setRef","newRef","previousRef","isRef","TargetConnector","clearDropTarget","dropTargetOptions","dropTargetRef","dropTargetNode","reconnect","didChange","didHandlerIdChange","didDropTargetChange","didOptionsChange","disconnectDropTarget","handlerId","lastConnectedHandlerId","lastConnectedDropTarget","lastConnectedDropTargetOptions","unsubscribeDropTarget","connectDropTarget","newHandlerId","dropTargetOptionsInternal","getDecoratedComponent","currentRef","decoratedRef","isValidType","allowArray","Disposable","isDisposed","dispose","isDisposable","CompositeDisposable","disposables","shouldDispose","currentDisposables","SerialDisposable","old","decorateHandler","DecoratedComponent","createHandler","createMonitor","createConnector","registerHandler","containerDisplayName","collect","_options$arePropsEqua","arePropsEqual","Decorated","DragDropContainer","getCurrentState","disposable","receiveProps","currentType","handleChange","receiveType","handlerMonitor","handlerConnector","_registerHandler2","unregister","receiveHandlerId","handlerIds","setDisposable","_jsx","receiveDragDropManager","_this2$handlerConnect","_item$$$typeof","isRefForwardingComponent","getBackend","hoistStatics","ALLOWED_SPEC_METHODS","TargetImpl","spec","canDrop","createTargetFactory","SourceConnector","dragSource","clearDragSource","dragSourceOptions","dragSourceRef","dragSourceNode","reconnectDragSource","clearDragPreview","dragPreviewOptions","dragPreviewRef","dragPreviewNode","reconnectDragPreview","dragSourceOptionsInternal","dragPreviewOptionsInternal","didConnectedDragSourceChange","didDragSourceOptionsChange","disconnectDragSource","lastConnectedDragSource","lastConnectedDragSourceOptions","dragSourceUnsubscribe","connectDragSource","didConnectedDragPreviewChange","didDragPreviewOptionsChange","disconnectDragPreview","lastConnectedDragPreview","lastConnectedDragPreviewOptions","dragPreviewUnsubscribe","connectDragPreview","isCallingCanDrag","isCallingIsDragging","DragSourceMonitorImpl","canDragSource","isDraggingSource","getTargetIds","isSourcePublic","subscribeToOffsetChange","REQUIRED_SPEC_METHODS","SourceImpl","canDrag","globalMonitor","createSourceFactory","ItemTypes","DropLocation","OutlineEditPopup","setIsEditingName","containerRef","triggerButton","fullIndex","OutlineTextInput","onEnter","onEscape","isDraggedUpwards","isDraggedDownwards","outlineEditingEnabled","Outline","isOutlineSelected","setIsAddingNewOutline","isAddingNewOutline","isExpanded","setIsExpanded","isEditingName","showHoverBackground","setShowHoverBackground","elementRef","getNode","handleClickExpand","handleArrowKeyPress","handleOutlineClick","changeOutlineName","getChildren","editable","borderTop","OutlineEditButton","onPopupOpen","onPopupClose","DropOutine","createTarget","DropTarget","dragSourceState","outlineComponentInstance","hoverIndex","dropTargetBoundingRect","dropTargetYMidPoint","dropTargetClientY","dropLocation","DRAG_OUTLINE","draggedOutline","DROP_OUTLINE","dropTargetState","isOver","shallow","createSource","DragSource","OutlinesPanel","isMultiSelectionMode","nextPathRef","nextPath","generalMoveOutlineAction","dragOutline","dropOutline","moveDirection","dragPath","dropPath","DndProvider","TouchBackEnd","BookmarkOutlineContextMenuPopup","anchorButton","onClosePopup","onRenameClick","onSetDestinationClick","onDeleteClick","defaultLabel","isAdding","setSelected","onSave","isEditing","setIsEditing","isDefault","setIsDefault","bookmarkText","setBookmarkText","isContextMenuOpen","setContextMenuOpen","clearSingleClick","setClearSingleClick","onSaveBookmark","onCancelBookmark","BookmarksPanel","isAddingNewBookmark","setAddingNewBookmark","setMultiSelectionMode","selectingBookmarks","setSelectingBookmarks","bm","onRemoveBookmarks","confirmationWarning","updateLayerVisibililty","layerToUpdate","newVisibililtyState","newLayer","visible","prevVisibleState","updateChildrenDisabledState","parentLayer","newParentLayer","childLayer","newChildLayer","updateChildrenVisibilityState","optionalText","layer","layerUpdated","Layer","setExpanded","hasSubLayers","tooltipContent","isLabel","subLayer","modifiedSubLayer","LayersPanel","updatedLayer","newLayers","onLayerUpdated","LayersPanelRedux","setLayersArray","refreshAll","updateView","reduxProps","updatedLayers","initialScrollTop","VirtualizedList","setOffset","dimension","setDimension","prevWindowHeight","measureAllRows","forceUpdateGrid","windowResizeHandler","_resize","NormalList","parentRect","NoteContext","throwUnhandledCaseError","theValue","HtmlTag","cfg","whitespaceRegex","innerHtml","setTagName","getTagName","setAttr","attrValue","getAttrs","getAttr","setAttrs","setClass","cssClass","addClass","newClass","classAttr","newClasses","removeClass","removeClasses","hasClass","setInnerHTML","setInnerHtml","getInnerHTML","getInnerHtml","toAnchorString","attrsStr","buildAttrsStr","attrsArr","AnchorTagBuilder","newWindow","createAttrs","processAnchorText","getAnchorText","getAnchorHref","createCssClass","returnClasses","cssClassSuffixes","getCssClassSuffixes","anchorText","doTruncate","truncateLength","truncateLocation","truncateLen","ellipsisChars","ellipsisLengthBeforeParsing","ellipsisLength","buildUrl","urlObj","buildSegment","remainingAvailableLength","remainingAvailableLengthHalf","availableLength","urlSub","parse_url","matchQuery","pathAndQuery","truncateSmart","truncateMiddle","ellipsis","truncateEnd","Match","__jsduckDummyDocProp","matchedText","tagBuilder","getMatchedText","getOffset","buildTag","urlSuffixRegex","EmailMatch","getEmail","HashtagMatch","serviceName","hashtag","getServiceName","getHashtag","MentionMatch","mention","getMention","PhoneMatch","plusSign","getPhoneNumber","getNumber","UrlMatch","urlMatchType","protocolUrlMatch","protocolRelativeMatch","stripPrefix","www","stripTrailingSlash","decodePercentEncoding","schemePrefixRegex","wwwPrefixRegex","protocolRelativeRegex","protocolPrepended","getUrlMatchType","getUrl","stripProtocolRelativePrefix","stripSchemePrefix","stripWwwPrefix","removeTrailingSlash","removePercentEncoding","preProcessedEntityAnchorText","Matcher","letterRe","digitRe","nonDigitRe","whitespaceRe","quoteRe","controlCharsRe","alphaCharsStr","alphaCharsAndMarksStr","decimalNumbersStr","alphaNumericCharsStr","alphaNumericAndMarksCharsStr","ipStr","domainLabelStr","getDomainLabelStr","getDomainNameStr","domainNameCharRegex","tldRegex","EmailMatcher","localPartCharRegex","strictTldRegex","parseMatches","noCurrentEmailMatch","CurrentEmailMatch","mailtoTransitions","charIdx","currentEmailMatch","stateNonEmailAddress","stateMailTo","stateLocalPart","stateLocalPartDot","stateAtSign","stateDomainChar","stateDomainHyphen","stateDomainDot","captureMatchIfValidAndReset","beginEmailMatch","prevChar","hasMailtoPrefix","resetToNonEmailMatchState","hasDomainDot","emailAddress","emailAddressNormalized","doesEmailHaveValidTld","UrlMatchValidator","urlMatch","isValidUriScheme","urlMatchDoesNotHaveProtocolOrDot","urlMatchDoesNotHaveAtLeastOneWordChar","isValidIpAddress","containsMultipleDots","uriSchemeMatch","newRegex","hasFullProtocolRegex","ipRegex","stringBeforeSlash","uriSchemeMatchArr","uriSchemeRegex","uriScheme","hasWordCharAfterProtocolRegex","wordCharRegExp","UrlMatcher","matcherRegex","_loop_1","schemeUrlMatch","wwwUrlMatch","wwwProtocolRelativeMatch","tldProtocolRelativeMatch","this_1","matchHasUnbalancedClosingParen","matchHasInvalidCharAfterTld","foundCommonScheme","commonScheme","indexOfSchemeStart","startChar","endChar","numOpenBraces","HashtagMatcher","nonWordCharRegex","phoneMatcherRegex","PhoneMatcher","cleanNumber","contextClear","testMatch","twitterRegex","instagramRegex","soundcloudRegex","tiktokRegex","MentionMatcher","matcherRegexes","parseHtml","onOpenTag","onCloseTag","onText","onComment","onDoctype","noCurrentTag","CurrentTag","currentDataIdx","currentTag","stateData","stateTagOpen","stateEndTagOpen","stateTagName","stateBeforeAttributeName","stateAttributeName","stateAfterAttributeName","stateBeforeAttributeValue","stateAttributeValueDoubleQuoted","stateAttributeValueSingleQuoted","stateAttributeValueUnquoted","stateAfterAttributeValueQuoted","stateSelfClosingStartTag","stateMarkupDeclarationOpen","stateCommentStart","stateCommentStartDash","stateComment","stateCommentEndDash","stateCommentEnd","stateCommentEndBang","stateDoctype","startNewTag","isClosing","isOpening","captureTagName","emitTagAndPreviousTextNode","resetToDataState","textBeforeTag","startIdx","Autolinker","phone","replaceFn","sanitizeHtml","normalizeUrlsCfg","normalizeStripPrefixCfg","normalizeTruncateCfg","textOrHtml","schemeMatches","wwwMatches","tldMatches","POSITIVE_INFINITY","skipTagNames","skipTagsStackCount","textSplit","splitRegex","lastIdx","splitAndCapture","currentOffset_1","textNodeMatches","parseText","compactMatches","removeUnwantedMatches","matchedTextLength","endIdx","removeIdx","getMatchers","numMatchers","textMatches","numTextMatches","newHtml","createMatchReturnVal","replaceFnResult","getTagBuilder","Email","Hashtag","Mention","Phone","Url","_superPropBase","normalCompletion","didErr","attachDataValues","dataAttributes","dataset","MentionBlot","clickHandler","hoverHandler","getClickHandler","getHoverHandler","buildEvent","denotationChar","setDataValues","itemIndex","mentionCharPos","cursorPos","suspendMouseEnter","existingSourceExecutionToken","renderItem","renderLoading","onSelect","mentionDenotationChars","showDenotationChar","allowedChars","minChars","maxChars","isolateCharacter","fixMentionsToQuill","positioningStrategy","defaultMenuOrientation","linkTarget","onOpen","onBeforeClose","listItemClass","mentionContainerClass","mentionListClass","spaceAfterInsert","selectKeys","mentionContainer","onmousemove","onContainerMouseMove","mentionList","onTextChange","onSelectionChange","selectHandler","selectKey","escapeHandler","upHandler","downHandler","abandoned","hideMentionList","prevItem","nextItem","setMentionContainerPosition","scrollItemInView","itemPos","containerTop","containerBottom","hasLinkValue","itemTarget","getItemData","asyncData","programmaticInsert","insertAtPos","highlightItem","stopImmediatePropagation","showMentionList","loadingDiv","mentionChar","searchTerm","removeLoading","initialSelection","onmouseenter","onDisabledItemMouseEnter","onItemMouseEnter","onmouseup","onItemClick","onmousedown","onItemMouseDown","increment","decrement","topPos","containerPos","pageYOffset","leftPos","pageXOffset","setMentionContainerPosition_Fixed","setMentionContainerPosition_Normal","containerHeight","containerRightIsNotVisible","overMentionCharPos","containerBottomIsNotVisible","_overMentionCharPos","mentionCharPosAbsolute","relativeToPos","rightPos","availableSpaceTop","availableSpaceBottom","fitsBottom","fitsTop","startPos","textBeforeCursor","getTextBeforeCursor","_getMentionCharIndex","mentionCharIndex","isolateChar","hasValidMentionCharIndex","textAfter","hasValidChars","getAllowedCharsRegex","sourceRequestToken","renderList","onSomethingChange","idMentionDataMap","allowedTrailingCharacters","mentionLookupCallback","defaultMentionsSearchCallback","imported","handleAnnotationsAdded","handleAnnotationsModified","handleAnnotationsDeleted","newMentions","mentionData","extractMentionDataFromAnnot","mentions","modifiedMentions","deletedMentions","prevMentionData","contentWithoutMentions","currMentionData","prevMentions","currMentions","currMention","prevMention","isSameMention","deltas","formattedMentionTextList","formattedMentionText","markupRegex","plainTextValue","wholeMatch","isValidMention","annotId","nextChar","isEndOfString","getAllowedTrailingCharacters","extractMentionDataFromStr","replyAnnot","origFn","searchTermLowerCase","userValueIncludesSearchTerm","userIdIncludesSearchTerm","userEmailIncludesSearchTerm","globalUserData","mentionModule","mentionsSearchFunction","mentionsManager","getMentionLookupCallback","foundUsers","CommentTextarea","NoteTextarea","canSubmitByEnter","textareaRef","prevHeightRef","boxDOMElement","textareaProps","isSubmittingByEnter","isSubmittingByCtrlEnter","cssStyle","setRichTextStyle","getAttributtes","decoration","setReactQuillContent","getRichTextStyle","textSlice","DARK","LIGHT","handleEdit","closePopup","openPopup","isEditable","isDeletable","NotePopup","notePopupButtonClass","optionsClass","NotePopupContainer","noteIndex","setCanModify","setCanModifyContents","onUpdateAnnotationPermission","passProps","isFreeTextEditingEnabled","getGroupedChildren","NoDelete","openOnInitialLoad","handleStateChange","NoteState","createOnStateOptionButtonClickHandler","annotationState","noteStateButtonClassName","NoteStateContainer","stateAnnotation","displayAuthor","stateMessage","createStateAnnotation","getRootAnnotation","NoteUnpostedCommentIndicatorContainer","pendingEditTextMap","pendingReplyMap","hasUnpostedComment","setHasUnpostedComment","hasUnpostedReply","setHasUnpostedReply","NoteUnpostedCommentIndicator","isUnread","renderAuthorName","isNoteStateDisabled","NoteHeader","authorAndDateClass","noteHeaderClass","NoteTextPreview","linesToBreak","renderRichText","setExpand","previewElementWidth","setPreviewWidth","charsPerLine","setCharsperLine","showPrompt","setShowPrompt","textToDisplay","noteTextPreviewClass","textNodeWidth","textWidth","measureText","getTextWidth","averageCharWidth","NoteTextPreviewContainer","notePanelWidth","NoteContent","isNonReplyNoteRead","onReplyClicked","canCollapseTextPreview","canCollapseReplyPreview","searchInput","onTopNoteContentClicked","customData","highlightSearchInput","renderContents","fontColor","autolinkerContent","highlightResult","contentToRender","strIdx","anchorData","forIdx","contentsToRender","textColor","textAreaValue","thereIsNoUnpostedEdit","handleContentsClicked","noteContentClass","unread","clicked","contentStyle","onTextAreaValueChange","pendingText","textPreview","highlightSearchResult","shouldCollapseAnnotationText","ContentArea","isMentionEnabled","textLength","getFormattedTextFromDeltas","contentClassName","getRichTextSpan","textDecoration","styleIndices","fullText","loweredText","loweredSearchInput","lastFoundInstance","allFoundPositions","regexSafeSearchInput","ReplyArea","onPendingReplyChange","isReplyDisabled","isReplyDisabledForAnnotation","isNoteEditingTriggeredByAnnotationPopup","setPendingReply","isExpandedFromSearch","scrollToSelectedAnnot","setIsFocused","postReply","replyText","annotationHasNoContents","replyAnnotation","createMentionReply","ifReplyNotAllowed","replyAreaClass","handleNoteTextareaChange","LineConnectorPortal","AnnotationNoteConnectorLine","noteContainerRef","lineIsOpen","notePanelIsOpen","isLineDisabled","rightHorizontalLineWidth","setRightHorizontalLineWidth","rightHorizontalLineTop","setRightHorizontalLineTop","rightHorizontalLineRight","setRightHorizontalLineRight","leftHorizontalLineWidth","setLeftHorizontalLineWidth","leftHorizontalLineTop","setLeftHorizontalLineTop","leftHorizontalLineRight","setLeftHorizontalLineRight","annotationBottomRight","annotationTopLeft","getAnnotationLineOffset","annotWidthInPixels","annotHeightInPixels","lineWidth","verticalHeight","verticalTop","Note","setPendingEditText","isNotePanelOpen","containerHeightRef","isEditingMap","setIsEditingMap","unreadReplyIdSet","customNoteSelectionFunction","shouldExpandCommentThread","replies","annotationChangedListener","prevHeight","currHeight","handleNoteClick","hasUnreadReplies","noteClass","repliesClass","showReplyArea","handleReplyClicked","markAllRepliesRead","repliesSetToRead","lastReplyId","ListSeparator","renderContent","currentLeftPanelWidth","currentNotesPanelWidth","isSortContainerDisabled","currentWidth","setNotes","filterEnabled","setFilterEnabled","selectedNoteIds","setSelectedNoteIds","setSearchInput","setScrollToSelectedAnnot","scrollTopRef","VIRTUALIZATION_THRESHOLD","onDocumentUnloaded","_setNotes","Hidden","CROP","isContentEditPlaceholder","toggleFilterStyle","authors","colors","statuses","ANNOTATION_FILTER_CHANGED","singleSelectedNoteIndex","filterNotesWithSearch","authorName","annotationPreview","notesToRender","shouldRender","noteAndReplies","onlyReplyContainsSearchInput","_handleInputChange","setPendingEditTextMap","annotationID","setPendingReplyMap","pendingReply","renderChild","listSeparator","handleNoteClicked","currIds","NoResults","NoAnnotations","existingSelectedNotes","Panel","filterAnnotationButton","getFileAttachments","attachments","fileAttachmentAnnotations","embeddedFiles","NameTree","getIteratorBegin","fileItr","filesIteratorValue","fileObject","fileData","getAsPDFText","FileSpec","createFromObj","fileSpec","stm","FilterReader","filterReader","dataArray","retrievedLength","chunkLength","bufferSubArray","currentArr","renderAttachment","onClickCallback","fileExtension","FileAttachmentPanel","fileAttachments","setFileAttachments","updateFileAttachments","fileAttachmentAnnotsPerPage","fileAttachmentAnnot","VerificationResult","TrustStatus","DigestStatus","ModificationPermissionsStatus","DocumentStatus","verificationResults","VerificationOptions","SecurityLevel","e_compatibility_and_archiving","certificate","addTrustedCertificateFromURL","fileReader","arrayBufferPromise","addTrustedCertificate","trustListDataStructure","supportedDataStructures","fdfDocBuffer","createFromMemoryBuffer","fdf","loadTrustList","getFieldIteratorBegin","fieldIterator","Field","Type","e_signature","DigitalSignatureField","createFromField","digitalSigField","verify","getSDFObj","getObjNum","signer","signTime","documentPermission","isCertification","contactInfo","validAtTimeOfSigning","signerName","issuerField","subjectField","hasCryptographicSignature","signed","getSubFilter","subFilter","SubFilterType","e_adbe_pkcs7_detached","getSignerCertFromCMS","signerCert","getSubjectField","retrievedSubjectField","processX501DistinguishedName","processedSubjectField","e_ETSI_RFC3161","getSignatureName","getContactInfo","getSigningTime","formatPDFNetDate","getLocation","getReason","getDocumentPermissions","getVerificationStatus","verificationStatus","getDocumentStatus","documentStatus","getDigestStatus","digestStatus","getTrustStatus","trustStatus","getPermissionsStatus","permissionStatus","getDigestAlgorithm","digestAlgorithm","getDisallowedChanges","getTypeAsString","objnum","disallowedChanges","validSignerIdentity","e_trust_verified","trustVerificationResultString","timeOfTrustVerificationEnum","trustVerificationTime","hasTrustVerificationResult","getTrustVerificationResult","trustVerificationResult","getResultString","getTimeOfTrustVerificationEnum","getTimeOfTrustVerification","epochTrustVerificationTime","formatDate","getCertPath","certPath","firstX509Cert","getIssuerField","retrievedIssuerField","processedIssuerField","lastX509Cert","getNotBeforeEpochTime","notBeforeEpochTime","getNotAfterEpochTime","notAfterEpochTime","badgeIcon","e_no_error","e_digest_verified","e_digest_verification_disabled","e_no_trust_status","e_unmodified","e_has_allowed_changes","e_permissions_verification_disabled","e_commonName","day","hour","minute","epochTime","setUTCSeconds","toLocaleDateString","weekday","x501DistinguishedNameObject","processedObject","getAllAttributesAndValues","allAttributeAndValues","x501AttributeTypeAndValue","getAttributeTypeOID","objectIdentifier","getRawValue","getStringValue","translateObjectIdentifierBotanOID","objectIdentifierOIDenum","Spinner","badge","SignatureIcon","WidgetLocator","scrollViewContainer","collapsible","Forms","WidgetInfo","verificationType","locatorRect","setLocatorRect","signatureDetailsExpanded","setSignatureDetailsExpanded","TimeMode","jumpToWidget","widget","windowTopLeft","windowBottomRight","titleInteraction","openSignatureModal","e_invalidated_by_disallowed_changes","e_no_permissions_status","renderPermissionStatus","verificationTimeMessage","e_current","e_signing","e_timestamp","renderTrustVerification","SignaturePanel","setFields","showSpinner","setShowSpinner","certificateErrorMessage","setCertificateErrorMessage","setDocument","fieldManager","getFieldManager","getField","renderLoadingOrErrors","ResizeBar","leftDirection","isMouseDownRef","dragMouseMove","PANEL_RESIZED","finishDrag","LeftPanelPageTabsSmall","onReplace","onExtractPages","onDeletePages","LeftPanelPageTabs","onRotateClockwise","onRotateCounterClockwise","onInsertAbove","onInsertBelow","LeftPanelPageTabsRotate","LeftPanelPageTabsContainer","deleteModalEnabled","LeftPanel","getDisplay","maxAllowedWidth","SearchResultListSeparatorPropTypes","currentResultIndex","SearchResultListSeparator","previousIndex","currentListItem","previousListItem","isFirstListItem","isInDifferentPage","listSeparatorText","SearchResultListItemPropTypes","activeResultIndex","onSearchResultClick","SearchResultListItem","ambientStr","resultStrStart","resultStrEnd","resultStr","textBeforeSearchValue","textAfterSearchValue","SearchResultPropTypes","searchStatus","onClickResult","SearchResult","cellMeasureCache","rendererOptions","SearchResultWithContentRectHOC","spinnerStyle","isPanelOpen","isSearchOverlayDisabled","setSearchStatus","executeSearch","selectNextResult","selectPreviousResult","SearchOverlay","searchTextInputRef","caseSensitive","wholeWord","wildcard","clearSearchResult","debouncedSearch","caseSensitiveSearchOptionOnChange","isChecked","wholeWordSearchOptionOnChange","wildcardOptionOnChange","nextButtonOnClick","previousButtonOnClick","numberOfResultsFound","overrideSearchExecutionFn","searchListeners","getSearchListeners","isStillProcessingResults","resultTimeout","SearchMode","PAGE_STOP","CASE_SENSITIVE","WHOLE_WORD","WILD_CARD","REGEX","AMBIENT_STRING","buildSearchModeFlag","doneCallback","hasActiveResultBeenSet","throttleResults","textSearchInitOptions","onResult","onDocumentEnd","searchInProgressCallback","isSearching","searchOptions","searchUp","ambientString","searchTextFullFactory","nextResultIndex","prevResultIndex","SearchOverlayContainer","getQuadCoordinates","x3","x4","y4","getPoints","isSearchResultSame","searchResultA","searchResultB","quadA","quadB","quadACoordinates","quadBCoordinates","useSearch","activeSearchResult","activeSearchResultIndex","setActiveSearchResultIndex","coreSearchResults","newActiveSearchResultIndex","searchResult","newActiveSearchResult","newSearchResults","searchInProgressEventHandler","closeSearchPanel","setActiveResult","SearchPanel","onCloseButtonClick","resultIndex","SearchPanelContainer","clearSearchInputValue","combinedProps","RightPanel","toolDefaultStyleUpdateFromAnnotationPopupEnabled","enableToolDefaultStyleUpdateFromAnnotationPopup","disableToolDefaultStyleUpdateFromAnnotationPopup","isToolDefaultStyleUpdateFromAnnotationPopupEnabled","AnnotationStylePopup","lineStyle","setStartStyle","setEndStyle","richTextStyles","handleSliderChange","handlePropertyChange","DatePicker","onDatePickerShow","dateRef","dateContainerRef","datePicker","createDatePicker","getDateFormat","getDatePicker","CustomizablePopup","onRedactionCompleted","webViewerServerApply","webViewerApply","AnnotationPopup","isAnnotationStylePopupDisabled","popupItems","firstAnnotation","setFirstAnnotation","selectedMultipleAnnotations","setSelectedMultipleAnnotations","isStylePopupOpen","setIsStylePopupOpen","isDatePickerOpen","setDatePickerOpen","isDatePickerMount","setDatePickerMount","hasAssociatedLink","setHasAssociatedLink","shortCutKeysFor3DVisible","setShortCutKeysFor3DVisible","includesFormFieldAnnotation","setIncludesFormFieldAnnotation","stylePopupRepositionFlag","setStylePopupRepositionFlag","getGroupedLinkAnnotations","groupedAnnotation","clickedInNotesPanel","linkAnnotations","setPopupPositionAndShow","onMouseLeftUp","closeAndReset","actionOnOtherAnnotation","onViewFile","metaData","getFileMetadata","fileAttachmentTab","mimeType","elementName","getAnnotationStyles","hasStyle","redactionEnabled","selectedAnnotations","selectedAnnotation","InReplyTo","numberOfSelectedAnnotations","numberOfGroups","canGroup","canUngroup","multipleAnnotationsSelected","isDateFreeTextCanEdit","ShortCutKeysFor3DComponent","toolsWithNoStyling","RADIO_FORM_FIELD","CHECK_BOX_FIELD","toolsThatCantHaveLinks","REDACTION","REDACTION2","REDACTION3","REDACTION4","STICKY","STICKY2","STICKY3","STICKY4","showCommentButton","showEditStyleButton","showRedactionButton","showGroupButton","showCalibrateButton","showFileDownloadButton","showViewFileButton","shouldShowAudioPlayButton","hasAudioData","showLinkButton","show3DShortCutButton","annotationPopup","stylePopupOpen","updateAnnotation","isDatePickerShowed","getContentEditType","ContentEdit","Types","getDocumentContent","linkAnnot","deleteAnnotation","TextPopup","textSelectTool","onSelectionComplete","startQuad","getTextPopupPositionBasedOn","ContextMenuPopup","clickedOnInput","clickedOnTextarea","clickedOnFreeTextarea","clickedOnDocumentContainer","containerBox","editorContainer","cBox","cInfo","pBox","MathSymbolsPicker","onClickHandler","RichTextPopup","isPaletteDisabled","symbolsVisible","setSymbolsVisible","cssPosition","setCssPosition","draggablePosition","setDraggablePosition","setFormat","editorRef","annotationRef","handleSelectionChange","handleTextChange","isAutoSized","getRichTextPopupPosition","handleEditorFocus","handleEditorBlur","TextColor","handleTextFormatChange","currentFormat","formatKey","isModalOpen","_setSaveSignature","disableCreateButton","enableCreateButton","InkSignature","setIt","canvasRef","freeHandPathsRef","annotIdRef","drawn","setDrawn","setSignatureCanvas","clearCanvas","resizeCanvas","resizeCanvasAsyncCall","clearSignatureCanvas","handleFinishDrawing","isEmptySignature","deepCopy","getPaths","pathsCopy","Point","handleColorInputChange","cropImageFromCanvas","pixels","imageData","getImageData","cut","putImageData","TextSignature","setActiveIndex","isDefaultValue","setIsDefaultValue","setFontColor","textDivsRef","textBaseline","clearRect","fillText","drawTextSignature","FONT_SIZE","acceptedFileTypes","fileSize","acceptedFileSize","ImageSignature","imageSrc","setImageSrc","fileInputRef","handleDragLeave","handleDragExit","readFile","fileSizeCheck","containerClass","SignatureModal","createButtonDisabled","setCreateButtonDisabled","clearLocation","createSignature","saveSignatures","FONT_SIZES","WATERMARK_LOCATIONS","CENTER","TOP_LEFT","TOP_RIGHT","TOP_CENTER","BOT_LEFT","BOT_RIGHT","BOT_CENTER","FORM_FIELD_KEYS","DEFAULT_VALS","WATERMARK_API_LOCATIONS","WatermarkModal","locationSettings","previousLocationSettings","preExistingWatermark","addWatermarks","removeWatermarkCreatedByModal","createWatermarks","pageIndexToView","desiredZoomForWidth","desiredZoomForHeight","desiredZoom","canvasContainerRef","fontStyles","isBolded","BOLD","isItalic","ITALIC","isUnderlined","UNDERLINE","watermarks","constructWatermarkOption","modalClosed","currLocationSettings","currSelectedLocation","getCurrentSelectedLocation","initializeLocationSettings","formSubmitted","isColorPaletteVisible","locationKey","locationSetting","currLocation","currLocationSetting","handleWatermarkOnVisibilityChanged","formInfo","onLocationChanged","handleInputChange","getCirclePosn","circlePosn","setColorPaletteVisibility","onColorChanged","resetForm","onOkPressed","FacingCover","FacingCoverContinuous","PrintModal","layoutMode","allPages","LayoutMode","customPages","currentView","allowWatermarkModal","existingWatermarks","pagePromise","closePrintModal","isWatermarkModalVisible","allowDefaultPrintOptions","watermark","isApplyWatermarkDisabled","isPrinting","customPagesLabelElement","setWatermarkModalVisibility","createPagesAndPrint","LoadingModal","ErrorModal","closeErrorModal","shouldTranslate","WarningModal","confirm","secondary","SignatureValidationModal","DigestAlgorithm","typeCapitalized","renderHeader","DocumentPermissions","e_no_changes_allowed","e_formfilling_signing_allowed","e_annotating_formfilling_signing_allowed","e_unrestricted","renderDocumentPermission","e_untrusted","e_trust_verification_disabled","renderTrustStatus","e_corrupt_file","e_unsigned","e_bad_byteranges","e_corrupt_cryptographic_contents","renderDocumentStatus","e_digest_invalid","e_weak_digest_algorithm_but_digest_verifiable","e_no_digest_status","e_unsupported_encoding","renderDigestStatus","e_SHA1","e_SHA256","e_SHA384","e_SHA512","e_RIPEMD160","e_unknown_digest_algorithm","renderDigestAlgorithm","ProgressModal","progressCircle","circle","circumference","baseVal","fraction","parseMeasurementContentsByAnnotation","numberRegex","fractionRegex","pureFractionRegex","CalibrationModal","newDistance","setNewDistance","unitTo","setUnitTo","showError","setShowError","handleLossOfPrecision","getNewScale","currentDistance","currentScale","inputValue","whole","evalFraction","accurateNewScale","LinkModal","tabSelected","urlInput","pageLabelInput","setURL","setPageLabel","newLink","linkPageNumber","StrokeStyle","createLink","linksResults","selectedText","currPageLinks","createHighlightAnnot","groupedAnnots","linksToDelete","addAction","linkAnnotArray","addURLLink","Actions","URI","pageNumbersToDraw","pageNumberToDraw","addPageLink","Dest","GoTo","ContentEditModal","setHideWarning","showWarning","setShowWarning","handleToolModeChange","newTool","oldTool","handleDoubleClickContentBox","updateDocumentContent","TABS_ID","FilterAnnotModal","selectedTab","setAuthors","annotTypes","setAnnotTypes","setColorTypes","setStatusTypes","authorFilter","setAuthorFilter","typesFilter","setTypesFilter","colorFilter","setColorFilter","checkRepliesForAuthorFilter","setCheckRepliesForAuthorFilter","statusFilter","setStatusFilter","filterCount","setFilterCount","ifShowAnnotationStatus","setIfShowAnnotationStatus","similarColorExist","currColors","colorObject","authorsToBeAdded","annotTypesToBeAdded","annotColorsToBeAdded","annotStatusesToBeAdded","includeReplies","typeFilter","type1","type2","FilePickerHandler","CopyTextHandler","aria-hidden","PrintHandler","FontHandler","OverlayItem","buttonName","currentZoomLevel","isMarqueeZoomActive","onClickZoomLevelOption","onClickMarqueeZoom","isMarqueeToolButtonDisabled","ZoomOverlay","zoomValue","ZoomItem","ZoomOverlayContainer","FALLBACK_DATE_TIME_FORMAT","timeFirst","dateTimeFormatToString","useDate","useTime","setEmptyInput","getCustomColorAndRemove","CustomStampForums","updateTimestampLabel","usernameChk","dateChk","dateTime","tmpText","defaultDateTimeFormat","setDateTime","usernameCheckbox","setUsernameCheckbox","dateCheckbox","setDateCheckbox","timeCheckbox","setTimeCheckbox","stampTextInputValue","setStampText","txt","timestampFormat","setTimestampFormat","updateCanvas","subtitle","parameters","canvasParent","drawCustomStamp","dataURL","stampInputLabel","openPicker","isText","handleVisiblityChanged","colorToBeAdded","setTextColor","setBackgroundColor","toolColors","RubberStampCreateTool","setTextColors","setBackgroundColors","deleteColor","newColors","textColors","textColorToBeDeleted","backgroundColors","backgroundColorToBeDeleted","setTextColorToBeDeleted","setBackgroundColorToBeDeleted","handleTextColorChange","handleBackgroundColorChange","formatsList","dateTimeDropdownItems","handleOnClick","newDateTime","newFormat","CreateStampModal","emptyInput","CustomStampModal","createCustomStamp","addCustomStamp","createCustomStampAnnotation","standardStampCount","customStampCount","FileListPanel","getFileThumbnail","onRowKeyDown","ThumbnailCard","currentSrc","selectedPageNumbers","onSelectedPageNumbersChange","onBlurHandler","PageNumberInput","placeHolder","pageNumbersArray","pageNumbersString","FileSelectedPanel","closeThisModal","pageIndicesToReplace","sourceDocument","replacePagesHandler","documentInViewer","currentDocSelectedPageNumbers","setCurrentDocSelectedPageNumbers","selectedThumbnails","setSelectedThumbnails","thumbnails","setThumbnails","isLoading","setIsLoading","completedPages","setCompletedPagesCount","sourceDocumentName","setSourceDocumentName","currentDocumentName","setCurrentDocumentName","sourceDocumentPageCount","setSourceDocumentPageCount","thumbnailPromises","thumbnailPromise","sortedThumbnails","getTruncatedName","documentName","generateThumbnails","getPageNumbersFromSelectedThumbnails","loadedDocumentPageCount","selectedPagesMap","onThumbnailSelected","processText","isFileSelected","isReplaceButtonDisabled","isValidUrlRegex","sampleL","PageReplacementModal","selectableFiles","setSource","selectedDoc","setSelectedDoc","setIsFileSelected","selectedTabInternal","setSelectedTabInternal","srcString","handleSelection","fileProcessedHandler","isSelectBtnDisabled","isFilePanelEnabled","noFile","PageReplacementModalContainer","closePageReplacement","PageReplacementModalRedux","isDOMNode","CustomModalItemPropTypes","disableBackdropClick","disableEscapeKeyDown","CustomModalItem","modalRef","onClickOutsideModal","onKeyDownOutsideModal","CustomModal","closeCustomModalElement","headerRefs","bodyRefs","footerRefs","customModalItem","footer","headerDiv","bodyDiv","footerDiv","createElementsForModal","divRefs","styleString","Model3DModal","setFile","typeOfInput","setTypeOfInput","setBase64","urlInputRadio","fileInputRadio","draw3DAnnotation","model3DAnnotation","set3DData","layerX","layerY","setPageNumber","getExtension","drawModel3DHandler","base64StrGenerator","urlToBase64Str","fileToBase64","urlInputElement","fileInputElement","Model3DModalContainer","close3DModal","Model3DModalRedux","onToolUpdated","messageText","fillWidth","wrapperClassName","padMessageText","rightElement","leftElement","rightIcon","wrapperClass","mainClass","StyleSheet","isSpeedy","speedy","ctr","_tag","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","isImportRule","insertRule","cssRules","toSheet","Sheet","ruleSheet","parents","stylisOptions","stylis","inserted","_insert","stylisPlugins","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","rawClassName","insertStyles","isStringTag","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","p2","handleInterpolation","couldBeSelectorInterpolation","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","cached","labelPattern","stringMode","identifierName","EmotionCacheContext","ThemeContext","typePropName","createEmotionProps","Noop","cssProp","possiblyStyleElement","Emotion","createElementArgArray","classnames","cls","toAdd","ClassNames","applyPrefixToName","getScrollTop","easeOutCubic","animatedScrollTo","animateScroll","isTouchCapable","getMenuPlacement","menuEl","placement","shouldScroll","isFixedPosition","scrollParent","excludeStaticParent","overflowRx","docEl","getScrollParent","defaultState","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","viewHeight","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","coercePlacement","PortalPlacementContext","getPortalPlacement","MenuPlacer","maxMenuHeight","getPlacement","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getUpdatedProps","placerProps","noticeCSS","_ref5$theme","baseUnit","neutral40","noOptionsMessageCSS","loadingMessageCSS","getStyles","innerProps","_Component2","MenuPortal","_super2","appendTo","controlElement","isFixed","getBoundingClientObj","scrollDistance","menuWrapper","keyList","hasProp","exportedEqual","arrA","arrB","dateA","dateB","regexpA","regexpB","_templateObject","baseCSS","_ref3$theme","neutral60","neutral20","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","loadingDotAnimations","insertable","verticalAlign","isRtl","indicator","ownKeys$1","_objectSpread$1","ownKeys$2","_objectSpread$2","isHidden","ownKeys$3","_objectSpread$3","components","removeProps","selectProps","Label","Remove","emotionCx","cropWithEllipsis","ownKeys$4","_objectSpread$4","ClearIndicator","menuIsOpen","DropdownIndicator","DownChevron","CrossIcon","Group","Heading","headingProps","GroupHeading","IndicatorsContainer","indicators","IndicatorSeparator","LoadingIndicator","MenuList","isMulti","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","Option","Placeholder","SelectContainer","SingleValue","ValueContainer","hasValue","safeIsNaN","areInputsEqual","newInputs","lastInputs","resultFn","lastResult","calledOnce","newArgs","diacritics","letters","anyDiacritic","diacriticToBase","diacritic","stripDiacritics","trimString","defaultStringify","DummyInput","in","onExited","appear","emotion","NodeResolver","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","_createSuper$1","_isNativeReflectConstruct$1","activeScrollLocks","ScrollLock","originalStyles","listenerOptions","accountForScrollbars","touchScrollTarget","targetStyle","currentPadding","adjustedPadding","_createSuper$2","_isNativeReflectConstruct$2","_ref$1","_PureComponent","ScrollBlock","getScrollTarget","blurSelectInput","_createSuper$3","_isNativeReflectConstruct$3","ScrollCaptor","isBottom","isTop","scrollTarget","touchStart","cancelScroll","handleEventDelta","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","_this$scrollTarget","isDeltaPositive","availableScroll","shouldCancelScroll","onTouchMove","startListening","stopListening","ScrollCaptorSwitch","_ref$isEnabled","instructionsAriaMessage","isSearchable","tabSelectsValue","valueEventAriaMessage","isOptionDisabled","defaultStyles","clearIndicator","_ref$theme","neutral5","neutral0","borderColor","neutral10","primary","borderWidth","flexWrap","neutral30","dropdownIndicator","groupHeading","indicatorsContainer","alignSelf","indicatorSeparator","_ref4$theme","loadingIndicator","loadingMessage","_ref2$theme","alignToControl","menuGutter","menuList","menuPortal","multiValue","multiValueLabel","textOverflow","multiValueRemove","dangerLight","danger","noOptionsMessage","primary25","WebkitTapHighlightColor","primary50","neutral50","singleValue","valueContainer","defaultTheme","primary75","neutral70","neutral90","_createSuper$4","_isNativeReflectConstruct$4","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","rawInput","_ignoreCase$ignoreAcc","ignoreAccents","matchFrom","candidate","formatGroupLabel","getOptionLabel","getOptionValue","menuShouldBlockScroll","openMenuOnFocus","openMenuOnClick","pageSize","screenReaderStatus","instanceId","Select","_props","ariaLiveSelection","ariaLiveContext","focusedOption","focusedValue","inputIsHidden","menuOptions","selectValue","blockOptionHover","isComposing","clearFocusValueOnUpdate","commonProps","hasGroups","initialTouchX","initialTouchY","inputIsHiddenAfterUpdate","instancePrefix","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","getInputRef","cacheComponents","focusInput","blurInput","actionMeta","onMenuClose","selectOption","isOptionSelected","announceAriaLiveSelection","removeValue","removedValue","clearValue","popValue","lastSelectedValue","classNamePrefix","custom","getElementId","getActiveDescendentId","announceAriaLiveContext","onMenuMouseDown","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","onClearIndicatorMouseDown","onCompositionStart","onCompositionEnd","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","onMenuOpen","onOptionHover","shouldHideSelectedOptions","hideSelectedOptions","isClearable","focusValue","focusOption","buildMenuOptions","_props$inputValue","toOption","onHover","optionId","groupId","_value","_selectValue","newSelectValue","lastProps","_menuOptions","startListeningComposition","startListeningToTouch","getNextFocusedValue","getNextFocusedOption","focusedEl","menuRect","focusedRect","overScroll","stopListeningComposition","stopListeningToTouch","_this$props10","_this$props11","openAtIndex","_this$props12","focusedIndex","nextFocus","_this$props13","getTheme","nextSelectValue","_this$state6","lastFocusedIndex","lastFocusedOption","_this$props14","formatOptionLabel","_this$state7","_this$props15","focusedValueMsg","valueFocusAriaMessage","focusedOptionMsg","optionFocusAriaMessage","resultsMsg","screenReaderMessage","resultsAriaMessage","countOptions","_this$props16","ariaAttributes","_this$commonProps","autoCapitalize","autoCorrect","spellCheck","_this$components","_this$props17","_this$state8","isOptionFocused","_this$props18","_this$props19","_this$components2","_this$components3","_this$state9","_this$props20","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","hasOptions","headingId","_message","menuPlacementProps","menuElement","_ref10","_ref10$placerProps","_this$props21","_value2","constructAriaLiveMessage","_this$components4","_this$props22","getCommonProps","renderLiveRegion","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","defaultInputValue","defaultMenuIsOpen","SelectComponent","compareOption","optionValue","optionLabel","allowCreateWhileLoading","createOptionPosition","formatCreateLabel","isValidNewOption","selectOptions","getNewOptionData","__isNew__","StateManager","callProp","getProp","Creatable","onCreateOption","newOption","valueArray","newOptionData","newActionMeta","CreatableDropdown","textPlaceholder","customStyles","provided","useDragDropManager","DropTargetImpl","useRegisteredDropTarget","connector","useDropTarget","useAccept","_registerTarget2","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","useOptionalFactory","memoDeps","useMonitorOutput","onCollect","_useCollector2","onUpdate","collected","setCollected","updateCollected","useCollector","getHandlerId","useCollectedProps","collector","useConnectDropTarget","useDrop","specArg","useDropTargetConnector","DragSourceImpl","useRegisteredDragSource","useDragSource","useDragType","_registerSource2","useConnectDragSource","useConnectDragPreview","useDrag","useDragSourceConnector","previewOptions","CreatableListItem","onDeleteItem","moveListItem","addItem","hoverBoundingRect","hoverMiddleY","hoverClientY","drag","onChangeHandler","addNewItemOnEnterKey","CreatableList","onOptionsUpdated","draggableItems","setItems","nextId","setNextId","sanitizedOptions","onAddItem","handleDeleteItem","updatedItems","dragItem","itemsWithDraggedElementAtNewPosition","addItemAtIndex","_item","DimensionsInput","onWidthChange","onHeightChange","FormFieldEditPopup","closeFormFieldEditPopup","validationMessage","radioButtonGroups","onOptionsChange","selectedRadioGroup","initialWidth","initialHeight","radioButtonGroup","setRadioButtonGroup","renderTextInput","displayRadioGroups","onSelectInputChange","renderSelectInput","validatedWidth","validateWidth","validatedHeight","validateHeight","useOnFormFieldAnnotationAddedOrSelected","openFormFieldPopup","FormFieldEditPopupContainer","fieldLabels","getFieldLabels","setFieldName","fieldValue","setFieldValue","isMultiLine","setMultiLine","setIsRequired","isMultiSelect","setIsMultiSelect","setIsValid","setRadioButtonGroups","setValidationMessage","formFieldAnnotation","onFormFieldCreationModeStarted","getRadioButtonGroups","getFieldValue","getFieldFlag","READ_ONLY","MULTI_LINE","MULTI_SELECT","dedupedRadioGroups","onFieldNameChange","validatedResponse","mapValidationResponseToTranslation","validationResponse","translationKey","onFieldValueChange","onReadOnlyChange","setFieldFlag","onMultiLineChange","onRequiredChange","onMultiSelectChange","onFieldOptionsChange","setFieldOptions","onCloseRadioButtonPopup","VALUE","RADIO_GROUP","textFields","defaultFields","radioButtonFields","listBoxFields","comboBoxFields","textFieldFlags","signatureFlags","checkBoxFlags","radioButtonFlags","listBoxFlags","comboBoxFlags","renderPopUp","fieldOptions","intent","getFieldOptions","renderComboBoxFormFieldEditPopup","renderFormFieldEditPopup","calculateChange","initialA","checkboardCache","serverCanvas","checkboard","renderers","Alpha","unbindEventListeners","alpha","gradient","VALID_KEY_CODES","EditableInput","handleBlur","blurValue","setUpdatedValue","handleKeyDown","getNumberValue","getArrowOffset","updatedValue","dragLabel","dragMax","getValueObjectWithLabel","arrowOffset","onChangeValue","hideLabel","_h","Hue","_props$direction","zDepth","_ref$styles","passedStyles","Saturation","_container$getBoundin","saturation","bright","renderWindow","getContainerRenderWindow","oldHue","getContrastingColor","stringWithoutDegree","onChangeComplete","handleSwatchHover","onSwatchHover","optionalEvents","Focus","handleFocus","_ref$onClick","_ref$title","_ref$focusStyle","focusStyle","swatch","_ref$className","swatches","float","triangle","hexCode","card","deepPurple","lightBlue","lightGreen","amber","deepOrange","blueGrey","circleSize","circleSpacing","Swatch","ChromeFields","toggleViews","showHighlight","hideHighlight","iconHighlight","disableAlpha","toggles","dot","HEXwrap","HEXinput","HEXlabel","RGBwrap","RGBinput","RGBlabel","Compact","hoverSwatch","borderBottomColor","triangleShadow","HuePointer","material","borderBottom","Hex","divider","fieldSymbols","PhotoshopPointer","triangleBorder","Extend","leftInside","rightInside","backgroundImage","currentColor","new","Photoshop","_props$styles","_props$className","onAccept","PhotoshopFields","single","double","swatchWrap","colorObjOrString","presetColors","activeColor","hexcode","_values","_values2","hsvValue","input2","label2","rgbValue","hslValue","ColorPickerModal","handleChangeSave","handleChangeCancel","selectedColor","setSelectedColor","ColorPickerModalContainer","closeColorPicker","onColorChange","convertedColor","PageInsertionControls","PageInsertionControlsContainer","PageRotationControls","PageRotationControlsContainer","PageManipulationControls","PageManipulationControlsContainer","PageAdditionalControls","moveToTop","moveToBottom","PageAdditionalControlsContainer","CustomPageManipulationOperations","operations","operation","renderIcon","InitialPageManipulationOverlay","pageManipulationOverlayItems","PageManipulationOverlay","PageManipulationOverlayContainer","selectedPages","markPages","redactPages","evenDisabled","renderCanvases","SelectionTypes","PageRedactionModal","selectionType","setSelectionType","setPages","getSelectedPages","canvasContainer","onSwipe","eventTarget","PageRedactionModalContainer","getRedactionStyles","setEvenDisabled","docLoaded","thrush","proc","curry2to1","arg1","curry1to0","tup","always","joinProc","procs","publish","publisher","depot","handleNext","unsub","subscriptions","statefulStream","innerSubject","streamFromEmitter","stream","statefulStreamFromEmitter","combineOperators","operators","pipe","project","defaultComparator","distinctUntilChanged","mapTo","scanner","throttleTime","debounceTime","withLatestFrom","pendingCall","allCalled","bit","prevCalled","duc","combineLatest","emitters","singleton","systemToComponent","systemSpec","requiredPropNames","optionalPropNames","optional","applyPropsToSystem","system","requiredPropName","optionalPropName","buildEventHandlers","currentSubscription","cleanup","propsWithChildren","singletons","buildMethods","usePublisher","useEmitterValue","_useState3","useEmitter","DEBUG","INFO","WARN","ERROR","VIRTUOSO_LOG_LEVEL","logLevel","callbackRef","knownSize","endIndex","virtuosoScroller","viewportType","viewportHeight","scrollerRef","scrollByCallback","scrollBy","scrollToCallback","behavior","scrollContainerState","footerHeight","smoothScrollTargetReached","react18ConcurrentRendering","statefulScrollTop","deviation","scrollingInProgress","et","tt","nt","ot","st","ut","ct","mt","dt","offsetTree","lastSize","ft","sizeTree","groupOffsetTree","groupIndices","ht","vt","St","changed","firstItemIndex","prevSize","totalCount","sizeRanges","defaultItemSize","fixedItemSize","unshiftWith","shiftWith","shiftWithOffset","beforeUnshiftWith","listRefresh","statefulTotalCount","trackItemSizes","itemSize","It","Ct","Tt","topListHeight","wt","xt","atBottom","notAtBottomBecause","offsetBottom","yt","scrollTopDelta","atBottomBecause","jump","prevScrollTop","isAtTop","isAtBottom","atBottomState","atTopStateChange","atBottomStateChange","atBottomThreshold","atTopThreshold","scrollVelocity","lastJumpDueToItemResize","bt","propsReady","Et","scrolledToInitialItem","initialTopMostItemIndex","Ht","Rt","shouldFollow","followOutputBehavior","refreshed","followOutput","Lt","kt","groupCounts","topItemsIndexes","zt","Bt","Ft","Pt","Ot","listBoundary","overscan","fixedHeaderHeight","increaseViewportBy","visibleRange","Mt","topItems","Vt","originalIndex","groupIndex","Ut","At","Wt","Nt","Dt","listState","endReached","startReached","rangeChanged","itemsRendered","Gt","initialItemCount","isSeeking","scrollSeekConfiguration","scrollSeekRangeChanged","jt","topItemCount","Kt","totalListHeight","totalListHeightChanged","Yt","Zt","qt","alignToBottom","paddingTopAddition","Jt","useWindowScroll","customScrollParent","windowScrollContainerState","windowViewportRect","windowScrollTo","$t","Qt","Xt","fixedItemHeight","defaultItemHeight","visibleHeight","visibleWidth","itemContent","groupContent","computeItemKey","headerFooterTag","FooterComponent","HeaderComponent","TopItemListComponent","ListComponent","ItemComponent","GroupComponent","ScrollerComponent","EmptyPlaceholder","ScrollSeekPlaceholder","scrollingStateChange","adjustForPrependedItems","maxHeightCacheSize","HeaderContainer","FooterContainer","ItemContainer","ScrollContainer","GroupContainer","ListContainer","emptyComponent","scrollSeek","overflowAnchor","showTopList","itemWidth","Ge","viewportDimensions","itemDimensions","gridState","itemClassName","listClassName","nn","tn","fixedHeaderContent","TableComponent","TableHeadComponent","TableBodyComponent","TableRowComponent","FillerRow","rn","an","ln","sn","pn","hn","un","cn","mn","vn","gn","borderSpacing","Sn","RedactionPanelContext","RedactionPanelProvider","selectedRedactionItemId","setSelectedRedactionItemId","isRedactionSearchActive","setIsRedactionSearchActive","redactionAnnotations","selectedAnnotationId","RedactionTextPreview","RedactionItem","redactionPreview","onRedactionItemDelete","onRedactionItemSelection","formattedDate","dateAndAuthor","redactionType","CollapsiblePanelGroup","RedactionPageGroup","redactionItems","redactionItem","sortedRedactionItems","RedactionPanel","applyAllRedactions","deleteAllRedactionAnnotations","redactionTypesDictionary","redactionPageMap","setRedactionPageMap","redactionPageNumbers","setRedactionPageNumbers","isTestMode","mapAnnotationToRedactionType","testModeProps","noRedactionAnnotations","redactAllButtonClassName","clearAllButtonClassName","useOnRedactionAnnotationChanged","redactionAnnotationsList","setRedactionAnnotationsList","setRedactionAnnotations","mediaAnnotationTypes","isNotesPanelClosed","isSearchPanelClosed","CreatableMultiSelect","RedactionOption","RedactionSearchMultiSelect","redactionSearchOptions","redactionGroup","isDarkMode","buildSearchOptions","searchTerms","textSearch","RedactionSearchOverlay","setSearchTerms","executeRedactionSearch","textTerm","updatedSearchTerms","multiSearch","searchOptionsMap","searchArray","searchType","searchRegex","multiSearchFactory","RedactionSearchResult","displayResult","displayRedactionSearchResult","searchResultClassname","checkResult","RedactionSearchResultGroup","selectedSearchResultIndexes","setSelectedSearchResultIndexes","groupResultIndexes","allItemsChecked","setAllItemsChecked","allResultsSelected","allSelected","checkAllResults","RedactionSearchResults","redactionSearchResults","onCancelSearch","isProcessingRedactionResults","markSelectedResultsForRedaction","redactSelectedResults","redactionSearchResultPageMap","setRedactionSearchResultPageMap","selectedSearchResultIndexesMap","setSelectedSearchResultIndexesMap","setSelectedIndexes","selectedIndexesMap","redactionSearchResult","noResults","isEmptyList","resultsContainerClass","emptyList","redactAllButtonClass","markAllForRedactionButtonClass","shouldShowResultsCounterOptions","SearchStatus","searchResultIndexMap","resultGroupPageNumbers","renderSearchResults","createRedactionAnnotations","page_num","result_str","defaultRedactionStyles","RedactionSearchResultsContainer","RedactionSearchPanel","clearRedactionSearchResults","useOnRedactionSearchCompleted","setRedactionSearchResults","setIsProcessingRedactionResults","searchPatterns","mapResultToType","resultType","onSearchResultsChanged","mappedResults","getRandomValues","RedactionPanelContainer","closeRedactionPanel","originalApplyRedactions","rnds8","rng","crypto","msCrypto","uuid","byteToHex","rnds","PropertyKeyValuePair","GeneralValuesSection","entities","entity","setIsActive","GroupsContainer","groupOrder","combinedGroups","orderedGroup","orderArray","groupName","addOrderedGroups","HeaderTitle","createDataSet","dataMap","propertySet","removeEmptyRows","combinedMap","dataPoint","checkForEmptyKeys","PropertiesElement","headerName","defaultValues","removeEmptyGroups","createRawValueGroup","defaultItems","groupsItems","combinedGroupMap","generateGroupDataSet","Wv3dPropertiesPanel","closeWv3dPropertiesPanel","propertiesCollection","uuidv4","useOnClickPrepareSoundAnnotation","audio","prepareAudioBlob","AudioPlaybackPopup","autoplay","handleAudioPlaybackError","handleAudioInitializeError","handleCloseAudioPlaybackPopup","isPlayingAudio","setIsPlayingAudio","durationValue","setDurationValue","durationString","setDurationString","currentTimeValue","setCurrentTimeValue","currentTimeString","setCurrentTimeString","audioElementRef","isPlaying","pause","play","getTimeStampStringFromSeconds","totalSeconds","minutes","seconds","audioContext","AudioContext","createMediaElementSource","destination","playAudio","data-testid","onLoadedMetadata","timeStampString","onTimeUpdate","onEnded","AudioPlaybackPopupContainer","draggableRef","closeAudioPlaybackPopup","onSoundAnnotationDeleted","renderAudioPlaybackPopup","onItemSelected","selectedItemStyle","Selector","optionSelected","autoTrim","supportedUnits","autoTrimOptions","onDimensionChange","autoTrimActive","setAutoTrimActive","onAutoTrimChange","resizeInput","decimalSize","DocumentCropPopup","cropAnnotation","cropMode","onCropModeChange","closeDocumentCropPopup","applyCrop","isCropping","isPageRotated","redrawCropAnnotations","onSelectedPagesChange","handlePageNumbersChanged","handlePageNumberError","setPageNumberError","timeOutWhileTyping","cropNames","unitConversions","setUnit","autoTrimDimensions","setAutoTrim","isCropDimensionsContainerActive","setCropDimensionsContainerActive","toggleCropDimensions","convertUnitsToPt","convertPtToUnits","unitToConvertTo","truncateInput","specialChars","setYOffset","setXOffset","onCropAnnotationChanged","getY","getX","handleButtonPressed","openCropConfirmationWarning","openCropCancellationWarning","cancellationWarning","pageNumberError","validateInput","setY","setX","useOnCropAnnotationChangedOrSelected","openDocumentCropPopup","setCropAnnotation","DocumentCropPopupContainer","cropCreateTool","getIsCropping","setIsCropping","elementsToClose","setSelectedPages","getPagesToCrop","CropCreateTool","reenableHeader","toolsHeader","setCropMode","cropPopupRef","popupWidth","popupHeight","cropPopupOffset","setPagesToCrop","getPageRotation","setRect","cropName","multiSelectAnnotations","RotatePopup","InsertPopup","MoreOptionsPopup","LeftPanelOverlayContainer","pt_br","zh_cn","zh_tw","languageToImportLocaleFile","languageRules","setDatePickerLocale","i18nextPromise","DatePickerWidgetAnnotation","datePickerOptions","refreshDatePicker","availableLanguages","LanguageModal","uiLanguage","setUiLanguage","resetLang","tabletBreakpoint","removeEventHandlers","App","timeoutReturn","loadInitialDocument","initialDoc","isMultiDoc","basePath","setBasePath","extensions","prepareMultiTab","externalPath","loadDocumentAndCleanup","messageHandler","VIEWER_LOADED","overlays","LeftPanelOverlay","getDefaultBackendType","wildCardMatch","allowedOrigins","allowedOrigin","wildcardToRegExp","regExpEscape","loadScript","scriptSrc","loadConfig","setIdsForChildren","parentLayerId","isParentDisabled","createNewLayer","layerId","newOCGLayers","currentOCGLayers","layersToSet","onFirstLoad","storeStyle","setActiveToolGroupAndToolsOverlay","deleteReplies","previewsPromise","newAnnotations","oldStrokeThickness","loadPath","addPath","allowMultiLoading","parsePayload","reloadInterval","Backend","allOptions","_readAny","loadUrlLanguages","loadUrlNamespaces","resolvedLoadPath","loadUrl","parseErr","finished","resArray","_this$services","addToolsToDocViewer","AnnotationCreateTextHighlight2","AnnotationCreateTextHighlight3","AnnotationCreateTextHighlight4","AnnotationCreateFreeHand2","FreeHandCreateTool","FREEHAND2","AnnotationCreateFreeHand3","FREEHAND3","AnnotationCreateFreeHand4","FREEHAND4","AnnotationCreateFreeHandHighlight2","FreeHandHighlightCreateTool","FREEHAND_HIGHLIGHT2","AnnotationCreateFreeHandHighlight3","FREEHAND_HIGHLIGHT3","AnnotationCreateFreeHandHighlight4","FREEHAND_HIGHLIGHT4","AnnotationCreateFreeText2","FreeTextCreateTool","FREETEXT2","AnnotationCreateFreeText3","FREETEXT3","AnnotationCreateFreeText4","FREETEXT4","AnnotationCreateDateFreeText2","DateFreeTextCreateTool","DATEFREETEXT2","AnnotationCreateDateFreeText3","DATEFREETEXT3","AnnotationCreateDateFreeText4","DATEFREETEXT4","AnnotationCreateCallout2","CalloutCreateTool","CALLOUT2","AnnotationCreateCallout3","CALLOUT3","AnnotationCreateCallout4","CALLOUT4","AnnotationCreateSticky2","StickyCreateTool","AnnotationCreateSticky3","AnnotationCreateSticky4","AnnotationCreateTextUnderline2","UNDERLINE2","AnnotationCreateTextUnderline3","UNDERLINE3","AnnotationCreateTextUnderline4","UNDERLINE4","AnnotationCreateTextStrikeout2","STRIKEOUT2","AnnotationCreateTextStrikeout3","STRIKEOUT3","AnnotationCreateTextStrikeout4","STRIKEOUT4","AnnotationCreateTextSquiggly2","SQUIGGLY2","AnnotationCreateTextSquiggly3","SQUIGGLY3","AnnotationCreateTextSquiggly4","SQUIGGLY4","AnnotationCreateRectangle2","RectangleCreateTool","RECTANGLE2","AnnotationCreateRectangle3","RECTANGLE3","AnnotationCreateRectangle4","RECTANGLE4","AnnotationCreateEllipse2","EllipseCreateTool","ELLIPSE2","AnnotationCreateEllipse3","ELLIPSE3","AnnotationCreateEllipse4","ELLIPSE4","AnnotationCreatePolygon2","PolygonCreateTool","POLYGON2","AnnotationCreatePolygon3","POLYGON3","AnnotationCreatePolygon4","POLYGON4","AnnotationCreatePolygonCloud2","PolygonCloudCreateTool","POLYGON_CLOUD2","AnnotationCreatePolygonCloud3","POLYGON_CLOUD3","AnnotationCreatePolygonCloud4","POLYGON_CLOUD4","AnnotationCreateLine2","LineCreateTool","LINE2","AnnotationCreateLine3","LINE3","AnnotationCreateLine4","LINE4","AnnotationCreatePolyline2","PolylineCreateTool","POLYLINE2","AnnotationCreatePolyline3","POLYLINE3","AnnotationCreatePolyline4","POLYLINE4","AnnotationCreateArrow2","ArrowCreateTool","ARROW2","AnnotationCreateArrow3","ARROW3","AnnotationCreateArrow4","ARROW4","AnnotationCreateCountMeasurement2","CountMeasurementCreateTool","COUNT_MEASUREMENT2","AnnotationCreateCountMeasurement3","COUNT_MEASUREMENT3","AnnotationCreateCountMeasurement4","COUNT_MEASUREMENT4","AnnotationCreateDistanceMeasurement2","DistanceMeasurementCreateTool","AnnotationCreateDistanceMeasurement3","AnnotationCreateDistanceMeasurement4","AnnotationCreatePerimeterMeasurement2","PerimeterMeasurementCreateTool","AnnotationCreatePerimeterMeasurement3","AnnotationCreatePerimeterMeasurement4","AnnotationCreateAreaMeasurement2","AreaMeasurementCreateTool","AnnotationCreateAreaMeasurement3","AnnotationCreateAreaMeasurement4","AnnotationCreateEllipseMeasurement2","EllipseMeasurementCreateTool","AnnotationCreateEllipseMeasurement3","AnnotationCreateEllipseMeasurement4","AnnotationCreateRectangularAreaMeasurement2","RectangularAreaMeasurementCreateTool","AnnotationCreateRectangularAreaMeasurement3","AnnotationCreateRectangularAreaMeasurement4","TextFormFieldCreateTool2","TextFormFieldCreateTool","TEXT_FORM_FIELD2","TextFormFieldCreateTool3","TEXT_FORM_FIELD3","TextFormFieldCreateTool4","TEXT_FORM_FIELD4","SignatureFormFieldCreateTool2","SignatureFormFieldCreateTool","SIG_FORM_FIELD2","SignatureFormFieldCreateTool3","SIG_FORM_FIELD3","SignatureFormFieldCreateTool4","SIG_FORM_FIELD4","ListBoxFormFieldCreateTool2","ListBoxFormFieldCreateTool","LIST_BOX_FIELD2","ListBoxFormFieldCreateTool3","LIST_BOX_FIELD3","ListBoxFormFieldCreateTool4","LIST_BOX_FIELD4","ComboBoxFormFieldCreateTool2","ComboBoxFormFieldCreateTool","COMBO_BOX_FIELD2","ComboBoxFormFieldCreateTool3","COMBO_BOX_FIELD3","ComboBoxFormFieldCreateTool4","COMBO_BOX_FIELD4","AnnotationCreateCloudyRectangularAreaMeasurement2","CloudyRectangularAreaMeasurementCreateTool","AnnotationCreateCloudyRectangularAreaMeasurement3","AnnotationCreateCloudyRectangularAreaMeasurement4","AnnotationCreateArcMeasurement2","ArcMeasurementCreateTool","AnnotationCreateArcMeasurement3","AnnotationCreateArcMeasurement4","AnnotationCreateArc2","ArcCreateTool","ARC2","AnnotationCreateArc3","ARC3","AnnotationCreateArc4","ARC4","RedactionCreateTool","AnnotationCreateChangeViewTool","ChangeViewCreateTool","CHANGEVIEW","AnnotationCreateChangeViewTool2","CHANGEVIEW2","AnnotationCreateChangeViewTool3","CHANGEVIEW3","AnnotationCreateChangeViewTool4","CHANGEVIEW4","setupDocViewer","DEFAULT_MARGIN","AnnotationCreateCountMeasurement","AnnotationCreateRectangularAreaMeasurement","AnnotationCreateCloudyRectangularAreaMeasurement","AnnotationCreateEllipseMeasurement","AnnotationCreateAreaMeasurement","AnnotationCreatePerimeterMeasurement","AnnotationCreateArcMeasurement","AnnotationCreateArc","AnnotationCreateDistanceMeasurement","AnnotationCreatePolyline","AnnotationCreatePolygonCloud","AnnotationCreatePolygon","AnnotationCreateFreeHandHighlight","AnnotationCreateDateFreeText","AnnotationCreateRedaction2","AnnotationCreateRedaction3","AnnotationCreateRedaction4","setDefaultToolStyle","defaultToolStylesMap","getParsedToolStyles","isKeyColorProperty","setDefaultToolStyles","ToggleZoomOverlay","onZoomUpdated","OverlayContainer","toolbarGroups","toolbarHeaders","ribbonsWidth","setRibbonsWidth","setContainerWidth","hasEnoughCenteredSpace","setHasEnoughCenteredSpace","ribbonsRef","shouldPickTool","toggleFormFieldCreationMode","startFormFieldCreationMode","endFormFieldCreationMode","spaceLeftOfContainer","spaceForLeftHalfOfRibbons","spaceForRibbons","getToolbarTranslationString","toolbarGroupItems","ApplyFormFieldButton","applyFormFields","undoButton","redoButton","isLocalStorageEnabled","titile","textPopup","contextMenuPopup","AnnotationCreateFileAttachment","AnnotationCreateThreeD","FORM_FILL_CROSS","FORM_FILL_CHECKMARK","FORM_FILL_DOT","signatureModal","pageReplacementModal","linkModal","rubberStampTab","filterAnnotModal","displayedSavedSignatures","creditCards","phoneNumbers","emails","customCSS","defaultDisabledElements","fullAPI","preloadWorker","enableOptimizedWorkers","serverUrlHeaders","useSharedWorker","disableI18n","pdfWorkerTransportPromise","officeWorkerTransportPromise","REHYDRATE","REGISTER","autoMergeLevel1","inboundState","originalState","reducedState","createPersistoid","storageKey","defaultSerialize","writeFailHandler","lastState","stagedState","keysToProcess","timeIterator","writePromise","processNextKey","endState","subState","onWriteFail","passWhitelistBlacklist","defaultDeserialize","rawState","serial","warnIfRemoveError","persistReducer","baseReducer","stateReconciler","getStoredState","_persistoid","_purge","_paused","conditionalUpdate","_persist","rehydrated","restState","_sealed","_rehydrate","rehydrate","restoredState","migrate","migratedState","migrateErr","purgeStoredState","_newState","bootstrapped","firstIndex","viewerPersistConfig","buttonGroup","buttonImage","newToolButtonObjects","existingDataElementFiltered","modal","updatedRedactionSearchPatterns","searchReducer","userReducer","documentFile","documentPageNumber","newBookmarks","documentReducer","wv3dPropertiesPanelReducer","PersistGate","persistor","onBeforeLift","handlePersistorState","loading","VIEW","ANNOTATE","SHAPES","MEASURE","FILL_AND_SIGN","FORMS","EMAILS","CREDIT_CARDS","PHONE_NUMBERS","searchListener","newStrategy","addSortStrategy","PopupAPI","_getIndexByDataElement","getItems","createPopupAPI","castStringToArray","dataElementArray","WEBVIEWER_SERVER","OFFICE","IMAGE","bbAnnotManager","serverURL","BlackBoxAnnotationManager","mapExposedSelectors","getSideWindowVisibility","prevPage","expose","methodsToExpose","MenuOverlayAPI","printOptions","cancelLoadCanvas","customAnnotationCheckFunc","registerToolInToolModeMap","registerToolInRedux","customAnnotCheckFunc","updateColorMapInRedux","docIdQuery","did","lowerCaseFirstLetter","SEARCH_UP","optionsForSearchListener","mapPaletteToAnnotationColorProperty","mapAnnotationColorPropertyToPalette","currentOverride","isValidColor","isValidObject","customModal","setCustomModal","customPanel","fitFunction","headerGroups","viewerState","_setIndex","getHeader","_resetIndex","newItem","_getIndexOfElement","_updateItems","translationObject","addResources","reloadResources","setMinZoomLevel","variables","isInsideRoot","isVariableDeclaration","getUrls","onBeforeSend","onSuccess","onComplete","urlArray","urlQueue","isValidCss","isHTML","urlIndex","returnVal","xdr","XDomainRequest","onprogress","getCssData","include","exclude","skipDisabled","useCSSOM","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","cssArray","handleComplete","skipIndices","skipIndex","handleSuccess","cssIndex","sourceUrl","resolveImports","baseUrl","callbackFn","__errorData","__errorRules","importData","parseImportData","absoluteUrls","responseImportData","absoluteRules","responseArray","importText","resolvedCssText","errorData","ignoreRules","getFullUrl$1","oldUrl","newUrl","linkHref","linkRel","isLink","isSkip","isStyle","createHTMLDocument","baseURI","balancedMatch","balanced","maybeMatch","pre","reg","begs","beg","parseCss","preserveStatic","removeComments","msg","comments","cmnts","selectorItems","_selector","hasCommaInQuotes","declaration","at_rule","comment_regexp","declarations","decls","keyframe","vals","at_keyframes","frames","keyframes","at_page","at_page_margin_box","at_fontface","at_supports","supports","at_host","at_media","media","at_custom_m","at_document","at_x","hasVarFunc","balancedMatch$1","hasVarDecl","stylesheet","parseVars","cssData","onWarning","reVarDeclSelectors","stringifyCss","tree","delim","renderMethods","visit","walkCss","transformCss","preserveVars","VAR_FUNC_IDENTIFIER","resolvedValue","resolveValue","fixNestedCalc","newVal","__recursiveFallback","valueData","resolveFunc","unresolvedFallback","isEmptyVarFunc","isNativeSupport","CSS","counters","job","shadowDOM","onlyLegacy","updateDOM","updateURLs","watch","cssComments","cssKeyframes","cssMediaQueries","cssUrls","cssVarDeclRules","cssVarDecls","cssVarFunc","cssVars","variableStore","dom","cssVarsIsRunning","cssVarsObserver","cssVarsSrcNodeCount","debounceTimer","isShadowDOMReady","msgPrefix","handleWarning","handleFinally","getTimeStamp","__benchmark","addMutationObserver","cssVarsDebounced","srcNodes","fixVarNames","srcNode","hasStyleCache","__cssVars","hasStyleChanged","outNodes","outNode","dataGroup","hasVarChange","targetElm","varValue","getPropertyValue","shadowRoot","nodeArray","responseUrl","getFullUrl","isStyleImport","fixRelativeCssUrls","currentVars","nodeCSS","cssTree","resetCssNodes","outCssArray","outNodeArray","hasKeyframesWithVars","outCss","hasCSSVarFunc","outCssNoSpaces","elms","shadowSettings","fixKeyframes","isDisabledAttr","isDisabledSheet","isEnabledMutation","isHrefMutation","isSkipNode","isSrcNode","isValidAttributeMutation","isStyleElm","isOutNode","isValidStyleTextMutation","hasAttr","isStyleWithVars","isValidAddMutation","isElm","orphanNode","isValidRemoveMutation","attributeFilter","animationNameProp","allNodes","keyframeNodes","cssUrl","varObj","reLeadingHyphens","resetDOMVariableStore","resetNodes","previousActiveTheme","previousIsHighContrastMode","isHighContrastMode","updateColors","setVariables","themeVarString","themeVariables","themeVariable","useDefaultElements","dataElementSuffix","otherInstances","instances","CoreControls","unregisterToolInHeader","unregisterToolInRedux","unregisterToolInToolModeMap","headerItem","validateButtonOverrides","customOverlayInfo","alreadySelected","outOfRangePages","pagesToSelect","newActiveResult","overrideSearchExecution","overrideSearchExecutionCallback","overrideSearchExecutionHelper","getPageNavOverlay","enableTextCollapse","disableTextCollapse","enableReplyCollapse","disableReplyCollapse","disableAutoExpandCommentThread","enableAutoExpandCommentThread","previousDisplayMode","enableMultiselect","disableMultiselect","selectPages","unselectPages","getSelectedPageNumbers","enableClearSearchOnPanelCloseClosure","disableClearSearchOnPanelCloseClosure","PageManipulationOverlayAPI","dataElementToInsertAfter","ThumbnailControlMenuAPI","FontsAPI","getAnnotationFonts","addAnnotationFont","removeAnnotationFont","fontIndex","setAnnotationFonts","addSignatureFont","removeSignatureFont","setSignatureFonts","TabManagerAPI","tabId","getAllTabs","presetName","newPreset","presets","dateTimeFormat","validKeyFound","requiredKeys","redactionSearchPattern","stepFactor","boostrappedCb","_pStore","rootReducer","rehydrateAction","purge","purgeResult","flushResult","manualPersist","CanvasRenderingContext2D","fullAPIReady","enableFullPDF","disableLogs","_disableStreaming","setWorkerPath","setResourcesPath","WebViewer","workerTransportPromise","pdf","office","setWorkerTransportPromise","forceBackendType","disableOptimizedWorkers","CSSFile","loadCustomCSS","coreVersion","DocumentViewer","coreBuild","uiVersion","packageConfig","webViewerJSVersion","wvServer","coreMajorVersion","coreMinorVersion","uiMajorVersion","uiMinorVersion","webViewerJSMajorVersion","webViewerJSMinorVersion","table","webViewerComponents","majorVersion","minorVersion","comparison","warningText","majorVersionOutdatedComponents","minorVersionOutdatedComponents","latestComponent","outdatedComponents","logDebugInfo","objForWebViewerCore","PartRetrievers","objForWebViewerUI","ToolbarGroup","RedactionSearchPatterns","displayErrorMessage","disableHighContrastMode","focusNote","getLayoutMode","hideOutlineControl","isToolDisabled","isHighContrastModeEnabled","settingsMenuOverlay","printInBackground","cancelPrint","showOutlineControl","exportBookmarks","importBookmarks","setTranslations","setLayoutMode","setMeasurementUnits","setTheme","createToolbarGroup","dangerouslySetNoteTransformFunction","setZoomLevel","toggleElementVisibility","toggleFullScreen","updateTool","updateElement","willUseEmbeddedPrinting","setCustomMeasurementOverlayInfo","setDisplayedSignaturesFilter","disableAnnotations","disableDownload","disableFilePicker","disableMeasurement","disableNotesPanel","disableNoteSubmissionWithEnter","disablePrint","disableTextSelection","disableTouchScrollLock","enableAnnotations","enableDownload","enableFilePicker","enableHighContrastMode","enableMeasurement","enableNotesPanel","enablePrint","enableTextSelection","enableTool","enableNativeScrolling","getAnnotationUser","getCurrentPageNumber","getShowSideWindow","setNotesPanelSort","disableTool","goToFirstPage","goToLastPage","saveAnnotations","setAnnotationUser","setCurrentPageNumber","toggleReaderMode","Fonts","reloadOutline","getAvailableLanguages","addDateTimeFormat","setSideWindowVisibility","selectThumbnailPages","unselectThumbnailPages","getSelectedThumbnailPageNumbers","loadedFromServer","serverFailed","getBBAnnotManager","getSelectors","reactElements","enableClearSearchOnPanelClose","disableClearSearchOnPanelClose","disableNativeScrolling","getAnnotationReadState","disableDesktopOnlyMode","CORE_NAMESPACE_KEY","UI_NAMESPACE_KEY","defineWebViewerInstanceUIAPIs","Utilities","setAnnotationSubjectHandler","SignatureCreateTool","setTextHandler","HttpApi","addRule","setupI18n","ENABLE_AUTO_SWITCH","onBeforeDocumentLoaded","SetPreRenderLevel","DisplayModes","getDefaultPageLabels","eventListeners","onCheckStampAnnotationAdded","checkStampAnnotation","onCrossStampAnnotationAdded","crossStampAnnotation","onDisplayModeUpdated","getLayersArray","currentLayers","onLayersUpdated","nextActivePanel","isDocumentClosed","documentUnloadedHandler","checkIfDocumentClosed","getPageLabel","getLabelTitle","setPrintHandler","DOCUMENT_LOADED","onFitModeUpdated","currentTool","onToolModeUpdated","onStampAnnotationAdded","stampAnnotation","onSignatureAnnotationAdded","signatureAnnotation","onStickyAnnotationAdded","onFullScreenChange","movedKeys","onLocationSelected","onDotStampAnnotationAdded","dotStampAnnotation","onRubberStampAnnotationAdded","rubberStampAnnotation","onReadOnlyModeChanged","loadPageText","textContainer","pageContainerElement","existingTextContainer","onFileAttachmentAnnotationAdded","onFileAttachmentDataAvailable","fileMeta","onSignatureSaved","numberOfSignaturesToRemove","getSignatureDataToStore","signaturesToStore","onSignatureDeleted","coreSavedSignatures","newSavedSignatures","onHistoryChanged","onFormFieldCreationModeEnded","onDigitalSignatureAvailable","BackendTypes","WASM","addEventHandlers","PDF","LEGACY_OFFICE","CONTENT_EDIT","ALL","getBackendPromise","pdfType","initPDFWorkerTransports","workerLoadingProgress","officeType","initOfficeWorkerTransports","initLegacyOfficeWorkerTransports","disableVirtualDisplayMode","setSaveViewState","getAnnotsFromServer","originalData","getDocumentId","origData","setupLoadAnnotationsFromServer","createDisableFeatures","setDefaultDisabledElements","onTab","onMouse","INIT_COORDS","BEGIN_DRAG","PUBLISH_DRAG_SOURCE","HOVER","DROP","END_DRAG","setClientOffset","sourceClientOffset","ResetCoordinatesAction","createBeginDrag","sourceIds","_options$publishSourc","verifyInvariants","getDraggableSource","verifyGetSourceClientOffsetIsFunction","getSource","verifyItemIsObject","pinSource","getSourceType","createPublishDragSource","matchesType","targetType","draggedItemType","createHover","targetIdsArg","verifyTargetIdsIsArray","targetIds","checkInvariants","removeNonMatchingTargetIds","hoverAllTargets","getTarget","getTargetType","createDrop","getDroppableTargets","dropResult","determineDropResult","verifyDropResultType","createEndDrag","verifyIsDragging","unpinSource","DragDropManagerImpl","shouldSetUp","refCount","setup","teardown","handleRefCountChange","createDragDropActions","boundActions","strictEquality","areCoordsEqual","offsetA","offsetB","areArraysEqual","initialSourceClientOffset","initialClientOffset","ADD_SOURCE","ADD_TARGET","REMOVE_SOURCE","REMOVE_TARGET","NONE","areDirty","dirtyIds","_action$payload","_action$payload$targe","_action$payload$prevT","prevTargetIds","prevInnermostTargetId","innermostTargetId","dirtyHandlerIds","dragOffset","dragOperation","stateId","__IS_NONE__","__IS_ALL__","HandlerRole","DragDropMonitorImpl","prevStateId","currentStateId","nextUniqueId","validateType","getNextHandlerId","SOURCE","parseRoleFromHandlerId","mapContainsValue","isDone","_entries$next","HandlerRegistryImpl","validateSourceContract","validateTargetContract","dragSources","dropTargets","includePinned","isSourceId","isPinned","pinnedSourceId","pinnedSource","isTargetId","createDragDropManager","backendFactory","backendOptions","debugMode","makeStoreInstance","receiveBackend","reduxDevTools","__REDUX_DEVTOOLS_EXTENSION__","INSTANCE_SYM","_getDndContextValue2","getGlobalContext","createSingletonDndContext","isGlobalInstance","getDndContextValue"],"mappings":"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BC,EAAOD,QAAU,2b,cCAjBC,EAAOD,QAAU,md,cCAjBC,EAAOD,QAAU,wa,cCAjBC,EAAOD,QAAU,ssB,cCAjBC,EAAOD,QAAU,wL,cCAjBC,EAAOD,QAAU,qZ,cCAjBC,EAAOD,QAAU,6P,cCAjBC,EAAOD,QAAU,8N,cCAjBC,EAAOD,QAAU,o0B,cCAjBC,EAAOD,QAAU,mU,cCAjBC,EAAOD,QAAU,2X,cCAjBC,EAAOD,QAAU,siB,cCAjBC,EAAOD,QAAU,sc,cCAjBC,EAAOD,QAAU,ykB,cCAjBC,EAAOD,QAAU,g8E,cCAjBC,EAAOD,QAAU,mK,cCAjBC,EAAOD,QAAU,s8C,cCAjBC,EAAOD,QAAU,yY,cCAjBC,EAAOD,QAAU,2M,cCAjBC,EAAOD,QAAU,wW,cCAjBC,EAAOD,QAAU,qU,cCAjBC,EAAOD,QAAU,wQ,cCAjBC,EAAOD,QAAU,mrB,cCAjBC,EAAOD,QAAU,mJ,cCAjBC,EAAOD,QAAU,0rB,cCAjBC,EAAOD,QAAU,uM,cCAjBC,EAAOD,QAAU,4L,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,4P,cCAjBC,EAAOD,QAAU,2M,cCAjBC,EAAOD,QAAU,2Q,cCAjBC,EAAOD,QAAU,+M,cCAjBC,EAAOD,QAAU,qN,cCAjBC,EAAOD,QAAU,2Q,cCAjBC,EAAOD,QAAU,ivB,cCAjBC,EAAOD,QAAU,sQ,cCAjBC,EAAOD,QAAU,6pB,cCAjBC,EAAOD,QAAU,ihB,cCAjBC,EAAOD,QAAU,iR,cCAjBC,EAAOD,QAAU,mL,cCAjBC,EAAOD,QAAU,8b,cCAjBC,EAAOD,QAAU,8N,cCAjBC,EAAOD,QAAU,8O,cCAjBC,EAAOD,QAAU,2S,cCAjBC,EAAOD,QAAU,uZ,cCAjBC,EAAOD,QAAU,8K,cCAjBC,EAAOD,QAAU,+kB,cCAjBC,EAAOD,QAAU,whB,cCAjBC,EAAOD,QAAU,gZ,cCAjBC,EAAOD,QAAU,wR,cCAjBC,EAAOD,QAAU,+tB,cCAjBC,EAAOD,QAAU,2M,cCAjBC,EAAOD,QAAU,sR,cCAjBC,EAAOD,QAAU,2lB,cCAjBC,EAAOD,QAAU,sd,cCAjBC,EAAOD,QAAU,0d,cCAjBC,EAAOD,QAAU,gQ,cCAjBC,EAAOD,QAAU,6T,cCAjBC,EAAOD,QAAU,gX,cCAjBC,EAAOD,QAAU,if,cCAjBC,EAAOD,QAAU,we,cCAjBC,EAAOD,QAAU,4X,cCAjBC,EAAOD,QAAU,yvB,cCAjBC,EAAOD,QAAU,iW,cCAjBC,EAAOD,QAAU,o0I,cCAjBC,EAAOD,QAAU,6T,cCAjBC,EAAOD,QAAU,6P,cCAjBC,EAAOD,QAAU,4hB,cCAjBC,EAAOD,QAAU,6R,cCAjBC,EAAOD,QAAU,0+B,cCAjBC,EAAOD,QAAU,2e,cCAjBC,EAAOD,QAAU,kM,cCAjBC,EAAOD,QAAU,yO,cCAjBC,EAAOD,QAAU,8xB,cCAjBC,EAAOD,QAAU,06B,cCAjBC,EAAOD,QAAU,sS,cCAjBC,EAAOD,QAAU,kR,cCAjBC,EAAOD,QAAU,+hB,cCAjBC,EAAOD,QAAU,sb,cCAjBC,EAAOD,QAAU,wuB,cCAjBC,EAAOD,QAAU,ouB,cCAjBC,EAAOD,QAAU,ooB,cCAjBC,EAAOD,QAAU,8zB,cCAjBC,EAAOD,QAAU,+V,cCAjBC,EAAOD,QAAU,g7B,cCAjBC,EAAOD,QAAU,o0B,cCAjBC,EAAOD,QAAU,wwB,cCAjBC,EAAOD,QAAU,s0B,cCAjBC,EAAOD,QAAU,+pB,cCAjBC,EAAOD,QAAU,u7B,cCAjBC,EAAOD,QAAU,0wB,cCAjBC,EAAOD,QAAU,mJ,cCAjBC,EAAOD,QAAU,iK,cCAjBC,EAAOD,QAAU,sJ,cCAjBC,EAAOD,QAAU,oJ,cCAjBC,EAAOD,QAAU,oP,cCAjBC,EAAOD,QAAU,+K,cCAjBC,EAAOD,QAAU,iK,cCAjBC,EAAOD,QAAU,8Y,cCAjBC,EAAOD,QAAU,iT,cCAjBC,EAAOD,QAAU,uN,cCAjBC,EAAOD,QAAU,uN,cCAjBC,EAAOD,QAAU,wN,cCAjBC,EAAOD,QAAU,sN,cCAjBC,EAAOD,QAAU,ob,cCAjBC,EAAOD,QAAU,6b,cCAjBC,EAAOD,QAAU,oJ,cCAjBC,EAAOD,QAAU,8S,cCAjBC,EAAOD,QAAU,qU,cCAjBC,EAAOD,QAAU,uX,cCAjBC,EAAOD,QAAU,0W,cCAjBC,EAAOD,QAAU,gb,cCAjBC,EAAOD,QAAU,kyB,cCAjBC,EAAOD,QAAU,2/C,cCAjBC,EAAOD,QAAU,s9B,cCAjBC,EAAOD,QAAU,owC,cCAjBC,EAAOD,QAAU,8sC,cCAjBC,EAAOD,QAAU,yoC,cCAjBC,EAAOD,QAAU,g6F,cCAjBC,EAAOD,QAAU,owE,cCAjBC,EAAOD,QAAU,2Z,cCAjBC,EAAOD,QAAU,kf,cCAjBC,EAAOD,QAAU,mf,cCAjBC,EAAOD,QAAU,iV,cCAjBC,EAAOD,QAAU,qY,cCAjBC,EAAOD,QAAU,suB,cCAjBC,EAAOD,QAAU,gb,cCAjBC,EAAOD,QAAU,od,cCAjBC,EAAOD,QAAU,8R,cCAjBC,EAAOD,QAAU,kS,cCAjBC,EAAOD,QAAU,kU,cCAjBC,EAAOD,QAAU,4mC,cCAjBC,EAAOD,QAAU,u7B,cCAjBC,EAAOD,QAAU,k6B,cCAjBC,EAAOD,QAAU,0+B,cCAjBC,EAAOD,QAAU,i/B,cCAjBC,EAAOD,QAAU,u7B,cCAjBC,EAAOD,QAAU,ub,cCAjBC,EAAOD,QAAU,mtB,cCAjBC,EAAOD,QAAU,q0B,cCAjBC,EAAOD,QAAU,00B,cCAjBC,EAAOD,QAAU,gf,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,kT,cCAjBC,EAAOD,QAAU,ub,cCAjBC,EAAOD,QAAU,8a,cCAjBC,EAAOD,QAAU,mjB,cCAjBC,EAAOD,QAAU,0b,cCAjBC,EAAOD,QAAU,slB,cCAjBC,EAAOD,QAAU,uU,cCAjBC,EAAOD,QAAU,+c,cCAjBC,EAAOD,QAAU,mb,cCAjBC,EAAOD,QAAU,4hB,cCAjBC,EAAOD,QAAU,uoC,cCAjBC,EAAOD,QAAU,60I,cCAjBC,EAAOD,QAAU,8U,cCAjBC,EAAOD,QAAU,oW,cCAjBC,EAAOD,QAAU,wV,cCAjBC,EAAOD,QAAU,0nB,cCAjBC,EAAOD,QAAU,wuB,cCAjBC,EAAOD,QAAU,8rB,cCAjBC,EAAOD,QAAU,kyC,cCAjBC,EAAOD,QAAU,4V,cCAjBC,EAAOD,QAAU,8U,cCAjBC,EAAOD,QAAU,oX,cCAjBC,EAAOD,QAAU,6e,cCAjBC,EAAOD,QAAU,o0B,cCAjBC,EAAOD,QAAU,+Q,cCAjBC,EAAOD,QAAU,mT,cCAjBC,EAAOD,QAAU,qkB,cCAjBC,EAAOD,QAAU,8P,cCAjBC,EAAOD,QAAU,iS,cCAjBC,EAAOD,QAAU,sqB,cCAjBC,EAAOD,QAAU,u9B,cCAjBC,EAAOD,QAAU,+N,cCAjBC,EAAOD,QAAU,qQ,cCAjBC,EAAOD,QAAU,kQ,cCAjBC,EAAOD,QAAU,0T,cCAjBC,EAAOD,QAAU,+I,cCAjBC,EAAOD,QAAU,0e,cCAjBC,EAAOD,QAAU,6P,cCAjBC,EAAOD,QAAU,oP,cCAjBC,EAAOD,QAAU,mN,cCAjBC,EAAOD,QAAU,qI,cCAjBC,EAAOD,QAAU,sP,cCAjBC,EAAOD,QAAU,qQ,cCAjBC,EAAOD,QAAU,oS,cCAjBC,EAAOD,QAAU,qU,cCAjBC,EAAOD,QAAU,6N,cCAjBC,EAAOD,QAAU,2K,cCAjBC,EAAOD,QAAU,6e,cCAjBC,EAAOD,QAAU,4S,cCAjBC,EAAOD,QAAU,+P,cCAjBC,EAAOD,QAAU,8P,cCAjBC,EAAOD,QAAU,0wB,cCAjBC,EAAOD,QAAU,ooB,cCAjBC,EAAOD,QAAU,84B,cCAjBC,EAAOD,QAAU,oY,cCAjBC,EAAOD,QAAU,oU,cCAjBC,EAAOD,QAAU,wT,cCAjBC,EAAOD,QAAU,mU,cCAjBC,EAAOD,QAAU,8V,cCAjBC,EAAOD,QAAU,oU,cCAjBC,EAAOD,QAAU,8O,cCAjBC,EAAOD,QAAU,0a,cCAjBC,EAAOD,QAAU,wT,cCAjBC,EAAOD,QAAU,kV,cCAjBC,EAAOD,QAAU,mU,cCAjBC,EAAOD,QAAU,+0B,cCAjBC,EAAOD,QAAU,0f,cCAjBC,EAAOD,QAAU,kqB,cCAjBC,EAAOD,QAAU,+c,cCAjBC,EAAOD,QAAU,yb,cCAjBC,EAAOD,QAAU,sb,cCAjBC,EAAOD,QAAU,qc,cCAjBC,EAAOD,QAAU,ob,cCAjBC,EAAOD,QAAU,44C,cCAjBC,EAAOD,QAAU,6iC,cCAjBC,EAAOD,QAAU,mhB,cCAjBC,EAAOD,QAAU,mhB,cCAjBC,EAAOD,QAAU,qf,cCAjBC,EAAOD,QAAU,4Q,cCAjBC,EAAOD,QAAU,wT,cCAjBC,EAAOD,QAAU,6a,cCAjBC,EAAOD,QAAU,oe,cCAjBC,EAAOD,QAAU,sgB,cCAjBC,EAAOD,QAAU,+xB,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,gnB,cCAjBC,EAAOD,QAAU,ooB,cCAjBC,EAAOD,QAAU,sa,cCAjBC,EAAOD,QAAU,qW,cCAjBC,EAAOD,QAAU,ib,cCAjBC,EAAOD,QAAU,mL,cCAjBC,EAAOD,QAAU,4f,cCAjBC,EAAOD,QAAU,uf,cCAjBC,EAAOD,QAAU,of,cCAjBC,EAAOD,QAAU,6e,cCAjBC,EAAOD,QAAU,4rB,cCAjBC,EAAOD,QAAU,qW,cCAjBC,EAAOD,QAAU,slB,cCAjBC,EAAOD,QAAU,2Z,cCAjBC,EAAOD,QAAU,wZ,cCAjBC,EAAOD,QAAU,4tB,cCAjBC,EAAOD,QAAU,yoB,cCAjBC,EAAOD,QAAU,wrB,cCAjBC,EAAOD,QAAU,w6B,cCAjBC,EAAOD,QAAU,k3B,cCAjBC,EAAOD,QAAU,ikC,cCAjBC,EAAOD,QAAU,8b,cCAjBC,EAAOD,QAAU,2f,cCAjBC,EAAOD,QAAU,oe,cCAjBC,EAAOD,QAAU,0lB,cCAjBC,EAAOD,QAAU,2/C,cCAjBC,EAAOD,QAAU,44B,cCAjBC,EAAOD,QAAU,8iB,cCAjBC,EAAOD,QAAU,iuB,cCAjBC,EAAOD,QAAU,+wB,cCAjBC,EAAOD,QAAU,ikC,cCAjBC,EAAOD,QAAU,wc,cCAjBC,EAAOD,QAAU,ujB,cCAjBC,EAAOD,QAAU,wkB,cCAjBC,EAAOD,QAAU,suB,cCAjBC,EAAOD,QAAU,4zM,cCAjBC,EAAOD,QAAU,4V,cCAjBC,EAAOD,QAAU,6wB,cCAjBC,EAAOD,QAAU,yhB,cCAjBC,EAAOD,QAAU,q5B,cCAjBC,EAAOD,QAAU,6+C,cCAjBC,EAAOD,QAAU,24B,cCAjBC,EAAOD,QAAU,gnB,cCAjBC,EAAOD,QAAU,4rB,cCAjBC,EAAOD,QAAU,2gB,cCAjBC,EAAOD,QAAU,mmD,cCAjBC,EAAOD,QAAU,4hB,cCAjBC,EAAOD,QAAU,iV,cCAjBC,EAAOD,QAAU,80B,cCAjBC,EAAOD,QA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EAAM,CACT,UAAW,CACV,KACA,GAED,UAAW,CACV,KACA,GAED,aAAc,CACb,KACA,GAED,aAAc,CACb,KACA,GAED,aAAc,CACb,KACA,GAED,aAAc,CACb,KACA,GAED,aAAc,CACb,KACA,GAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,gBAAiB,CAChB,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,KAED,cAAe,CACd,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,eAAgB,CACf,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,C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7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,OACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,MACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,aACR,CACD7iP,KAAM,IACN6iP,QAAS,gBACR,CACD7iP,KAAM,IACN6iP,QAAS,kBACR,CACD7iP,KAAM,KACN6iP,QAAS,MACR,CACD7iP,KAAM,KACN6iP,QAAS,MACR,CACD7iP,KAAM,IACN6iP,QAAS,kCACR,CACD7iP,KAAM,IACN6iP,QAAS,UACR,CACD7iP,KAAM,IACN6iP,QAAS,mBACR,CACD7iP,KAAM,IACN6iP,QAAS,kBACR,CACD7iP,KAAM,IACN6iP,QAAS,wBACR,CACD7iP,KAAM,IACN6iP,QAAS,SACR,CACD7iP,KAAM,IACN6iP,QAAS,kBACR,CACD7iP,KAAM,IACN6iP,QAAS,sBACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,YACR,CACD7iP,KAAM,IACN6iP,QAAS,oBACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,+CACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,cACR,CACD7iP,KAAM,IACN6iP,QAAS,UACR,CACD7iP,KAAM,IACN6iP,QAAS,qBACR,CACD7iP,KAAM,IACN6iP,QAAS,qBACR,CACD7iP,KAAM,IACN6iP,QAAS,mBACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,sCACR,CACD7iP,KAAM,IACN6iP,QAAS,YACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,cACR,CACD7iP,KAAM,IACN6iP,QAAS,SACR,CACD7iP,KAAM,IACN6iP,QAAS,mBACR,CACD7iP,KAAM,IACN6iP,QAAS,kBACR,CACD7iP,KAAM,IACN6iP,QAAS,uCACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,OACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,MACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,aACR,CACD7iP,KAAM,IACN6iP,QAAS,iBACR,CACD7iP,KAAM,IACN6iP,QAAS,kBACR,CACD7iP,KAAM,KACN6iP,QAAS,MACR,CACD7iP,KAAM,IACN6iP,QAAS,mCACR,CACD7iP,KAAM,IACN6iP,QAAS,UACR,CACD7iP,KAAM,IACN6iP,QAAS,mBACR,CACD7iP,KAAM,IACN6iP,QAAS,mBACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,wBACR,CACD7iP,KAAM,IACN6iP,QAAS,UACR,CACD7iP,KAAM,IACN6iP,QAAS,kBACR,CACD7iP,KAAM,IACN6iP,QAAS,uBACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,YACR,CACD7iP,KAAM,IACN6iP,QAAS,qBACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,+CACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6iP,QAAS,cACR,CACD7iP,KAAM,IACN6iP,QAAS,UACR,CACD7iP,KAAM,IACN6iP,QAAS,qBACR,CACD7iP,KAAM,IACN6iP,QAAS,sBACR,CACD7iP,KAAM,IACN6iP,QAAS,oBACR,CACD7iP,KAAM,KACN6iP,QAAS,KACR,CACD7iP,KAAM,IACN6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","file":"webviewer-ui.min.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"chunks/\" + ({\"1\":\"vendors.html2canvas\"}[chunkId]||chunkId) + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1179);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 setGlobal = require('../internals/set-global');\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.noTargetGet - 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] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\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","function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined;\n\nvar _flattenNames = require('./flattenNames');\n\nvar _flattenNames2 = _interopRequireDefault(_flattenNames);\n\nvar _mergeClasses = require('./mergeClasses');\n\nvar _mergeClasses2 = _interopRequireDefault(_mergeClasses);\n\nvar _autoprefix = require('./autoprefix');\n\nvar _autoprefix2 = _interopRequireDefault(_autoprefix);\n\nvar _hover2 = require('./components/hover');\n\nvar _hover3 = _interopRequireDefault(_hover2);\n\nvar _active = require('./components/active');\n\nvar _active2 = _interopRequireDefault(_active);\n\nvar _loop2 = require('./loop');\n\nvar _loop3 = _interopRequireDefault(_loop2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.hover = _hover3.default;\nexports.handleHover = _hover3.default;\nexports.handleActive = _active2.default;\nexports.loop = _loop3.default;\nvar ReactCSS = exports.ReactCSS = function ReactCSS(classes) {\n  for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    activations[_key - 1] = arguments[_key];\n  }\n\n  var activeNames = (0, _flattenNames2.default)(activations);\n  var merged = (0, _mergeClasses2.default)(classes, activeNames);\n  return (0, _autoprefix2.default)(merged);\n};\n\nexports.default = ReactCSS;","export function shallowEqual<T>(\n  objA: T,\n  objB: T,\n  compare?: (a: T, b: T, key?: string) => boolean | void,\n  compareContext?: any\n) {\n  var compareResult = compare\n    ? compare.call(compareContext, objA, objB)\n    : void 0;\n  if (compareResult !== void 0) {\n    return !!compareResult;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = (objA as any)[key];\n    var valueB = (objB as any)[key];\n\n    compareResult = compare\n      ? compare.call(compareContext, valueA, valueB, key)\n      : void 0;\n\n    if (\n      compareResult === false ||\n      (compareResult === void 0 && valueA !== valueB)\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar 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","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 String = global.String;\nvar TypeError = global.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","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n","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","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineProperty = require('../internals/object-define-property').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n  } });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\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","var global = require('../internals/global');\nvar 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 = global.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 global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.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 global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.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","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},v=\"en\",D={};D[v]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return v;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var v=this.$locale().weekStart||0,D=(y<v?y+7:y)-v;return $(r?m-D:m+(6-D),M);case a:case d:return l(g+\"Hours\",0);case u:return l(g+\"Minutes\",1);case s:return l(g+\"Seconds\",2);case i:return l(g+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),$=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||$;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||l[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,v=O.m(this,M);return v=(l={},l[c]=v/12,l[f]=v,l[h]=v/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?v:O.a(v)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[v],w.Ls=D,w.p={},w}));","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar setGlobal = require('../internals/set-global');\n\nmodule.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var name = options && options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return O;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n  return O;\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","function _extends() {\n  module.exports = _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  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.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 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","// 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 global = require('../internals/global');\n\nvar TypeError = global.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","module.exports = false;\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","function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _require = require('./Draggable'),\n    Draggable = _require.default,\n    DraggableCore = _require.DraggableCore; // Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\n\n\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.17.21';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {number} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            }\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      return object == null || delete object[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        result[pair[0]] = pair[1];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('déjà vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\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","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, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\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 ceil = Math.ceil;\nvar floor = Math.floor;\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 -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(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 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","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 global = require('../internals/global');\nvar 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 = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\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","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexport { polyfill };\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\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\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread(_objectSpread({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\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 uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\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 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 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","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n    Scope: Registry.Scope,\n    create: Registry.create,\n    find: Registry.find,\n    query: Registry.query,\n    register: Registry.register,\n    Container: container_1.default,\n    Format: format_1.default,\n    Leaf: leaf_1.default,\n    Embed: embed_1.default,\n    Scroll: scroll_1.default,\n    Block: block_1.default,\n    Inline: inline_1.default,\n    Text: text_1.default,\n    Attributor: {\n        Attribute: attributor_1.default,\n        Class: class_1.default,\n        Style: style_1.default,\n        Store: store_1.default,\n    },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n    __extends(ParchmentError, _super);\n    function ParchmentError(message) {\n        var _this = this;\n        message = '[Parchment] ' + message;\n        _this = _super.call(this, message) || this;\n        _this.message = message;\n        _this.name = _this.constructor.name;\n        return _this;\n    }\n    return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n    Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n    Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n    Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n    Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n    Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n    Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n    Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n    Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n    Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n    Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n    Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n    var match = query(input);\n    if (match == null) {\n        throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n    }\n    var BlotClass = match;\n    var node = \n    // @ts-ignore\n    input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n    return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n    if (bubble === void 0) { bubble = false; }\n    if (node == null)\n        return null;\n    // @ts-ignore\n    if (node[exports.DATA_KEY] != null)\n        return node[exports.DATA_KEY].blot;\n    if (bubble)\n        return find(node.parentNode, bubble);\n    return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n    if (scope === void 0) { scope = Scope.ANY; }\n    var match;\n    if (typeof query === 'string') {\n        match = types[query] || attributes[query];\n        // @ts-ignore\n    }\n    else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n        match = types['text'];\n    }\n    else if (typeof query === 'number') {\n        if (query & Scope.LEVEL & Scope.BLOCK) {\n            match = types['block'];\n        }\n        else if (query & Scope.LEVEL & Scope.INLINE) {\n            match = types['inline'];\n        }\n    }\n    else if (query instanceof HTMLElement) {\n        var names = (query.getAttribute('class') || '').split(/\\s+/);\n        for (var i in names) {\n            match = classes[names[i]];\n            if (match)\n                break;\n        }\n        match = match || tags[query.tagName];\n    }\n    if (match == null)\n        return null;\n    // @ts-ignore\n    if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n        return match;\n    return null;\n}\nexports.query = query;\nfunction register() {\n    var Definitions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        Definitions[_i] = arguments[_i];\n    }\n    if (Definitions.length > 1) {\n        return Definitions.map(function (d) {\n            return register(d);\n        });\n    }\n    var Definition = Definitions[0];\n    if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n        throw new ParchmentError('Invalid definition');\n    }\n    else if (Definition.blotName === 'abstract') {\n        throw new ParchmentError('Cannot register abstract class');\n    }\n    types[Definition.blotName || Definition.attrName] = Definition;\n    if (typeof Definition.keyName === 'string') {\n        attributes[Definition.keyName] = Definition;\n    }\n    else {\n        if (Definition.className != null) {\n            classes[Definition.className] = Definition;\n        }\n        if (Definition.tagName != null) {\n            if (Array.isArray(Definition.tagName)) {\n                Definition.tagName = Definition.tagName.map(function (tagName) {\n                    return tagName.toUpperCase();\n                });\n            }\n            else {\n                Definition.tagName = Definition.tagName.toUpperCase();\n            }\n            var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n            tagNames.forEach(function (tag) {\n                if (tags[tag] == null || Definition.className == null) {\n                    tags[tag] = Definition;\n                }\n            });\n        }\n    }\n    return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0);  // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n  // Assume we are given a well formed ops\n  if (Array.isArray(ops)) {\n    this.ops = ops;\n  } else if (ops != null && Array.isArray(ops.ops)) {\n    this.ops = ops.ops;\n  } else {\n    this.ops = [];\n  }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n  var newOp = {};\n  if (text.length === 0) return this;\n  newOp.insert = text;\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n  if (length <= 0) return this;\n  return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n  if (length <= 0) return this;\n  var newOp = { retain: length };\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n  var index = this.ops.length;\n  var lastOp = this.ops[index - 1];\n  newOp = extend(true, {}, newOp);\n  if (typeof lastOp === 'object') {\n    if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n      this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n      return this;\n    }\n    // Since it does not matter if we insert before or after deleting at the same index,\n    // always prefer to insert first\n    if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n      index -= 1;\n      lastOp = this.ops[index - 1];\n      if (typeof lastOp !== 'object') {\n        this.ops.unshift(newOp);\n        return this;\n      }\n    }\n    if (equal(newOp.attributes, lastOp.attributes)) {\n      if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n        this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n        this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      }\n    }\n  }\n  if (index === this.ops.length) {\n    this.ops.push(newOp);\n  } else {\n    this.ops.splice(index, 0, newOp);\n  }\n  return this;\n};\n\nDelta.prototype.chop = function () {\n  var lastOp = this.ops[this.ops.length - 1];\n  if (lastOp && lastOp.retain && !lastOp.attributes) {\n    this.ops.pop();\n  }\n  return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n  return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n  this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n  return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n  var passed = [], failed = [];\n  this.forEach(function(op) {\n    var target = predicate(op) ? passed : failed;\n    target.push(op);\n  });\n  return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n  return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n  return this.reduce(function (length, elem) {\n    if (elem.insert) {\n      return length + op.length(elem);\n    } else if (elem.delete) {\n      return length - elem.delete;\n    }\n    return length;\n  }, 0);\n};\n\nDelta.prototype.length = function () {\n  return this.reduce(function (length, elem) {\n    return length + op.length(elem);\n  }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n  start = start || 0;\n  if (typeof end !== 'number') end = Infinity;\n  var ops = [];\n  var iter = op.iterator(this.ops);\n  var index = 0;\n  while (index < end && iter.hasNext()) {\n    var nextOp;\n    if (index < start) {\n      nextOp = iter.next(start - index);\n    } else {\n      nextOp = iter.next(end - index);\n      ops.push(nextOp);\n    }\n    index += op.length(nextOp);\n  }\n  return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var ops = [];\n  var firstOther = otherIter.peek();\n  if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n    var firstLeft = firstOther.retain;\n    while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n      firstLeft -= thisIter.peekLength();\n      ops.push(thisIter.next());\n    }\n    if (firstOther.retain - firstLeft > 0) {\n      otherIter.next(firstOther.retain - firstLeft);\n    }\n  }\n  var delta = new Delta(ops);\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else if (thisIter.peekType() === 'delete') {\n      delta.push(thisIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (typeof otherOp.retain === 'number') {\n        var newOp = {};\n        if (typeof thisOp.retain === 'number') {\n          newOp.retain = length;\n        } else {\n          newOp.insert = thisOp.insert;\n        }\n        // Preserve null when composing with a retain, otherwise remove it for inserts\n        var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n        if (attributes) newOp.attributes = attributes;\n        delta.push(newOp);\n\n        // Optimization if rest of other is just retain\n        if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n          var rest = new Delta(thisIter.rest());\n          return delta.concat(rest).chop();\n        }\n\n      // Other op should be delete, we could be an insert or retain\n      // Insert + delete cancels out\n      } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n        delta.push(otherOp);\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n  var delta = new Delta(this.ops.slice());\n  if (other.ops.length > 0) {\n    delta.push(other.ops[0]);\n    delta.ops = delta.ops.concat(other.ops.slice(1));\n  }\n  return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n  if (this.ops === other.ops) {\n    return new Delta();\n  }\n  var strings = [this, other].map(function (delta) {\n    return delta.map(function (op) {\n      if (op.insert != null) {\n        return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n      }\n      var prep = (delta === other) ? 'on' : 'with';\n      throw new Error('diff() called ' + prep + ' non-document');\n    }).join('');\n  });\n  var delta = new Delta();\n  var diffResult = diff(strings[0], strings[1], index);\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  diffResult.forEach(function (component) {\n    var length = component[1].length;\n    while (length > 0) {\n      var opLength = 0;\n      switch (component[0]) {\n        case diff.INSERT:\n          opLength = Math.min(otherIter.peekLength(), length);\n          delta.push(otherIter.next(opLength));\n          break;\n        case diff.DELETE:\n          opLength = Math.min(length, thisIter.peekLength());\n          thisIter.next(opLength);\n          delta['delete'](opLength);\n          break;\n        case diff.EQUAL:\n          opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n          var thisOp = thisIter.next(opLength);\n          var otherOp = otherIter.next(opLength);\n          if (equal(thisOp.insert, otherOp.insert)) {\n            delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n          } else {\n            delta.push(otherOp)['delete'](opLength);\n          }\n          break;\n      }\n      length -= opLength;\n    }\n  });\n  return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n  newline = newline || '\\n';\n  var iter = op.iterator(this.ops);\n  var line = new Delta();\n  var i = 0;\n  while (iter.hasNext()) {\n    if (iter.peekType() !== 'insert') return;\n    var thisOp = iter.peek();\n    var start = op.length(thisOp) - iter.peekLength();\n    var index = typeof thisOp.insert === 'string' ?\n      thisOp.insert.indexOf(newline, start) - start : -1;\n    if (index < 0) {\n      line.push(iter.next());\n    } else if (index > 0) {\n      line.push(iter.next(index));\n    } else {\n      if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n        return;\n      }\n      i += 1;\n      line = new Delta();\n    }\n  }\n  if (line.length() > 0) {\n    predicate(line, {}, i);\n  }\n};\n\nDelta.prototype.transform = function (other, priority) {\n  priority = !!priority;\n  if (typeof other === 'number') {\n    return this.transformPosition(other, priority);\n  }\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n      delta.retain(op.length(thisIter.next()));\n    } else if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (thisOp['delete']) {\n        // Our delete either makes their delete redundant or removes their retain\n        continue;\n      } else if (otherOp['delete']) {\n        delta.push(otherOp);\n      } else {\n        // We retain either their retain or insert\n        delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n  priority = !!priority;\n  var thisIter = op.iterator(this.ops);\n  var offset = 0;\n  while (thisIter.hasNext() && offset <= index) {\n    var length = thisIter.peekLength();\n    var nextType = thisIter.peekType();\n    thisIter.next();\n    if (nextType === 'delete') {\n      index -= Math.min(length, index - offset);\n      continue;\n    } else if (nextType === 'insert' && (offset < index || !priority)) {\n      index += length;\n    }\n    offset += length;\n  }\n  return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n  _inherits(BlockEmbed, _Parchment$Embed);\n\n  function BlockEmbed() {\n    _classCallCheck(this, BlockEmbed);\n\n    return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n  }\n\n  _createClass(BlockEmbed, [{\n    key: 'attach',\n    value: function attach() {\n      _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n      this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n    }\n  }, {\n    key: 'delta',\n    value: function delta() {\n      return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n      if (attribute != null) {\n        this.attributes.attribute(attribute, value);\n      }\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      this.format(name, value);\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (typeof value === 'string' && value.endsWith('\\n')) {\n        var block = _parchment2.default.create(Block.blotName);\n        this.parent.insertBefore(block, index === 0 ? this : this.next);\n        block.insertAt(0, value.slice(0, -1));\n      } else {\n        _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n    }\n  }]);\n\n  return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n  _inherits(Block, _Parchment$Block);\n\n  function Block(domNode) {\n    _classCallCheck(this, Block);\n\n    var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n    _this2.cache = {};\n    return _this2;\n  }\n\n  _createClass(Block, [{\n    key: 'delta',\n    value: function delta() {\n      if (this.cache.delta == null) {\n        this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n          if (leaf.length() === 0) {\n            return delta;\n          } else {\n            return delta.insert(leaf.value(), bubbleFormats(leaf));\n          }\n        }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n      }\n      return this.cache.delta;\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n      this.cache = {};\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length <= 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n        if (index + length === this.length()) {\n          this.format(name, value);\n        }\n      } else {\n        _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n      if (value.length === 0) return;\n      var lines = value.split('\\n');\n      var text = lines.shift();\n      if (text.length > 0) {\n        if (index < this.length() - 1 || this.children.tail == null) {\n          _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n        } else {\n          this.children.tail.insertAt(this.children.tail.length(), text);\n        }\n        this.cache = {};\n      }\n      var block = this;\n      lines.reduce(function (index, line) {\n        block = block.split(index, true);\n        block.insertAt(0, line);\n        return line.length;\n      }, index + text.length);\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      var head = this.children.head;\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n      if (head instanceof _break2.default) {\n        head.remove();\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      if (this.cache.length == null) {\n        this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n      }\n      return this.cache.length;\n    }\n  }, {\n    key: 'moveChildren',\n    value: function moveChildren(target, ref) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n      this.cache = {};\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n      this.cache = {};\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n    }\n  }, {\n    key: 'removeChild',\n    value: function removeChild(child) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n      this.cache = {};\n    }\n  }, {\n    key: 'split',\n    value: function split(index) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n        var clone = this.clone();\n        if (index === 0) {\n          this.parent.insertBefore(clone, this);\n          return this;\n        } else {\n          this.parent.insertBefore(clone, this.next);\n          return clone;\n        }\n      } else {\n        var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n        this.cache = {};\n        return next;\n      }\n    }\n  }]);\n\n  return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (blot == null) return formats;\n  if (typeof blot.formats === 'function') {\n    formats = (0, _extend2.default)(formats, blot.formats());\n  }\n  if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n    return formats;\n  }\n  return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n  _createClass(Quill, null, [{\n    key: 'debug',\n    value: function debug(limit) {\n      if (limit === true) {\n        limit = 'log';\n      }\n      _logger2.default.level(limit);\n    }\n  }, {\n    key: 'find',\n    value: function find(node) {\n      return node.__quill || _parchment2.default.find(node);\n    }\n  }, {\n    key: 'import',\n    value: function _import(name) {\n      if (this.imports[name] == null) {\n        debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n      }\n      return this.imports[name];\n    }\n  }, {\n    key: 'register',\n    value: function register(path, target) {\n      var _this = this;\n\n      var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (typeof path !== 'string') {\n        var name = path.attrName || path.blotName;\n        if (typeof name === 'string') {\n          // register(Blot | Attributor, overwrite)\n          this.register('formats/' + name, path, target);\n        } else {\n          Object.keys(path).forEach(function (key) {\n            _this.register(key, path[key], target);\n          });\n        }\n      } else {\n        if (this.imports[path] != null && !overwrite) {\n          debug.warn('Overwriting ' + path + ' with', target);\n        }\n        this.imports[path] = target;\n        if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n          _parchment2.default.register(target);\n        } else if (path.startsWith('modules') && typeof target.register === 'function') {\n          target.register();\n        }\n      }\n    }\n  }]);\n\n  function Quill(container) {\n    var _this2 = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Quill);\n\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n    if (this.container == null) {\n      return debug.error('Invalid Quill container', container);\n    }\n    if (this.options.debug) {\n      Quill.debug(this.options.debug);\n    }\n    var html = this.container.innerHTML.trim();\n    this.container.classList.add('ql-container');\n    this.container.innerHTML = '';\n    this.container.__quill = this;\n    this.root = this.addContainer('ql-editor');\n    this.root.classList.add('ql-blank');\n    this.root.setAttribute('data-gramm', false);\n    this.scrollingContainer = this.options.scrollingContainer || this.root;\n    this.emitter = new _emitter4.default();\n    this.scroll = _parchment2.default.create(this.root, {\n      emitter: this.emitter,\n      whitelist: this.options.formats\n    });\n    this.editor = new _editor2.default(this.scroll);\n    this.selection = new _selection2.default(this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options);\n    this.keyboard = this.theme.addModule('keyboard');\n    this.clipboard = this.theme.addModule('clipboard');\n    this.history = this.theme.addModule('history');\n    this.theme.init();\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n      if (type === _emitter4.default.events.TEXT_CHANGE) {\n        _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n      var range = _this2.selection.lastRange;\n      var index = range && range.length === 0 ? range.index : undefined;\n      modify.call(_this2, function () {\n        return _this2.editor.update(null, mutations, index);\n      }, source);\n    });\n    var contents = this.clipboard.convert('<div class=\\'ql-editor\\' style=\"white-space: normal;\">' + html + '<p><br></p></div>');\n    this.setContents(contents);\n    this.history.clear();\n    if (this.options.placeholder) {\n      this.root.setAttribute('data-placeholder', this.options.placeholder);\n    }\n    if (this.options.readOnly) {\n      this.disable();\n    }\n  }\n\n  _createClass(Quill, [{\n    key: 'addContainer',\n    value: function addContainer(container) {\n      var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      if (typeof container === 'string') {\n        var className = container;\n        container = document.createElement('div');\n        container.classList.add(className);\n      }\n      this.container.insertBefore(container, refNode);\n      return container;\n    }\n  }, {\n    key: 'blur',\n    value: function blur() {\n      this.selection.setRange(null);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length, source) {\n      var _this3 = this;\n\n      var _overload = overload(index, length, source);\n\n      var _overload2 = _slicedToArray(_overload, 4);\n\n      index = _overload2[0];\n      length = _overload2[1];\n      source = _overload2[3];\n\n      return modify.call(this, function () {\n        return _this3.editor.deleteText(index, length);\n      }, source, index, -1 * length);\n    }\n  }, {\n    key: 'disable',\n    value: function disable() {\n      this.enable(false);\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.scroll.enable(enabled);\n      this.container.classList.toggle('ql-disabled', !enabled);\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      var scrollTop = this.scrollingContainer.scrollTop;\n      this.selection.focus();\n      this.scrollingContainer.scrollTop = scrollTop;\n      this.scrollIntoView();\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var _this4 = this;\n\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        var range = _this4.getSelection(true);\n        var change = new _quillDelta2.default();\n        if (range == null) {\n          return change;\n        } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n          change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n        } else if (range.length === 0) {\n          _this4.selection.format(name, value);\n          return change;\n        } else {\n          change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n        }\n        _this4.setSelection(range, _emitter4.default.sources.SILENT);\n        return change;\n      }, source);\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length, name, value, source) {\n      var _this5 = this;\n\n      var formats = void 0;\n\n      var _overload3 = overload(index, length, name, value, source);\n\n      var _overload4 = _slicedToArray(_overload3, 4);\n\n      index = _overload4[0];\n      length = _overload4[1];\n      formats = _overload4[2];\n      source = _overload4[3];\n\n      return modify.call(this, function () {\n        return _this5.editor.formatLine(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length, name, value, source) {\n      var _this6 = this;\n\n      var formats = void 0;\n\n      var _overload5 = overload(index, length, name, value, source);\n\n      var _overload6 = _slicedToArray(_overload5, 4);\n\n      index = _overload6[0];\n      length = _overload6[1];\n      formats = _overload6[2];\n      source = _overload6[3];\n\n      return modify.call(this, function () {\n        return _this6.editor.formatText(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var bounds = void 0;\n      if (typeof index === 'number') {\n        bounds = this.selection.getBounds(index, length);\n      } else {\n        bounds = this.selection.getBounds(index.index, index.length);\n      }\n      var containerBounds = this.container.getBoundingClientRect();\n      return {\n        bottom: bounds.bottom - containerBounds.top,\n        height: bounds.height,\n        left: bounds.left - containerBounds.left,\n        right: bounds.right - containerBounds.left,\n        top: bounds.top - containerBounds.top,\n        width: bounds.width\n      };\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload7 = overload(index, length);\n\n      var _overload8 = _slicedToArray(_overload7, 2);\n\n      index = _overload8[0];\n      length = _overload8[1];\n\n      return this.editor.getContents(index, length);\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (typeof index === 'number') {\n        return this.editor.getFormat(index, length);\n      } else {\n        return this.editor.getFormat(index.index, index.length);\n      }\n    }\n  }, {\n    key: 'getIndex',\n    value: function getIndex(blot) {\n      return blot.offset(this.scroll);\n    }\n  }, {\n    key: 'getLength',\n    value: function getLength() {\n      return this.scroll.length();\n    }\n  }, {\n    key: 'getLeaf',\n    value: function getLeaf(index) {\n      return this.scroll.leaf(index);\n    }\n  }, {\n    key: 'getLine',\n    value: function getLine(index) {\n      return this.scroll.line(index);\n    }\n  }, {\n    key: 'getLines',\n    value: function getLines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      if (typeof index !== 'number') {\n        return this.scroll.lines(index.index, index.length);\n      } else {\n        return this.scroll.lines(index, length);\n      }\n    }\n  }, {\n    key: 'getModule',\n    value: function getModule(name) {\n      return this.theme.modules[name];\n    }\n  }, {\n    key: 'getSelection',\n    value: function getSelection() {\n      var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (focus) this.focus();\n      this.update(); // Make sure we access getRange with editor in consistent state\n      return this.selection.getRange()[0];\n    }\n  }, {\n    key: 'getText',\n    value: function getText() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload9 = overload(index, length);\n\n      var _overload10 = _slicedToArray(_overload9, 2);\n\n      index = _overload10[0];\n      length = _overload10[1];\n\n      return this.editor.getText(index, length);\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return this.selection.hasFocus();\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      var _this7 = this;\n\n      var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n      return modify.call(this, function () {\n        return _this7.editor.insertEmbed(index, embed, value);\n      }, source, index);\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text, name, value, source) {\n      var _this8 = this;\n\n      var formats = void 0;\n\n      var _overload11 = overload(index, 0, name, value, source);\n\n      var _overload12 = _slicedToArray(_overload11, 4);\n\n      index = _overload12[0];\n      formats = _overload12[2];\n      source = _overload12[3];\n\n      return modify.call(this, function () {\n        return _this8.editor.insertText(index, text, formats);\n      }, source, index, text.length);\n    }\n  }, {\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return !this.container.classList.contains('ql-disabled');\n    }\n  }, {\n    key: 'off',\n    value: function off() {\n      return this.emitter.off.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'on',\n    value: function on() {\n      return this.emitter.on.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'once',\n    value: function once() {\n      return this.emitter.once.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'pasteHTML',\n    value: function pasteHTML(index, html, source) {\n      this.clipboard.dangerouslyPasteHTML(index, html, source);\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length, source) {\n      var _this9 = this;\n\n      var _overload13 = overload(index, length, source);\n\n      var _overload14 = _slicedToArray(_overload13, 4);\n\n      index = _overload14[0];\n      length = _overload14[1];\n      source = _overload14[3];\n\n      return modify.call(this, function () {\n        return _this9.editor.removeFormat(index, length);\n      }, source, index);\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView() {\n      this.selection.scrollIntoView(this.scrollingContainer);\n    }\n  }, {\n    key: 'setContents',\n    value: function setContents(delta) {\n      var _this10 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        var length = _this10.getLength();\n        var deleted = _this10.editor.deleteText(0, length);\n        var applied = _this10.editor.applyDelta(delta);\n        var lastOp = applied.ops[applied.ops.length - 1];\n        if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n          _this10.editor.deleteText(_this10.getLength() - 1, 1);\n          applied.delete(1);\n        }\n        var ret = deleted.compose(applied);\n        return ret;\n      }, source);\n    }\n  }, {\n    key: 'setSelection',\n    value: function setSelection(index, length, source) {\n      if (index == null) {\n        this.selection.setRange(null, length || Quill.sources.API);\n      } else {\n        var _overload15 = overload(index, length, source);\n\n        var _overload16 = _slicedToArray(_overload15, 4);\n\n        index = _overload16[0];\n        length = _overload16[1];\n        source = _overload16[3];\n\n        this.selection.setRange(new _selection.Range(index, length), source);\n        if (source !== _emitter4.default.sources.SILENT) {\n          this.selection.scrollIntoView(this.scrollingContainer);\n        }\n      }\n    }\n  }, {\n    key: 'setText',\n    value: function setText(text) {\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      var delta = new _quillDelta2.default().insert(text);\n      return this.setContents(delta, source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n      this.selection.update(source);\n      return change;\n    }\n  }, {\n    key: 'updateContents',\n    value: function updateContents(delta) {\n      var _this11 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        return _this11.editor.applyDelta(delta, source);\n      }, source, true);\n    }\n  }]);\n\n  return Quill;\n}();\n\nQuill.DEFAULTS = {\n  bounds: null,\n  formats: null,\n  modules: {},\n  placeholder: '',\n  readOnly: false,\n  scrollingContainer: null,\n  strict: true,\n  theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version =  false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n  'delta': _quillDelta2.default,\n  'parchment': _parchment2.default,\n  'core/module': _module2.default,\n  'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n  userConfig = (0, _extend2.default)(true, {\n    container: container,\n    modules: {\n      clipboard: true,\n      keyboard: true,\n      history: true\n    }\n  }, userConfig);\n  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n    userConfig.theme = _theme2.default;\n  } else {\n    userConfig.theme = Quill.import('themes/' + userConfig.theme);\n    if (userConfig.theme == null) {\n      throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n    }\n  }\n  var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n  [themeConfig, userConfig].forEach(function (config) {\n    config.modules = config.modules || {};\n    Object.keys(config.modules).forEach(function (module) {\n      if (config.modules[module] === true) {\n        config.modules[module] = {};\n      }\n    });\n  });\n  var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n  var moduleConfig = moduleNames.reduce(function (config, name) {\n    var moduleClass = Quill.import('modules/' + name);\n    if (moduleClass == null) {\n      debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n    } else {\n      config[name] = moduleClass.DEFAULTS || {};\n    }\n    return config;\n  }, {});\n  // Special case toolbar shorthand\n  if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n    userConfig.modules.toolbar = {\n      container: userConfig.modules.toolbar\n    };\n  }\n  userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n  ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n    if (typeof userConfig[key] === 'string') {\n      userConfig[key] = document.querySelector(userConfig[key]);\n    }\n  });\n  userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n    if (userConfig.modules[name]) {\n      config[name] = userConfig.modules[name];\n    }\n    return config;\n  }, {});\n  return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n  if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n    return new _quillDelta2.default();\n  }\n  var range = index == null ? null : this.getSelection();\n  var oldDelta = this.editor.delta;\n  var change = modifier();\n  if (range != null) {\n    if (index === true) index = range.index;\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      range = shiftRange(range, index, shift, source);\n    }\n    this.setSelection(range, _emitter4.default.sources.SILENT);\n  }\n  if (change.length() > 0) {\n    var _emitter;\n\n    var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n    (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n    if (source !== _emitter4.default.sources.SILENT) {\n      var _emitter2;\n\n      (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n    }\n  }\n  return change;\n}\n\nfunction overload(index, length, name, value, source) {\n  var formats = {};\n  if (typeof index.index === 'number' && typeof index.length === 'number') {\n    // Allow for throwaway end (used by insertText/insertEmbed)\n    if (typeof length !== 'number') {\n      source = value, value = name, name = length, length = index.length, index = index.index;\n    } else {\n      length = index.length, index = index.index;\n    }\n  } else if (typeof length !== 'number') {\n    source = value, value = name, name = length, length = 0;\n  }\n  // Handle format being object, two format name/value strings or excluded\n  if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n    formats = name;\n    source = value;\n  } else if (typeof name === 'string') {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      source = name;\n    }\n  }\n  // Handle optional source\n  source = source || _emitter4.default.sources.API;\n  return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n  if (range == null) return null;\n  var start = void 0,\n      end = void 0;\n  if (index instanceof _quillDelta2.default) {\n    var _map = [range.index, range.index + range.length].map(function (pos) {\n      return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n    });\n\n    var _map2 = _slicedToArray(_map, 2);\n\n    start = _map2[0];\n    end = _map2[1];\n  } else {\n    var _map3 = [range.index, range.index + range.length].map(function (pos) {\n      if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n      if (length >= 0) {\n        return pos + length;\n      } else {\n        return Math.max(index, pos + length);\n      }\n    });\n\n    var _map4 = _slicedToArray(_map3, 2);\n\n    start = _map4[0];\n    end = _map4[1];\n  }\n  return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n  _inherits(Inline, _Parchment$Inline);\n\n  function Inline() {\n    _classCallCheck(this, Inline);\n\n    return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n  }\n\n  _createClass(Inline, [{\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n        var blot = this.isolate(index, length);\n        if (value) {\n          blot.wrap(name, value);\n        }\n      } else {\n        _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n      if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n        var parent = this.parent.isolate(this.offset(), this.length());\n        this.moveChildren(parent);\n        parent.wrap(this);\n      }\n    }\n  }], [{\n    key: 'compare',\n    value: function compare(self, other) {\n      var selfIndex = Inline.order.indexOf(self);\n      var otherIndex = Inline.order.indexOf(other);\n      if (selfIndex >= 0 || otherIndex >= 0) {\n        return selfIndex - otherIndex;\n      } else if (self === other) {\n        return 0;\n      } else if (self < other) {\n        return -1;\n      } else {\n        return 1;\n      }\n    }\n  }]);\n\n  return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n  _inherits(TextBlot, _Parchment$Text);\n\n  function TextBlot() {\n    _classCallCheck(this, TextBlot);\n\n    return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n  }\n\n  return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n  document.addEventListener(eventName, function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n      // TODO use WeakMap\n      if (node.__quill && node.__quill.emitter) {\n        var _node$__quill$emitter;\n\n        (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n      }\n    });\n  });\n});\n\nvar Emitter = function (_EventEmitter) {\n  _inherits(Emitter, _EventEmitter);\n\n  function Emitter() {\n    _classCallCheck(this, Emitter);\n\n    var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n    _this.listeners = {};\n    _this.on('error', debug.error);\n    return _this;\n  }\n\n  _createClass(Emitter, [{\n    key: 'emit',\n    value: function emit() {\n      debug.log.apply(debug, arguments);\n      _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n    }\n  }, {\n    key: 'handleDOM',\n    value: function handleDOM(event) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      (this.listeners[event.type] || []).forEach(function (_ref) {\n        var node = _ref.node,\n            handler = _ref.handler;\n\n        if (event.target === node || node.contains(event.target)) {\n          handler.apply(undefined, [event].concat(args));\n        }\n      });\n    }\n  }, {\n    key: 'listenDOM',\n    value: function listenDOM(eventName, node, handler) {\n      if (!this.listeners[eventName]) {\n        this.listeners[eventName] = [];\n      }\n      this.listeners[eventName].push({ node: node, handler: handler });\n    }\n  }]);\n\n  return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n  EDITOR_CHANGE: 'editor-change',\n  SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n  SCROLL_OPTIMIZE: 'scroll-optimize',\n  SCROLL_UPDATE: 'scroll-update',\n  SELECTION_CHANGE: 'selection-change',\n  TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n  API: 'api',\n  SILENT: 'silent',\n  USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  _classCallCheck(this, Module);\n\n  this.quill = quill;\n  this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n  if (levels.indexOf(method) <= levels.indexOf(level)) {\n    var _console;\n\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n  }\n}\n\nfunction namespace(ns) {\n  return levels.reduce(function (logger, method) {\n    logger[method] = debug.bind(console, method, ns);\n    return logger;\n  }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n  level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n    function Attributor(attrName, keyName, options) {\n        if (options === void 0) { options = {}; }\n        this.attrName = attrName;\n        this.keyName = keyName;\n        var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n        if (options.scope != null) {\n            // Ignore type bits, force attribute bit\n            this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n        }\n        else {\n            this.scope = Registry.Scope.ATTRIBUTE;\n        }\n        if (options.whitelist != null)\n            this.whitelist = options.whitelist;\n    }\n    Attributor.keys = function (node) {\n        return [].map.call(node.attributes, function (item) {\n            return item.name;\n        });\n    };\n    Attributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        node.setAttribute(this.keyName, value);\n        return true;\n    };\n    Attributor.prototype.canAdd = function (node, value) {\n        var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n        if (match == null)\n            return false;\n        if (this.whitelist == null)\n            return true;\n        if (typeof value === 'string') {\n            return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n        }\n        else {\n            return this.whitelist.indexOf(value) > -1;\n        }\n    };\n    Attributor.prototype.remove = function (node) {\n        node.removeAttribute(this.keyName);\n    };\n    Attributor.prototype.value = function (node) {\n        var value = node.getAttribute(this.keyName);\n        if (this.canAdd(node, value) && value) {\n            return value;\n        }\n        return '';\n    };\n    return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n  _inherits(Code, _Inline);\n\n  function Code() {\n    _classCallCheck(this, Code);\n\n    return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n  }\n\n  return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n  _inherits(CodeBlock, _Block);\n\n  function CodeBlock() {\n    _classCallCheck(this, CodeBlock);\n\n    return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(CodeBlock, [{\n    key: 'delta',\n    value: function delta() {\n      var _this3 = this;\n\n      var text = this.domNode.textContent;\n      if (text.endsWith('\\n')) {\n        // Should always be true\n        text = text.slice(0, -1);\n      }\n      return text.split('\\n').reduce(function (delta, frag) {\n        return delta.insert(frag).insert('\\n', _this3.formats());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (name === this.statics.blotName && value) return;\n\n      var _descendant = this.descendant(_text2.default, this.length() - 1),\n          _descendant2 = _slicedToArray(_descendant, 1),\n          text = _descendant2[0];\n\n      if (text != null) {\n        text.deleteAt(text.length() - 1, 1);\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length === 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n        return;\n      }\n      var nextNewline = this.newlineIndex(index);\n      if (nextNewline < 0 || nextNewline >= index + length) return;\n      var prevNewline = this.newlineIndex(index, true) + 1;\n      var isolateLength = nextNewline - prevNewline + 1;\n      var blot = this.isolate(prevNewline, isolateLength);\n      var next = blot.next;\n      blot.format(name, value);\n      if (next instanceof CodeBlock) {\n        next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n      }\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return;\n\n      var _descendant3 = this.descendant(_text2.default, index),\n          _descendant4 = _slicedToArray(_descendant3, 2),\n          text = _descendant4[0],\n          offset = _descendant4[1];\n\n      text.insertAt(offset, value);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      var length = this.domNode.textContent.length;\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        return length + 1;\n      }\n      return length;\n    }\n  }, {\n    key: 'newlineIndex',\n    value: function newlineIndex(searchIndex) {\n      var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!reverse) {\n        var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n        return offset > -1 ? searchIndex + offset : -1;\n      } else {\n        return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        this.appendChild(_parchment2.default.create('text', '\\n'));\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n        next.optimize(context);\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n      [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n        var blot = _parchment2.default.find(node);\n        if (blot == null) {\n          node.parentNode.removeChild(node);\n        } else if (blot instanceof _parchment2.default.Embed) {\n          blot.remove();\n        } else {\n          blot.unwrap();\n        }\n      });\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n      domNode.setAttribute('spellcheck', false);\n      return domNode;\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = '  ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n  function Editor(scroll) {\n    _classCallCheck(this, Editor);\n\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n\n  _createClass(Editor, [{\n    key: 'applyDelta',\n    value: function applyDelta(delta) {\n      var _this = this;\n\n      var consumeNextNewline = false;\n      this.scroll.update();\n      var scrollLength = this.scroll.length();\n      this.scroll.batchStart();\n      delta = normalizeDelta(delta);\n      delta.reduce(function (index, op) {\n        var length = op.retain || op.delete || op.insert.length || 1;\n        var attributes = op.attributes || {};\n        if (op.insert != null) {\n          if (typeof op.insert === 'string') {\n            var text = op.insert;\n            if (text.endsWith('\\n') && consumeNextNewline) {\n              consumeNextNewline = false;\n              text = text.slice(0, -1);\n            }\n            if (index >= scrollLength && !text.endsWith('\\n')) {\n              consumeNextNewline = true;\n            }\n            _this.scroll.insertAt(index, text);\n\n            var _scroll$line = _this.scroll.line(index),\n                _scroll$line2 = _slicedToArray(_scroll$line, 2),\n                line = _scroll$line2[0],\n                offset = _scroll$line2[1];\n\n            var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n            if (line instanceof _block2.default) {\n              var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n                  _line$descendant2 = _slicedToArray(_line$descendant, 1),\n                  leaf = _line$descendant2[0];\n\n              formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n            }\n            attributes = _op2.default.attributes.diff(formats, attributes) || {};\n          } else if (_typeof(op.insert) === 'object') {\n            var key = Object.keys(op.insert)[0]; // There should only be one key\n            if (key == null) return index;\n            _this.scroll.insertAt(index, key, op.insert[key]);\n          }\n          scrollLength += length;\n        }\n        Object.keys(attributes).forEach(function (name) {\n          _this.scroll.formatAt(index, length, name, attributes[name]);\n        });\n        return index + length;\n      }, 0);\n      delta.reduce(function (index, op) {\n        if (typeof op.delete === 'number') {\n          _this.scroll.deleteAt(index, op.delete);\n          return index;\n        }\n        return index + (op.retain || op.insert.length || 1);\n      }, 0);\n      this.scroll.batchEnd();\n      return this.update(delta);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length) {\n      this.scroll.deleteAt(index, length);\n      return this.update(new _quillDelta2.default().retain(index).delete(length));\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length) {\n      var _this2 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      this.scroll.update();\n      Object.keys(formats).forEach(function (format) {\n        if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n        var lines = _this2.scroll.lines(index, Math.max(length, 1));\n        var lengthRemaining = length;\n        lines.forEach(function (line) {\n          var lineLength = line.length();\n          if (!(line instanceof _code2.default)) {\n            line.format(format, formats[format]);\n          } else {\n            var codeIndex = index - line.offset(_this2.scroll);\n            var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n            line.formatAt(codeIndex, codeLength, format, formats[format]);\n          }\n          lengthRemaining -= lineLength;\n        });\n      });\n      this.scroll.optimize();\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length) {\n      var _this3 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      Object.keys(formats).forEach(function (format) {\n        _this3.scroll.formatAt(index, length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents(index, length) {\n      return this.delta.slice(index, index + length);\n    }\n  }, {\n    key: 'getDelta',\n    value: function getDelta() {\n      return this.scroll.lines().reduce(function (delta, line) {\n        return delta.concat(line.delta());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var lines = [],\n          leaves = [];\n      if (length === 0) {\n        this.scroll.path(index).forEach(function (path) {\n          var _path = _slicedToArray(path, 1),\n              blot = _path[0];\n\n          if (blot instanceof _block2.default) {\n            lines.push(blot);\n          } else if (blot instanceof _parchment2.default.Leaf) {\n            leaves.push(blot);\n          }\n        });\n      } else {\n        lines = this.scroll.lines(index, length);\n        leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n      }\n      var formatsArr = [lines, leaves].map(function (blots) {\n        if (blots.length === 0) return {};\n        var formats = (0, _block.bubbleFormats)(blots.shift());\n        while (Object.keys(formats).length > 0) {\n          var blot = blots.shift();\n          if (blot == null) return formats;\n          formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n        }\n        return formats;\n      });\n      return _extend2.default.apply(_extend2.default, formatsArr);\n    }\n  }, {\n    key: 'getText',\n    value: function getText(index, length) {\n      return this.getContents(index, length).filter(function (op) {\n        return typeof op.insert === 'string';\n      }).map(function (op) {\n        return op.insert;\n      }).join('');\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      this.scroll.insertAt(index, embed, value);\n      return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text) {\n      var _this4 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      this.scroll.insertAt(index, text);\n      Object.keys(formats).forEach(function (format) {\n        _this4.scroll.formatAt(index, text.length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'isBlank',\n    value: function isBlank() {\n      if (this.scroll.children.length == 0) return true;\n      if (this.scroll.children.length > 1) return false;\n      var block = this.scroll.children.head;\n      if (block.statics.blotName !== _block2.default.blotName) return false;\n      if (block.children.length > 1) return false;\n      return block.children.head instanceof _break2.default;\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length) {\n      var text = this.getText(index, length);\n\n      var _scroll$line3 = this.scroll.line(index + length),\n          _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n          line = _scroll$line4[0],\n          offset = _scroll$line4[1];\n\n      var suffixLength = 0,\n          suffix = new _quillDelta2.default();\n      if (line != null) {\n        if (!(line instanceof _code2.default)) {\n          suffixLength = line.length() - offset;\n        } else {\n          suffixLength = line.newlineIndex(offset) - offset + 1;\n        }\n        suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n      }\n      var contents = this.getContents(index, length + suffixLength);\n      var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n      var delta = new _quillDelta2.default().retain(index).concat(diff);\n      return this.applyDelta(delta);\n    }\n  }, {\n    key: 'update',\n    value: function update(change) {\n      var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n      var oldDelta = this.delta;\n      if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n        // Optimization for character changes\n        var textBlot = _parchment2.default.find(mutations[0].target);\n        var formats = (0, _block.bubbleFormats)(textBlot);\n        var index = textBlot.offset(this.scroll);\n        var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n        var oldText = new _quillDelta2.default().insert(oldValue);\n        var newText = new _quillDelta2.default().insert(textBlot.value());\n        var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n        change = diffDelta.reduce(function (delta, op) {\n          if (op.insert) {\n            return delta.insert(op.insert, formats);\n          } else {\n            return delta.push(op);\n          }\n        }, new _quillDelta2.default());\n        this.delta = oldDelta.compose(change);\n      } else {\n        this.delta = this.getDelta();\n        if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n          change = oldDelta.diff(this.delta, cursorIndex);\n        }\n      }\n      return change;\n    }\n  }]);\n\n  return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n  return Object.keys(combined).reduce(function (merged, name) {\n    if (formats[name] == null) return merged;\n    if (combined[name] === formats[name]) {\n      merged[name] = combined[name];\n    } else if (Array.isArray(combined[name])) {\n      if (combined[name].indexOf(formats[name]) < 0) {\n        merged[name] = combined[name].concat([formats[name]]);\n      }\n    } else {\n      merged[name] = [combined[name], formats[name]];\n    }\n    return merged;\n  }, {});\n}\n\nfunction normalizeDelta(delta) {\n  return delta.reduce(function (delta, op) {\n    if (op.insert === 1) {\n      var attributes = (0, _clone2.default)(op.attributes);\n      delete attributes['image'];\n      return delta.insert({ image: op.attributes.image }, attributes);\n    }\n    if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n      op = (0, _clone2.default)(op);\n      if (op.attributes.list) {\n        op.attributes.list = 'ordered';\n      } else {\n        op.attributes.list = 'bullet';\n        delete op.attributes.bullet;\n      }\n    }\n    if (typeof op.insert === 'string') {\n      var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      return delta.insert(text, op.attributes);\n    }\n    return delta.push(op);\n  }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n  var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n  _classCallCheck(this, Range);\n\n  this.index = index;\n  this.length = length;\n};\n\nvar Selection = function () {\n  function Selection(scroll, emitter) {\n    var _this = this;\n\n    _classCallCheck(this, Selection);\n\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.mouseDown = false;\n    this.root = this.scroll.domNode;\n    this.cursor = _parchment2.default.create('cursor', this);\n    // savedRange is last non-null range\n    this.lastRange = this.savedRange = new Range(0, 0);\n    this.handleComposition();\n    this.handleDragging();\n    this.emitter.listenDOM('selectionchange', document, function () {\n      if (!_this.mouseDown) {\n        setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n      if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n        _this.update(_emitter4.default.sources.SILENT);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n      if (!_this.hasFocus()) return;\n      var native = _this.getNativeRange();\n      if (native == null) return;\n      if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n      // TODO unclear if this has negative side effects\n      _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n        try {\n          _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n        } catch (ignored) {}\n      });\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n      if (context.range) {\n        var _context$range = context.range,\n            startNode = _context$range.startNode,\n            startOffset = _context$range.startOffset,\n            endNode = _context$range.endNode,\n            endOffset = _context$range.endOffset;\n\n        _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n      }\n    });\n    this.update(_emitter4.default.sources.SILENT);\n  }\n\n  _createClass(Selection, [{\n    key: 'handleComposition',\n    value: function handleComposition() {\n      var _this2 = this;\n\n      this.root.addEventListener('compositionstart', function () {\n        _this2.composing = true;\n      });\n      this.root.addEventListener('compositionend', function () {\n        _this2.composing = false;\n        if (_this2.cursor.parent) {\n          var range = _this2.cursor.restore();\n          if (!range) return;\n          setTimeout(function () {\n            _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n          }, 1);\n        }\n      });\n    }\n  }, {\n    key: 'handleDragging',\n    value: function handleDragging() {\n      var _this3 = this;\n\n      this.emitter.listenDOM('mousedown', document.body, function () {\n        _this3.mouseDown = true;\n      });\n      this.emitter.listenDOM('mouseup', document.body, function () {\n        _this3.mouseDown = false;\n        _this3.update(_emitter4.default.sources.USER);\n      });\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      if (this.hasFocus()) return;\n      this.root.focus();\n      this.setRange(this.savedRange);\n    }\n  }, {\n    key: 'format',\n    value: function format(_format, value) {\n      if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n      this.scroll.update();\n      var nativeRange = this.getNativeRange();\n      if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n      if (nativeRange.start.node !== this.cursor.textNode) {\n        var blot = _parchment2.default.find(nativeRange.start.node, false);\n        if (blot == null) return;\n        // TODO Give blot ability to not split\n        if (blot instanceof _parchment2.default.Leaf) {\n          var after = blot.split(nativeRange.start.offset);\n          blot.parent.insertBefore(this.cursor, after);\n        } else {\n          blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n        }\n        this.cursor.attach();\n      }\n      this.cursor.format(_format, value);\n      this.scroll.optimize();\n      this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n      this.update();\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var scrollLength = this.scroll.length();\n      index = Math.min(index, scrollLength - 1);\n      length = Math.min(index + length, scrollLength - 1) - index;\n      var node = void 0,\n          _scroll$leaf = this.scroll.leaf(index),\n          _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n          leaf = _scroll$leaf2[0],\n          offset = _scroll$leaf2[1];\n      if (leaf == null) return null;\n\n      var _leaf$position = leaf.position(offset, true);\n\n      var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n      node = _leaf$position2[0];\n      offset = _leaf$position2[1];\n\n      var range = document.createRange();\n      if (length > 0) {\n        range.setStart(node, offset);\n\n        var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n        var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n        leaf = _scroll$leaf4[0];\n        offset = _scroll$leaf4[1];\n\n        if (leaf == null) return null;\n\n        var _leaf$position3 = leaf.position(offset, true);\n\n        var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n        node = _leaf$position4[0];\n        offset = _leaf$position4[1];\n\n        range.setEnd(node, offset);\n        return range.getBoundingClientRect();\n      } else {\n        var side = 'left';\n        var rect = void 0;\n        if (node instanceof Text) {\n          if (offset < node.data.length) {\n            range.setStart(node, offset);\n            range.setEnd(node, offset + 1);\n          } else {\n            range.setStart(node, offset - 1);\n            range.setEnd(node, offset);\n            side = 'right';\n          }\n          rect = range.getBoundingClientRect();\n        } else {\n          rect = leaf.domNode.getBoundingClientRect();\n          if (offset > 0) side = 'right';\n        }\n        return {\n          bottom: rect.top + rect.height,\n          height: rect.height,\n          left: rect[side],\n          right: rect[side],\n          top: rect.top,\n          width: 0\n        };\n      }\n    }\n  }, {\n    key: 'getNativeRange',\n    value: function getNativeRange() {\n      var selection = document.getSelection();\n      if (selection == null || selection.rangeCount <= 0) return null;\n      var nativeRange = selection.getRangeAt(0);\n      if (nativeRange == null) return null;\n      var range = this.normalizeNative(nativeRange);\n      debug.info('getNativeRange', range);\n      return range;\n    }\n  }, {\n    key: 'getRange',\n    value: function getRange() {\n      var normalized = this.getNativeRange();\n      if (normalized == null) return [null, null];\n      var range = this.normalizedToRange(normalized);\n      return [range, normalized];\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return document.activeElement === this.root;\n    }\n  }, {\n    key: 'normalizedToRange',\n    value: function normalizedToRange(range) {\n      var _this4 = this;\n\n      var positions = [[range.start.node, range.start.offset]];\n      if (!range.native.collapsed) {\n        positions.push([range.end.node, range.end.offset]);\n      }\n      var indexes = positions.map(function (position) {\n        var _position = _slicedToArray(position, 2),\n            node = _position[0],\n            offset = _position[1];\n\n        var blot = _parchment2.default.find(node, true);\n        var index = blot.offset(_this4.scroll);\n        if (offset === 0) {\n          return index;\n        } else if (blot instanceof _parchment2.default.Container) {\n          return index + blot.length();\n        } else {\n          return index + blot.index(node, offset);\n        }\n      });\n      var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n      var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n      return new Range(start, end - start);\n    }\n  }, {\n    key: 'normalizeNative',\n    value: function normalizeNative(nativeRange) {\n      if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n        return null;\n      }\n      var range = {\n        start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n        end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n        native: nativeRange\n      };\n      [range.start, range.end].forEach(function (position) {\n        var node = position.node,\n            offset = position.offset;\n        while (!(node instanceof Text) && node.childNodes.length > 0) {\n          if (node.childNodes.length > offset) {\n            node = node.childNodes[offset];\n            offset = 0;\n          } else if (node.childNodes.length === offset) {\n            node = node.lastChild;\n            offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n          } else {\n            break;\n          }\n        }\n        position.node = node, position.offset = offset;\n      });\n      return range;\n    }\n  }, {\n    key: 'rangeToNative',\n    value: function rangeToNative(range) {\n      var _this5 = this;\n\n      var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n      var args = [];\n      var scrollLength = this.scroll.length();\n      indexes.forEach(function (index, i) {\n        index = Math.min(scrollLength - 1, index);\n        var node = void 0,\n            _scroll$leaf5 = _this5.scroll.leaf(index),\n            _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n            leaf = _scroll$leaf6[0],\n            offset = _scroll$leaf6[1];\n        var _leaf$position5 = leaf.position(offset, i !== 0);\n\n        var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n        node = _leaf$position6[0];\n        offset = _leaf$position6[1];\n\n        args.push(node, offset);\n      });\n      if (args.length < 2) {\n        args = args.concat(args);\n      }\n      return args;\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView(scrollingContainer) {\n      var range = this.lastRange;\n      if (range == null) return;\n      var bounds = this.getBounds(range.index, range.length);\n      if (bounds == null) return;\n      var limit = this.scroll.length() - 1;\n\n      var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n          _scroll$line2 = _slicedToArray(_scroll$line, 1),\n          first = _scroll$line2[0];\n\n      var last = first;\n      if (range.length > 0) {\n        var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n        var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n        last = _scroll$line4[0];\n      }\n      if (first == null || last == null) return;\n      var scrollBounds = scrollingContainer.getBoundingClientRect();\n      if (bounds.top < scrollBounds.top) {\n        scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n      } else if (bounds.bottom > scrollBounds.bottom) {\n        scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n      }\n    }\n  }, {\n    key: 'setNativeRange',\n    value: function setNativeRange(startNode, startOffset) {\n      var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n      var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n      var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n      debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n      if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n        return;\n      }\n      var selection = document.getSelection();\n      if (selection == null) return;\n      if (startNode != null) {\n        if (!this.hasFocus()) this.root.focus();\n        var native = (this.getNativeRange() || {}).native;\n        if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n          if (startNode.tagName == \"BR\") {\n            startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n            startNode = startNode.parentNode;\n          }\n          if (endNode.tagName == \"BR\") {\n            endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n            endNode = endNode.parentNode;\n          }\n          var range = document.createRange();\n          range.setStart(startNode, startOffset);\n          range.setEnd(endNode, endOffset);\n          selection.removeAllRanges();\n          selection.addRange(range);\n        }\n      } else {\n        selection.removeAllRanges();\n        this.root.blur();\n        document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n      }\n    }\n  }, {\n    key: 'setRange',\n    value: function setRange(range) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      if (typeof force === 'string') {\n        source = force;\n        force = false;\n      }\n      debug.info('setRange', range);\n      if (range != null) {\n        var args = this.rangeToNative(range);\n        this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n      } else {\n        this.setNativeRange(null);\n      }\n      this.update(source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var oldRange = this.lastRange;\n\n      var _getRange = this.getRange(),\n          _getRange2 = _slicedToArray(_getRange, 2),\n          lastRange = _getRange2[0],\n          nativeRange = _getRange2[1];\n\n      this.lastRange = lastRange;\n      if (this.lastRange != null) {\n        this.savedRange = this.lastRange;\n      }\n      if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n        var _emitter;\n\n        if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n          this.cursor.restore();\n        }\n        var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n        (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n        if (source !== _emitter4.default.sources.SILENT) {\n          var _emitter2;\n\n          (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n        }\n      }\n    }\n  }]);\n\n  return Selection;\n}();\n\nfunction contains(parent, descendant) {\n  try {\n    // Firefox inserts inaccessible nodes around video elements\n    descendant.parentNode;\n  } catch (e) {\n    return false;\n  }\n  // IE11 has bug with Text nodes\n  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n  if (descendant instanceof Text) {\n    descendant = descendant.parentNode;\n  }\n  return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n  _inherits(Break, _Parchment$Embed);\n\n  function Break() {\n    _classCallCheck(this, Break);\n\n    return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n  }\n\n  _createClass(Break, [{\n    key: 'insertInto',\n    value: function insertInto(parent, ref) {\n      if (parent.children.length === 0) {\n        _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n      } else {\n        this.remove();\n      }\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return 0;\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }], [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n    __extends(ContainerBlot, _super);\n    function ContainerBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.build();\n        return _this;\n    }\n    ContainerBlot.prototype.appendChild = function (other) {\n        this.insertBefore(other);\n    };\n    ContainerBlot.prototype.attach = function () {\n        _super.prototype.attach.call(this);\n        this.children.forEach(function (child) {\n            child.attach();\n        });\n    };\n    ContainerBlot.prototype.build = function () {\n        var _this = this;\n        this.children = new linked_list_1.default();\n        // Need to be reversed for if DOM nodes already in order\n        [].slice\n            .call(this.domNode.childNodes)\n            .reverse()\n            .forEach(function (node) {\n            try {\n                var child = makeBlot(node);\n                _this.insertBefore(child, _this.children.head || undefined);\n            }\n            catch (err) {\n                if (err instanceof Registry.ParchmentError)\n                    return;\n                else\n                    throw err;\n            }\n        });\n    };\n    ContainerBlot.prototype.deleteAt = function (index, length) {\n        if (index === 0 && length === this.length()) {\n            return this.remove();\n        }\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.deleteAt(offset, length);\n        });\n    };\n    ContainerBlot.prototype.descendant = function (criteria, index) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if ((criteria.blotName == null && criteria(child)) ||\n            (criteria.blotName != null && child instanceof criteria)) {\n            return [child, offset];\n        }\n        else if (child instanceof ContainerBlot) {\n            return child.descendant(criteria, offset);\n        }\n        else {\n            return [null, -1];\n        }\n    };\n    ContainerBlot.prototype.descendants = function (criteria, index, length) {\n        if (index === void 0) { index = 0; }\n        if (length === void 0) { length = Number.MAX_VALUE; }\n        var descendants = [];\n        var lengthLeft = length;\n        this.children.forEachAt(index, length, function (child, index, length) {\n            if ((criteria.blotName == null && criteria(child)) ||\n                (criteria.blotName != null && child instanceof criteria)) {\n                descendants.push(child);\n            }\n            if (child instanceof ContainerBlot) {\n                descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n            }\n            lengthLeft -= length;\n        });\n        return descendants;\n    };\n    ContainerBlot.prototype.detach = function () {\n        this.children.forEach(function (child) {\n            child.detach();\n        });\n        _super.prototype.detach.call(this);\n    };\n    ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.formatAt(offset, length, name, value);\n        });\n    };\n    ContainerBlot.prototype.insertAt = function (index, value, def) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if (child) {\n            child.insertAt(offset, value, def);\n        }\n        else {\n            var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n            this.appendChild(blot);\n        }\n    };\n    ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n        if (this.statics.allowedChildren != null &&\n            !this.statics.allowedChildren.some(function (child) {\n                return childBlot instanceof child;\n            })) {\n            throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n        }\n        childBlot.insertInto(this, refBlot);\n    };\n    ContainerBlot.prototype.length = function () {\n        return this.children.reduce(function (memo, child) {\n            return memo + child.length();\n        }, 0);\n    };\n    ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n        this.children.forEach(function (child) {\n            targetParent.insertBefore(child, refNode);\n        });\n    };\n    ContainerBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        if (this.children.length === 0) {\n            if (this.statics.defaultChild != null) {\n                var child = Registry.create(this.statics.defaultChild);\n                this.appendChild(child);\n                child.optimize(context);\n            }\n            else {\n                this.remove();\n            }\n        }\n    };\n    ContainerBlot.prototype.path = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n        var position = [[this, index]];\n        if (child instanceof ContainerBlot) {\n            return position.concat(child.path(offset, inclusive));\n        }\n        else if (child != null) {\n            position.push([child, offset]);\n        }\n        return position;\n    };\n    ContainerBlot.prototype.removeChild = function (child) {\n        this.children.remove(child);\n    };\n    ContainerBlot.prototype.replace = function (target) {\n        if (target instanceof ContainerBlot) {\n            target.moveChildren(this);\n        }\n        _super.prototype.replace.call(this, target);\n    };\n    ContainerBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = this.clone();\n        this.parent.insertBefore(after, this.next);\n        this.children.forEachAt(index, this.length(), function (child, offset, length) {\n            child = child.split(offset, force);\n            after.appendChild(child);\n        });\n        return after;\n    };\n    ContainerBlot.prototype.unwrap = function () {\n        this.moveChildren(this.parent, this.next);\n        this.remove();\n    };\n    ContainerBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        var addedNodes = [];\n        var removedNodes = [];\n        mutations.forEach(function (mutation) {\n            if (mutation.target === _this.domNode && mutation.type === 'childList') {\n                addedNodes.push.apply(addedNodes, mutation.addedNodes);\n                removedNodes.push.apply(removedNodes, mutation.removedNodes);\n            }\n        });\n        removedNodes.forEach(function (node) {\n            // Check node has actually been removed\n            // One exception is Chrome does not immediately remove IFRAMEs\n            // from DOM but MutationRecord is correct in its reported removal\n            if (node.parentNode != null &&\n                // @ts-ignore\n                node.tagName !== 'IFRAME' &&\n                document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n                return;\n            }\n            var blot = Registry.find(node);\n            if (blot == null)\n                return;\n            if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n                blot.detach();\n            }\n        });\n        addedNodes\n            .filter(function (node) {\n            return node.parentNode == _this.domNode;\n        })\n            .sort(function (a, b) {\n            if (a === b)\n                return 0;\n            if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n                return 1;\n            }\n            return -1;\n        })\n            .forEach(function (node) {\n            var refBlot = null;\n            if (node.nextSibling != null) {\n                refBlot = Registry.find(node.nextSibling);\n            }\n            var blot = makeBlot(node);\n            if (blot.next != refBlot || blot.next == null) {\n                if (blot.parent != null) {\n                    blot.parent.removeChild(_this);\n                }\n                _this.insertBefore(blot, refBlot || undefined);\n            }\n        });\n    };\n    return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n    var blot = Registry.find(node);\n    if (blot == null) {\n        try {\n            blot = Registry.create(node);\n        }\n        catch (e) {\n            blot = Registry.create(Registry.Scope.INLINE);\n            [].slice.call(node.childNodes).forEach(function (child) {\n                // @ts-ignore\n                blot.domNode.appendChild(child);\n            });\n            if (node.parentNode) {\n                node.parentNode.replaceChild(blot.domNode, node);\n            }\n            blot.attach();\n        }\n    }\n    return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n    __extends(FormatBlot, _super);\n    function FormatBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.attributes = new store_1.default(_this.domNode);\n        return _this;\n    }\n    FormatBlot.formats = function (domNode) {\n        if (typeof this.tagName === 'string') {\n            return true;\n        }\n        else if (Array.isArray(this.tagName)) {\n            return domNode.tagName.toLowerCase();\n        }\n        return undefined;\n    };\n    FormatBlot.prototype.format = function (name, value) {\n        var format = Registry.query(name);\n        if (format instanceof attributor_1.default) {\n            this.attributes.attribute(format, value);\n        }\n        else if (value) {\n            if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n                this.replaceWith(name, value);\n            }\n        }\n    };\n    FormatBlot.prototype.formats = function () {\n        var formats = this.attributes.values();\n        var format = this.statics.formats(this.domNode);\n        if (format != null) {\n            formats[this.statics.blotName] = format;\n        }\n        return formats;\n    };\n    FormatBlot.prototype.replaceWith = function (name, value) {\n        var replacement = _super.prototype.replaceWith.call(this, name, value);\n        this.attributes.copy(replacement);\n        return replacement;\n    };\n    FormatBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        _super.prototype.update.call(this, mutations, context);\n        if (mutations.some(function (mutation) {\n            return mutation.target === _this.domNode && mutation.type === 'attributes';\n        })) {\n            this.attributes.build();\n        }\n    };\n    FormatBlot.prototype.wrap = function (name, value) {\n        var wrapper = _super.prototype.wrap.call(this, name, value);\n        if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n            this.attributes.move(wrapper);\n        }\n        return wrapper;\n    };\n    return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n    __extends(LeafBlot, _super);\n    function LeafBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    LeafBlot.value = function (domNode) {\n        return true;\n    };\n    LeafBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node ||\n            this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n            return Math.min(offset, 1);\n        }\n        return -1;\n    };\n    LeafBlot.prototype.position = function (index, inclusive) {\n        var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n        if (index > 0)\n            offset += 1;\n        return [this.parent.domNode, offset];\n    };\n    LeafBlot.prototype.value = function () {\n        var _a;\n        return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n    };\n    LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n    return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n  attributes: {\n    compose: function (a, b, keepNull) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = extend(true, {}, b);\n      if (!keepNull) {\n        attributes = Object.keys(attributes).reduce(function (copy, key) {\n          if (attributes[key] != null) {\n            copy[key] = attributes[key];\n          }\n          return copy;\n        }, {});\n      }\n      for (var key in a) {\n        if (a[key] !== undefined && b[key] === undefined) {\n          attributes[key] = a[key];\n        }\n      }\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    diff: function(a, b) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n        if (!equal(a[key], b[key])) {\n          attributes[key] = b[key] === undefined ? null : b[key];\n        }\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    transform: function (a, b, priority) {\n      if (typeof a !== 'object') return b;\n      if (typeof b !== 'object') return undefined;\n      if (!priority) return b;  // b simply overwrites us without priority\n      var attributes = Object.keys(b).reduce(function (attributes, key) {\n        if (a[key] === undefined) attributes[key] = b[key];  // null is a valid value\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    }\n  },\n\n  iterator: function (ops) {\n    return new Iterator(ops);\n  },\n\n  length: function (op) {\n    if (typeof op['delete'] === 'number') {\n      return op['delete'];\n    } else if (typeof op.retain === 'number') {\n      return op.retain;\n    } else {\n      return typeof op.insert === 'string' ? op.insert.length : 1;\n    }\n  }\n};\n\n\nfunction Iterator(ops) {\n  this.ops = ops;\n  this.index = 0;\n  this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n  return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n  if (!length) length = Infinity;\n  var nextOp = this.ops[this.index];\n  if (nextOp) {\n    var offset = this.offset;\n    var opLength = lib.length(nextOp)\n    if (length >= opLength - offset) {\n      length = opLength - offset;\n      this.index += 1;\n      this.offset = 0;\n    } else {\n      this.offset += length;\n    }\n    if (typeof nextOp['delete'] === 'number') {\n      return { 'delete': length };\n    } else {\n      var retOp = {};\n      if (nextOp.attributes) {\n        retOp.attributes = nextOp.attributes;\n      }\n      if (typeof nextOp.retain === 'number') {\n        retOp.retain = length;\n      } else if (typeof nextOp.insert === 'string') {\n        retOp.insert = nextOp.insert.substr(offset, length);\n      } else {\n        // offset should === 0, length should === 1\n        retOp.insert = nextOp.insert;\n      }\n      return retOp;\n    }\n  } else {\n    return { retain: Infinity };\n  }\n};\n\nIterator.prototype.peek = function () {\n  return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n  if (this.ops[this.index]) {\n    // Should never return 0 if our index is being managed correctly\n    return lib.length(this.ops[this.index]) - this.offset;\n  } else {\n    return Infinity;\n  }\n};\n\nIterator.prototype.peekType = function () {\n  if (this.ops[this.index]) {\n    if (typeof this.ops[this.index]['delete'] === 'number') {\n      return 'delete';\n    } else if (typeof this.ops[this.index].retain === 'number') {\n      return 'retain';\n    } else {\n      return 'insert';\n    }\n  }\n  return 'retain';\n};\n\nIterator.prototype.rest = function () {\n  if (!this.hasNext()) {\n    return [];\n  } else if (this.offset === 0) {\n    return this.ops.slice(this.index);\n  } else {\n    var offset = this.offset;\n    var index = this.index;\n    var next = this.next();\n    var rest = this.ops.slice(this.index);\n    this.offset = offset;\n    this.index = index;\n    return [next].concat(rest);\n  }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n  return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n  nativeMap = Map;\n} catch(_) {\n  // maybe a reference error because no `Map`. Give it a dummy value that no\n  // value will ever be an instanceof.\n  nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n  nativeSet = Set;\n} catch(_) {\n  nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n  nativePromise = Promise;\n} catch(_) {\n  nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n *    should be cloned as well. Non-enumerable properties on the prototype\n *    chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    includeNonEnumerable = circular.includeNonEnumerable;\n    circular = circular.circular;\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth === 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      child = new nativeMap();\n    } else if (_instanceof(parent, nativeSet)) {\n      child = new nativeSet();\n    } else if (_instanceof(parent, nativePromise)) {\n      child = new nativePromise(function (resolve, reject) {\n        parent.then(function(value) {\n          resolve(_clone(value, depth - 1));\n        }, function(err) {\n          reject(_clone(err, depth - 1));\n        });\n      });\n    } else if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      if (Buffer.allocUnsafe) {\n        // Node.js >= 4.5.0\n        child = Buffer.allocUnsafe(parent.length);\n      } else {\n        // Older Node.js versions\n        child = new Buffer(parent.length);\n      }\n      parent.copy(child);\n      return child;\n    } else if (_instanceof(parent, Error)) {\n      child = Object.create(parent);\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      parent.forEach(function(value, key) {\n        var keyChild = _clone(key, depth - 1);\n        var valueChild = _clone(value, depth - 1);\n        child.set(keyChild, valueChild);\n      });\n    }\n    if (_instanceof(parent, nativeSet)) {\n      parent.forEach(function(value) {\n        var entryChild = _clone(value, depth - 1);\n        child.add(entryChild);\n      });\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(parent);\n      for (var i = 0; i < symbols.length; i++) {\n        // Don't need to worry about cloning a symbol because it is a primitive,\n        // like a number or string.\n        var symbol = symbols[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n        if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n          continue;\n        }\n        child[symbol] = _clone(parent[symbol], depth - 1);\n        if (!descriptor.enumerable) {\n          Object.defineProperty(child, symbol, {\n            enumerable: false\n          });\n        }\n      }\n    }\n\n    if (includeNonEnumerable) {\n      var allPropertyNames = Object.getOwnPropertyNames(parent);\n      for (var i = 0; i < allPropertyNames.length; i++) {\n        var propertyName = allPropertyNames[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n        if (descriptor && descriptor.enumerable) {\n          continue;\n        }\n        child[propertyName] = _clone(parent[propertyName], depth - 1);\n        Object.defineProperty(child, propertyName, {\n          enumerable: false\n        });\n      }\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n  module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n  return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n  _inherits(Scroll, _Parchment$Scroll);\n\n  function Scroll(domNode, config) {\n    _classCallCheck(this, Scroll);\n\n    var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n    _this.emitter = config.emitter;\n    if (Array.isArray(config.whitelist)) {\n      _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n        whitelist[format] = true;\n        return whitelist;\n      }, {});\n    }\n    // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n    _this.domNode.addEventListener('DOMNodeInserted', function () {});\n    _this.optimize();\n    _this.enable();\n    return _this;\n  }\n\n  _createClass(Scroll, [{\n    key: 'batchStart',\n    value: function batchStart() {\n      this.batch = true;\n    }\n  }, {\n    key: 'batchEnd',\n    value: function batchEnd() {\n      this.batch = false;\n      this.optimize();\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      var _line = this.line(index),\n          _line2 = _slicedToArray(_line, 2),\n          first = _line2[0],\n          offset = _line2[1];\n\n      var _line3 = this.line(index + length),\n          _line4 = _slicedToArray(_line3, 1),\n          last = _line4[0];\n\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n      if (last != null && first !== last && offset > 0) {\n        if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n          this.optimize();\n          return;\n        }\n        if (first instanceof _code2.default) {\n          var newlineIndex = first.newlineIndex(first.length(), true);\n          if (newlineIndex > -1) {\n            first = first.split(newlineIndex + 1);\n            if (first === last) {\n              this.optimize();\n              return;\n            }\n          }\n        } else if (last instanceof _code2.default) {\n          var _newlineIndex = last.newlineIndex(0);\n          if (_newlineIndex > -1) {\n            last.split(_newlineIndex + 1);\n          }\n        }\n        var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n        first.moveChildren(last, ref);\n        first.remove();\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.domNode.setAttribute('contenteditable', enabled);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, format, value) {\n      if (this.whitelist != null && !this.whitelist[format]) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n      this.optimize();\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n      if (index >= this.length()) {\n        if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n          var blot = _parchment2.default.create(this.statics.defaultChild);\n          this.appendChild(blot);\n          if (def == null && value.endsWith('\\n')) {\n            value = value.slice(0, -1);\n          }\n          blot.insertAt(0, value, def);\n        } else {\n          var embed = _parchment2.default.create(value, def);\n          this.appendChild(embed);\n        }\n      } else {\n        _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n        var wrapper = _parchment2.default.create(this.statics.defaultChild);\n        wrapper.appendChild(blot);\n        blot = wrapper;\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n    }\n  }, {\n    key: 'leaf',\n    value: function leaf(index) {\n      return this.path(index).pop() || [null, -1];\n    }\n  }, {\n    key: 'line',\n    value: function line(index) {\n      if (index === this.length()) {\n        return this.line(index - 1);\n      }\n      return this.descendant(isLine, index);\n    }\n  }, {\n    key: 'lines',\n    value: function lines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      var getLines = function getLines(blot, index, length) {\n        var lines = [],\n            lengthLeft = length;\n        blot.children.forEachAt(index, length, function (child, index, length) {\n          if (isLine(child)) {\n            lines.push(child);\n          } else if (child instanceof _parchment2.default.Container) {\n            lines = lines.concat(getLines(child, index, lengthLeft));\n          }\n          lengthLeft -= length;\n        });\n        return lines;\n      };\n      return getLines(this, index, length);\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize() {\n      var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (this.batch === true) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n      }\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations) {\n      if (this.batch === true) return;\n      var source = _emitter2.default.sources.USER;\n      if (typeof mutations === 'string') {\n        source = mutations;\n      }\n      if (!Array.isArray(mutations)) {\n        mutations = this.observer.takeRecords();\n      }\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n      }\n    }\n  }]);\n\n  return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n  _inherits(Keyboard, _Module);\n\n  _createClass(Keyboard, null, [{\n    key: 'match',\n    value: function match(evt, binding) {\n      binding = normalize(binding);\n      if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n        return !!binding[key] !== evt[key] && binding[key] !== null;\n      })) {\n        return false;\n      }\n      return binding.key === (evt.which || evt.keyCode);\n    }\n  }]);\n\n  function Keyboard(quill, options) {\n    _classCallCheck(this, Keyboard);\n\n    var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n    _this.bindings = {};\n    Object.keys(_this.options.bindings).forEach(function (name) {\n      if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n        return;\n      }\n      if (_this.options.bindings[name]) {\n        _this.addBinding(_this.options.bindings[name]);\n      }\n    });\n    _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n    _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n    if (/Firefox/i.test(navigator.userAgent)) {\n      // Need to handle delete and backspace for Firefox in the general case #1171\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n    } else {\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n    }\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n    _this.listen();\n    return _this;\n  }\n\n  _createClass(Keyboard, [{\n    key: 'addBinding',\n    value: function addBinding(key) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      var binding = normalize(key);\n      if (binding == null || binding.key == null) {\n        return debug.warn('Attempted to add invalid keyboard binding', binding);\n      }\n      if (typeof context === 'function') {\n        context = { handler: context };\n      }\n      if (typeof handler === 'function') {\n        handler = { handler: handler };\n      }\n      binding = (0, _extend2.default)(binding, context, handler);\n      this.bindings[binding.key] = this.bindings[binding.key] || [];\n      this.bindings[binding.key].push(binding);\n    }\n  }, {\n    key: 'listen',\n    value: function listen() {\n      var _this2 = this;\n\n      this.quill.root.addEventListener('keydown', function (evt) {\n        if (evt.defaultPrevented) return;\n        var which = evt.which || evt.keyCode;\n        var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n          return Keyboard.match(evt, binding);\n        });\n        if (bindings.length === 0) return;\n        var range = _this2.quill.getSelection();\n        if (range == null || !_this2.quill.hasFocus()) return;\n\n        var _quill$getLine = _this2.quill.getLine(range.index),\n            _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n            line = _quill$getLine2[0],\n            offset = _quill$getLine2[1];\n\n        var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n            _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n            leafStart = _quill$getLeaf2[0],\n            offsetStart = _quill$getLeaf2[1];\n\n        var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n            _ref2 = _slicedToArray(_ref, 2),\n            leafEnd = _ref2[0],\n            offsetEnd = _ref2[1];\n\n        var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n        var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n        var curContext = {\n          collapsed: range.length === 0,\n          empty: range.length === 0 && line.length() <= 1,\n          format: _this2.quill.getFormat(range),\n          offset: offset,\n          prefix: prefixText,\n          suffix: suffixText\n        };\n        var prevented = bindings.some(function (binding) {\n          if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n          if (binding.empty != null && binding.empty !== curContext.empty) return false;\n          if (binding.offset != null && binding.offset !== curContext.offset) return false;\n          if (Array.isArray(binding.format)) {\n            // any format is present\n            if (binding.format.every(function (name) {\n              return curContext.format[name] == null;\n            })) {\n              return false;\n            }\n          } else if (_typeof(binding.format) === 'object') {\n            // all formats must match\n            if (!Object.keys(binding.format).every(function (name) {\n              if (binding.format[name] === true) return curContext.format[name] != null;\n              if (binding.format[name] === false) return curContext.format[name] == null;\n              return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n            })) {\n              return false;\n            }\n          }\n          if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n          if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n          return binding.handler.call(_this2, range, curContext) !== true;\n        });\n        if (prevented) {\n          evt.preventDefault();\n        }\n      });\n    }\n  }]);\n\n  return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n  BACKSPACE: 8,\n  TAB: 9,\n  ENTER: 13,\n  ESCAPE: 27,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n  bindings: {\n    'bold': makeFormatHandler('bold'),\n    'italic': makeFormatHandler('italic'),\n    'underline': makeFormatHandler('underline'),\n    'indent': {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: Keyboard.keys.TAB,\n      format: ['blockquote', 'indent', 'list'],\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '+1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      format: ['blockquote', 'indent', 'list'],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '-1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent backspace': {\n      key: Keyboard.keys.BACKSPACE,\n      collapsed: true,\n      shiftKey: null,\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null,\n      format: ['indent', 'list'],\n      offset: 0,\n      handler: function handler(range, context) {\n        if (context.format.indent != null) {\n          this.quill.format('indent', '-1', _quill2.default.sources.USER);\n        } else if (context.format.list != null) {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'indent code-block': makeCodeBlockHandler(true),\n    'outdent code-block': makeCodeBlockHandler(false),\n    'remove tab': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler: function handler(range) {\n        this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n      }\n    },\n    'tab': {\n      key: Keyboard.keys.TAB,\n      handler: function handler(range) {\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n      }\n    },\n    'list empty enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['list'],\n      empty: true,\n      handler: function handler(range, context) {\n        this.quill.format('list', false, _quill2.default.sources.USER);\n        if (context.format.indent) {\n          this.quill.format('indent', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'checklist enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: { list: 'checked' },\n      handler: function handler(range) {\n        var _quill$getLine3 = this.quill.getLine(range.index),\n            _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n            line = _quill$getLine4[0],\n            offset = _quill$getLine4[1];\n\n        var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'header enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['header'],\n      suffix: /^$/,\n      handler: function handler(range, context) {\n        var _quill$getLine5 = this.quill.getLine(range.index),\n            _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n            line = _quill$getLine6[0],\n            offset = _quill$getLine6[1];\n\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'list autofill': {\n      key: ' ',\n      collapsed: true,\n      format: { list: false },\n      prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n      handler: function handler(range, context) {\n        var length = context.prefix.length;\n\n        var _quill$getLine7 = this.quill.getLine(range.index),\n            _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n            line = _quill$getLine8[0],\n            offset = _quill$getLine8[1];\n\n        if (offset > length) return true;\n        var value = void 0;\n        switch (context.prefix.trim()) {\n          case '[]':case '[ ]':\n            value = 'unchecked';\n            break;\n          case '[x]':\n            value = 'checked';\n            break;\n          case '-':case '*':\n            value = 'bullet';\n            break;\n          default:\n            value = 'ordered';\n        }\n        this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n      }\n    },\n    'code exit': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['code-block'],\n      prefix: /\\n\\n$/,\n      suffix: /^\\s+$/,\n      handler: function handler(range) {\n        var _quill$getLine9 = this.quill.getLine(range.index),\n            _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n            line = _quill$getLine10[0],\n            offset = _quill$getLine10[1];\n\n        var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n      }\n    },\n    'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n    'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n    'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n    'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n  }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n  var _ref3;\n\n  var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n  return _ref3 = {\n    key: key,\n    shiftKey: shiftKey,\n    altKey: null\n  }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n    var index = range.index;\n    if (key === Keyboard.keys.RIGHT) {\n      index += range.length + 1;\n    }\n\n    var _quill$getLeaf3 = this.quill.getLeaf(index),\n        _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n        leaf = _quill$getLeaf4[0];\n\n    if (!(leaf instanceof _parchment2.default.Embed)) return true;\n    if (key === Keyboard.keys.LEFT) {\n      if (shiftKey) {\n        this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n      }\n    } else {\n      if (shiftKey) {\n        this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n      }\n    }\n    return false;\n  }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n  if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n  var _quill$getLine11 = this.quill.getLine(range.index),\n      _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n      line = _quill$getLine12[0];\n\n  var formats = {};\n  if (context.offset === 0) {\n    var _quill$getLine13 = this.quill.getLine(range.index - 1),\n        _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n        prev = _quill$getLine14[0];\n\n    if (prev != null && prev.length() > 1) {\n      var curFormats = line.formats();\n      var prevFormats = this.quill.getFormat(range.index - 1, 1);\n      formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n    }\n  }\n  // Check for astral symbols\n  var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n  this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n  }\n  this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n  // Check for astral symbols\n  var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n  if (range.index >= this.quill.getLength() - length) return;\n  var formats = {},\n      nextLength = 0;\n\n  var _quill$getLine15 = this.quill.getLine(range.index),\n      _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n      line = _quill$getLine16[0];\n\n  if (context.offset >= line.length() - 1) {\n    var _quill$getLine17 = this.quill.getLine(range.index + 1),\n        _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n        next = _quill$getLine18[0];\n\n    if (next) {\n      var curFormats = line.formats();\n      var nextFormats = this.quill.getFormat(range.index, 1);\n      formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n      nextLength = next.length();\n    }\n  }\n  this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n  }\n}\n\nfunction handleDeleteRange(range) {\n  var lines = this.quill.getLines(range);\n  var formats = {};\n  if (lines.length > 1) {\n    var firstFormats = lines[0].formats();\n    var lastFormats = lines[lines.length - 1].formats();\n    formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n  }\n  this.quill.deleteText(range, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n  }\n  this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n  this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n  var _this3 = this;\n\n  if (range.length > 0) {\n    this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n  }\n  var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n    if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n      lineFormats[format] = context.format[format];\n    }\n    return lineFormats;\n  }, {});\n  this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n  // Earlier scroll.deleteAt might have messed up our selection,\n  // so insertText's built in selection preservation is not reliable\n  this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n  this.quill.focus();\n  Object.keys(context.format).forEach(function (name) {\n    if (lineFormats[name] != null) return;\n    if (Array.isArray(context.format[name])) return;\n    if (name === 'link') return;\n    _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n  });\n}\n\nfunction makeCodeBlockHandler(indent) {\n  return {\n    key: Keyboard.keys.TAB,\n    shiftKey: !indent,\n    format: { 'code-block': true },\n    handler: function handler(range) {\n      var CodeBlock = _parchment2.default.query('code-block');\n      var index = range.index,\n          length = range.length;\n\n      var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n          _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n          block = _quill$scroll$descend2[0],\n          offset = _quill$scroll$descend2[1];\n\n      if (block == null) return;\n      var scrollIndex = this.quill.getIndex(block);\n      var start = block.newlineIndex(offset, true) + 1;\n      var end = block.newlineIndex(scrollIndex + offset + length);\n      var lines = block.domNode.textContent.slice(start, end).split('\\n');\n      offset = 0;\n      lines.forEach(function (line, i) {\n        if (indent) {\n          block.insertAt(start + offset, CodeBlock.TAB);\n          offset += CodeBlock.TAB.length;\n          if (i === 0) {\n            index += CodeBlock.TAB.length;\n          } else {\n            length += CodeBlock.TAB.length;\n          }\n        } else if (line.startsWith(CodeBlock.TAB)) {\n          block.deleteAt(start + offset, CodeBlock.TAB.length);\n          offset -= CodeBlock.TAB.length;\n          if (i === 0) {\n            index -= CodeBlock.TAB.length;\n          } else {\n            length -= CodeBlock.TAB.length;\n          }\n        }\n        offset += line.length + 1;\n      });\n      this.quill.update(_quill2.default.sources.USER);\n      this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n    }\n  };\n}\n\nfunction makeFormatHandler(format) {\n  return {\n    key: format[0].toUpperCase(),\n    shortKey: true,\n    handler: function handler(range, context) {\n      this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n    }\n  };\n}\n\nfunction normalize(binding) {\n  if (typeof binding === 'string' || typeof binding === 'number') {\n    return normalize({ key: binding });\n  }\n  if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n    binding = (0, _clone2.default)(binding, false);\n  }\n  if (typeof binding.key === 'string') {\n    if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n      binding.key = Keyboard.keys[binding.key.toUpperCase()];\n    } else if (binding.key.length === 1) {\n      binding.key = binding.key.toUpperCase().charCodeAt(0);\n    } else {\n      return null;\n    }\n  }\n  if (binding.shortKey) {\n    binding[SHORTKEY] = binding.shortKey;\n    delete binding.shortKey;\n  }\n  return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n  _inherits(Cursor, _Parchment$Embed);\n\n  _createClass(Cursor, null, [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  function Cursor(domNode, selection) {\n    _classCallCheck(this, Cursor);\n\n    var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n    _this.selection = selection;\n    _this.textNode = document.createTextNode(Cursor.CONTENTS);\n    _this.domNode.appendChild(_this.textNode);\n    _this._length = 0;\n    return _this;\n  }\n\n  _createClass(Cursor, [{\n    key: 'detach',\n    value: function detach() {\n      // super.detach() will also clear domNode.__blot\n      if (this.parent != null) this.parent.removeChild(this);\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (this._length !== 0) {\n        return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n      }\n      var target = this,\n          index = 0;\n      while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n        index += target.offset(target.parent);\n        target = target.parent;\n      }\n      if (target != null) {\n        this._length = Cursor.CONTENTS.length;\n        target.optimize();\n        target.formatAt(index, Cursor.CONTENTS.length, name, value);\n        this._length = 0;\n      }\n    }\n  }, {\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.textNode) return 0;\n      return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return this._length;\n    }\n  }, {\n    key: 'position',\n    value: function position() {\n      return [this.textNode, this.textNode.data.length];\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n      this.parent = null;\n    }\n  }, {\n    key: 'restore',\n    value: function restore() {\n      if (this.selection.composing || this.parent == null) return;\n      var textNode = this.textNode;\n      var range = this.selection.getNativeRange();\n      var restoreText = void 0,\n          start = void 0,\n          end = void 0;\n      if (range != null && range.start.node === textNode && range.end.node === textNode) {\n        var _ref = [textNode, range.start.offset, range.end.offset];\n        restoreText = _ref[0];\n        start = _ref[1];\n        end = _ref[2];\n      }\n      // Link format will insert text outside of anchor tag\n      while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n        this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n      }\n      if (this.textNode.data !== Cursor.CONTENTS) {\n        var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n        if (this.next instanceof _text2.default) {\n          restoreText = this.next.domNode;\n          this.next.insertAt(0, text);\n          this.textNode.data = Cursor.CONTENTS;\n        } else {\n          this.textNode.data = text;\n          this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n          this.textNode = document.createTextNode(Cursor.CONTENTS);\n          this.domNode.appendChild(this.textNode);\n        }\n      }\n      this.remove();\n      if (start != null) {\n        var _map = [start, end].map(function (offset) {\n          return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n        });\n\n        var _map2 = _slicedToArray(_map, 2);\n\n        start = _map2[0];\n        end = _map2[1];\n\n        return {\n          startNode: restoreText,\n          startOffset: start,\n          endNode: restoreText,\n          endOffset: end\n        };\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      if (mutations.some(function (mutation) {\n        return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n      })) {\n        var range = this.restore();\n        if (range) context.range = range;\n      }\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }]);\n\n  return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n  _inherits(Container, _Parchment$Container);\n\n  function Container() {\n    _classCallCheck(this, Container);\n\n    return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n  }\n\n  return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n  _inherits(ColorAttributor, _Parchment$Attributor);\n\n  function ColorAttributor() {\n    _classCallCheck(this, ColorAttributor);\n\n    return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n  }\n\n  _createClass(ColorAttributor, [{\n    key: 'value',\n    value: function value(domNode) {\n      var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n      if (!value.startsWith('rgb(')) return value;\n      value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n      return '#' + value.split(',').map(function (component) {\n        return ('00' + parseInt(component).toString(16)).slice(-2);\n      }).join('');\n    }\n  }]);\n\n  return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n  _inherits(Link, _Inline);\n\n  function Link() {\n    _classCallCheck(this, Link);\n\n    return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n  }\n\n  _createClass(Link, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n      value = this.constructor.sanitize(value);\n      this.domNode.setAttribute('href', value);\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n      value = this.sanitize(value);\n      node.setAttribute('href', value);\n      node.setAttribute('rel', 'noopener noreferrer');\n      node.setAttribute('target', '_blank');\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.getAttribute('href');\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n    }\n  }]);\n\n  return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n  var anchor = document.createElement('a');\n  anchor.href = url;\n  var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n  return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n  element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n  function Picker(select) {\n    var _this = this;\n\n    _classCallCheck(this, Picker);\n\n    this.select = select;\n    this.container = document.createElement('span');\n    this.buildPicker();\n    this.select.style.display = 'none';\n    this.select.parentNode.insertBefore(this.container, this.select);\n\n    this.label.addEventListener('mousedown', function () {\n      _this.togglePicker();\n    });\n    this.label.addEventListener('keydown', function (event) {\n      switch (event.keyCode) {\n        // Allows the \"Enter\" key to open the picker\n        case _keyboard2.default.keys.ENTER:\n          _this.togglePicker();\n          break;\n\n        // Allows the \"Escape\" key to close the picker\n        case _keyboard2.default.keys.ESCAPE:\n          _this.escape();\n          event.preventDefault();\n          break;\n        default:\n      }\n    });\n    this.select.addEventListener('change', this.update.bind(this));\n  }\n\n  _createClass(Picker, [{\n    key: 'togglePicker',\n    value: function togglePicker() {\n      this.container.classList.toggle('ql-expanded');\n      // Toggle aria-expanded and aria-hidden to make the picker accessible\n      toggleAriaAttribute(this.label, 'aria-expanded');\n      toggleAriaAttribute(this.options, 'aria-hidden');\n    }\n  }, {\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var _this2 = this;\n\n      var item = document.createElement('span');\n      item.tabIndex = '0';\n      item.setAttribute('role', 'button');\n\n      item.classList.add('ql-picker-item');\n      if (option.hasAttribute('value')) {\n        item.setAttribute('data-value', option.getAttribute('value'));\n      }\n      if (option.textContent) {\n        item.setAttribute('data-label', option.textContent);\n      }\n      item.addEventListener('click', function () {\n        _this2.selectItem(item, true);\n      });\n      item.addEventListener('keydown', function (event) {\n        switch (event.keyCode) {\n          // Allows the \"Enter\" key to select an item\n          case _keyboard2.default.keys.ENTER:\n            _this2.selectItem(item, true);\n            event.preventDefault();\n            break;\n\n          // Allows the \"Escape\" key to close the picker\n          case _keyboard2.default.keys.ESCAPE:\n            _this2.escape();\n            event.preventDefault();\n            break;\n          default:\n        }\n      });\n\n      return item;\n    }\n  }, {\n    key: 'buildLabel',\n    value: function buildLabel() {\n      var label = document.createElement('span');\n      label.classList.add('ql-picker-label');\n      label.innerHTML = _dropdown2.default;\n      label.tabIndex = '0';\n      label.setAttribute('role', 'button');\n      label.setAttribute('aria-expanded', 'false');\n      this.container.appendChild(label);\n      return label;\n    }\n  }, {\n    key: 'buildOptions',\n    value: function buildOptions() {\n      var _this3 = this;\n\n      var options = document.createElement('span');\n      options.classList.add('ql-picker-options');\n\n      // Don't want screen readers to read this until options are visible\n      options.setAttribute('aria-hidden', 'true');\n      options.tabIndex = '-1';\n\n      // Need a unique id for aria-controls\n      options.id = 'ql-picker-options-' + optionsCounter;\n      optionsCounter += 1;\n      this.label.setAttribute('aria-controls', options.id);\n\n      this.options = options;\n\n      [].slice.call(this.select.options).forEach(function (option) {\n        var item = _this3.buildItem(option);\n        options.appendChild(item);\n        if (option.selected === true) {\n          _this3.selectItem(item);\n        }\n      });\n      this.container.appendChild(options);\n    }\n  }, {\n    key: 'buildPicker',\n    value: function buildPicker() {\n      var _this4 = this;\n\n      [].slice.call(this.select.attributes).forEach(function (item) {\n        _this4.container.setAttribute(item.name, item.value);\n      });\n      this.container.classList.add('ql-picker');\n      this.label = this.buildLabel();\n      this.buildOptions();\n    }\n  }, {\n    key: 'escape',\n    value: function escape() {\n      var _this5 = this;\n\n      // Close menu and return focus to trigger label\n      this.close();\n      // Need setTimeout for accessibility to ensure that the browser executes\n      // focus on the next process thread and after any DOM content changes\n      setTimeout(function () {\n        return _this5.label.focus();\n      }, 1);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      this.container.classList.remove('ql-expanded');\n      this.label.setAttribute('aria-expanded', 'false');\n      this.options.setAttribute('aria-hidden', 'true');\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item) {\n      var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var selected = this.container.querySelector('.ql-selected');\n      if (item === selected) return;\n      if (selected != null) {\n        selected.classList.remove('ql-selected');\n      }\n      if (item == null) return;\n      item.classList.add('ql-selected');\n      this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n      if (item.hasAttribute('data-value')) {\n        this.label.setAttribute('data-value', item.getAttribute('data-value'));\n      } else {\n        this.label.removeAttribute('data-value');\n      }\n      if (item.hasAttribute('data-label')) {\n        this.label.setAttribute('data-label', item.getAttribute('data-label'));\n      } else {\n        this.label.removeAttribute('data-label');\n      }\n      if (trigger) {\n        if (typeof Event === 'function') {\n          this.select.dispatchEvent(new Event('change'));\n        } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n          // IE11\n          var event = document.createEvent('Event');\n          event.initEvent('change', true, true);\n          this.select.dispatchEvent(event);\n        }\n        this.close();\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var option = void 0;\n      if (this.select.selectedIndex > -1) {\n        var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n        option = this.select.options[this.select.selectedIndex];\n        this.selectItem(item);\n      } else {\n        this.selectItem(null);\n      }\n      var isActive = option != null && option !== this.select.querySelector('option[selected]');\n      this.label.classList.toggle('ql-active', isActive);\n    }\n  }]);\n\n  return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n  'blots/block': _block2.default,\n  'blots/block/embed': _block.BlockEmbed,\n  'blots/break': _break2.default,\n  'blots/container': _container2.default,\n  'blots/cursor': _cursor2.default,\n  'blots/embed': _embed2.default,\n  'blots/inline': _inline2.default,\n  'blots/scroll': _scroll2.default,\n  'blots/text': _text2.default,\n\n  'modules/clipboard': _clipboard2.default,\n  'modules/history': _history2.default,\n  'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n    function ShadowBlot(domNode) {\n        this.domNode = domNode;\n        // @ts-ignore\n        this.domNode[Registry.DATA_KEY] = { blot: this };\n    }\n    Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n        // Hack for accessing inherited static methods\n        get: function () {\n            return this.constructor;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ShadowBlot.create = function (value) {\n        if (this.tagName == null) {\n            throw new Registry.ParchmentError('Blot definition missing tagName');\n        }\n        var node;\n        if (Array.isArray(this.tagName)) {\n            if (typeof value === 'string') {\n                value = value.toUpperCase();\n                if (parseInt(value).toString() === value) {\n                    value = parseInt(value);\n                }\n            }\n            if (typeof value === 'number') {\n                node = document.createElement(this.tagName[value - 1]);\n            }\n            else if (this.tagName.indexOf(value) > -1) {\n                node = document.createElement(value);\n            }\n            else {\n                node = document.createElement(this.tagName[0]);\n            }\n        }\n        else {\n            node = document.createElement(this.tagName);\n        }\n        if (this.className) {\n            node.classList.add(this.className);\n        }\n        return node;\n    };\n    ShadowBlot.prototype.attach = function () {\n        if (this.parent != null) {\n            this.scroll = this.parent.scroll;\n        }\n    };\n    ShadowBlot.prototype.clone = function () {\n        var domNode = this.domNode.cloneNode(false);\n        return Registry.create(domNode);\n    };\n    ShadowBlot.prototype.detach = function () {\n        if (this.parent != null)\n            this.parent.removeChild(this);\n        // @ts-ignore\n        delete this.domNode[Registry.DATA_KEY];\n    };\n    ShadowBlot.prototype.deleteAt = function (index, length) {\n        var blot = this.isolate(index, length);\n        blot.remove();\n    };\n    ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n        var blot = this.isolate(index, length);\n        if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n            blot.wrap(name, value);\n        }\n        else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n            var parent = Registry.create(this.statics.scope);\n            blot.wrap(parent);\n            parent.format(name, value);\n        }\n    };\n    ShadowBlot.prototype.insertAt = function (index, value, def) {\n        var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n        var ref = this.split(index);\n        this.parent.insertBefore(blot, ref);\n    };\n    ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n        if (refBlot === void 0) { refBlot = null; }\n        if (this.parent != null) {\n            this.parent.children.remove(this);\n        }\n        var refDomNode = null;\n        parentBlot.children.insertBefore(this, refBlot);\n        if (refBlot != null) {\n            refDomNode = refBlot.domNode;\n        }\n        if (this.domNode.parentNode != parentBlot.domNode ||\n            this.domNode.nextSibling != refDomNode) {\n            parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n        }\n        this.parent = parentBlot;\n        this.attach();\n    };\n    ShadowBlot.prototype.isolate = function (index, length) {\n        var target = this.split(index);\n        target.split(length);\n        return target;\n    };\n    ShadowBlot.prototype.length = function () {\n        return 1;\n    };\n    ShadowBlot.prototype.offset = function (root) {\n        if (root === void 0) { root = this.parent; }\n        if (this.parent == null || this == root)\n            return 0;\n        return this.parent.children.offset(this) + this.parent.offset(root);\n    };\n    ShadowBlot.prototype.optimize = function (context) {\n        // TODO clean up once we use WeakMap\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY] != null) {\n            // @ts-ignore\n            delete this.domNode[Registry.DATA_KEY].mutations;\n        }\n    };\n    ShadowBlot.prototype.remove = function () {\n        if (this.domNode.parentNode != null) {\n            this.domNode.parentNode.removeChild(this.domNode);\n        }\n        this.detach();\n    };\n    ShadowBlot.prototype.replace = function (target) {\n        if (target.parent == null)\n            return;\n        target.parent.insertBefore(this, target.next);\n        target.remove();\n    };\n    ShadowBlot.prototype.replaceWith = function (name, value) {\n        var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n        replacement.replace(this);\n        return replacement;\n    };\n    ShadowBlot.prototype.split = function (index, force) {\n        return index === 0 ? this : this.next;\n    };\n    ShadowBlot.prototype.update = function (mutations, context) {\n        // Nothing to do by default\n    };\n    ShadowBlot.prototype.wrap = function (name, value) {\n        var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n        if (this.parent != null) {\n            this.parent.insertBefore(wrapper, this.next);\n        }\n        wrapper.appendChild(this);\n        return wrapper;\n    };\n    ShadowBlot.blotName = 'abstract';\n    return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n    function AttributorStore(domNode) {\n        this.attributes = {};\n        this.domNode = domNode;\n        this.build();\n    }\n    AttributorStore.prototype.attribute = function (attribute, value) {\n        // verb\n        if (value) {\n            if (attribute.add(this.domNode, value)) {\n                if (attribute.value(this.domNode) != null) {\n                    this.attributes[attribute.attrName] = attribute;\n                }\n                else {\n                    delete this.attributes[attribute.attrName];\n                }\n            }\n        }\n        else {\n            attribute.remove(this.domNode);\n            delete this.attributes[attribute.attrName];\n        }\n    };\n    AttributorStore.prototype.build = function () {\n        var _this = this;\n        this.attributes = {};\n        var attributes = attributor_1.default.keys(this.domNode);\n        var classes = class_1.default.keys(this.domNode);\n        var styles = style_1.default.keys(this.domNode);\n        attributes\n            .concat(classes)\n            .concat(styles)\n            .forEach(function (name) {\n            var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n            if (attr instanceof attributor_1.default) {\n                _this.attributes[attr.attrName] = attr;\n            }\n        });\n    };\n    AttributorStore.prototype.copy = function (target) {\n        var _this = this;\n        Object.keys(this.attributes).forEach(function (key) {\n            var value = _this.attributes[key].value(_this.domNode);\n            target.format(key, value);\n        });\n    };\n    AttributorStore.prototype.move = function (target) {\n        var _this = this;\n        this.copy(target);\n        Object.keys(this.attributes).forEach(function (key) {\n            _this.attributes[key].remove(_this.domNode);\n        });\n        this.attributes = {};\n    };\n    AttributorStore.prototype.values = function () {\n        var _this = this;\n        return Object.keys(this.attributes).reduce(function (attributes, name) {\n            attributes[name] = _this.attributes[name].value(_this.domNode);\n            return attributes;\n        }, {});\n    };\n    return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n    var className = node.getAttribute('class') || '';\n    return className.split(/\\s+/).filter(function (name) {\n        return name.indexOf(prefix + \"-\") === 0;\n    });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n    __extends(ClassAttributor, _super);\n    function ClassAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ClassAttributor.keys = function (node) {\n        return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n            return name\n                .split('-')\n                .slice(0, -1)\n                .join('-');\n        });\n    };\n    ClassAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        this.remove(node);\n        node.classList.add(this.keyName + \"-\" + value);\n        return true;\n    };\n    ClassAttributor.prototype.remove = function (node) {\n        var matches = match(node, this.keyName);\n        matches.forEach(function (name) {\n            node.classList.remove(name);\n        });\n        if (node.classList.length === 0) {\n            node.removeAttribute('class');\n        }\n    };\n    ClassAttributor.prototype.value = function (node) {\n        var result = match(node, this.keyName)[0] || '';\n        var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n        return this.canAdd(node, value) ? value : '';\n    };\n    return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n    var parts = name.split('-');\n    var rest = parts\n        .slice(1)\n        .map(function (part) {\n        return part[0].toUpperCase() + part.slice(1);\n    })\n        .join('');\n    return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n    __extends(StyleAttributor, _super);\n    function StyleAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    StyleAttributor.keys = function (node) {\n        return (node.getAttribute('style') || '').split(';').map(function (value) {\n            var arr = value.split(':');\n            return arr[0].trim();\n        });\n    };\n    StyleAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = value;\n        return true;\n    };\n    StyleAttributor.prototype.remove = function (node) {\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = '';\n        if (!node.getAttribute('style')) {\n            node.removeAttribute('style');\n        }\n    };\n    StyleAttributor.prototype.value = function (node) {\n        // @ts-ignore\n        var value = node.style[camelize(this.keyName)];\n        return this.canAdd(node, value) ? value : '';\n    };\n    return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n  function Theme(quill, options) {\n    _classCallCheck(this, Theme);\n\n    this.quill = quill;\n    this.options = options;\n    this.modules = {};\n  }\n\n  _createClass(Theme, [{\n    key: 'init',\n    value: function init() {\n      var _this = this;\n\n      Object.keys(this.options.modules).forEach(function (name) {\n        if (_this.modules[name] == null) {\n          _this.addModule(name);\n        }\n      });\n    }\n  }, {\n    key: 'addModule',\n    value: function addModule(name) {\n      var moduleClass = this.quill.constructor.import('modules/' + name);\n      this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n      return this.modules[name];\n    }\n  }]);\n\n  return Theme;\n}();\n\nTheme.DEFAULTS = {\n  modules: {}\n};\nTheme.themes = {\n  'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n  _inherits(Embed, _Parchment$Embed);\n\n  function Embed(node) {\n    _classCallCheck(this, Embed);\n\n    var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n    _this.contentNode = document.createElement('span');\n    _this.contentNode.setAttribute('contenteditable', false);\n    [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n      _this.contentNode.appendChild(childNode);\n    });\n    _this.leftGuard = document.createTextNode(GUARD_TEXT);\n    _this.rightGuard = document.createTextNode(GUARD_TEXT);\n    _this.domNode.appendChild(_this.leftGuard);\n    _this.domNode.appendChild(_this.contentNode);\n    _this.domNode.appendChild(_this.rightGuard);\n    return _this;\n  }\n\n  _createClass(Embed, [{\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.leftGuard) return 0;\n      if (node === this.rightGuard) return 1;\n      return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'restore',\n    value: function restore(node) {\n      var range = void 0,\n          textNode = void 0;\n      var text = node.data.split(GUARD_TEXT).join('');\n      if (node === this.leftGuard) {\n        if (this.prev instanceof _text2.default) {\n          var prevLength = this.prev.length();\n          this.prev.insertAt(prevLength, text);\n          range = {\n            startNode: this.prev.domNode,\n            startOffset: prevLength + text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      } else if (node === this.rightGuard) {\n        if (this.next instanceof _text2.default) {\n          this.next.insertAt(0, text);\n          range = {\n            startNode: this.next.domNode,\n            startOffset: text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      }\n      node.data = GUARD_TEXT;\n      return range;\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      mutations.forEach(function (mutation) {\n        if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n          var range = _this2.restore(mutation.target);\n          if (range) context.range = range;\n        }\n      });\n    }\n  }]);\n\n  return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n  _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n  function FontStyleAttributor() {\n    _classCallCheck(this, FontStyleAttributor);\n\n    return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n  }\n\n  _createClass(FontStyleAttributor, [{\n    key: 'value',\n    value: function value(node) {\n      return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n    }\n  }]);\n\n  return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  'align': {\n    '': __webpack_require__(76),\n    'center': __webpack_require__(77),\n    'right': __webpack_require__(78),\n    'justify': __webpack_require__(79)\n  },\n  'background': __webpack_require__(80),\n  'blockquote': __webpack_require__(81),\n  'bold': __webpack_require__(82),\n  'clean': __webpack_require__(83),\n  'code': __webpack_require__(58),\n  'code-block': __webpack_require__(58),\n  'color': __webpack_require__(84),\n  'direction': {\n    '': __webpack_require__(85),\n    'rtl': __webpack_require__(86)\n  },\n  'float': {\n    'center': __webpack_require__(87),\n    'full': __webpack_require__(88),\n    'left': __webpack_require__(89),\n    'right': __webpack_require__(90)\n  },\n  'formula': __webpack_require__(91),\n  'header': {\n    '1': __webpack_require__(92),\n    '2': __webpack_require__(93)\n  },\n  'italic': __webpack_require__(94),\n  'image': __webpack_require__(95),\n  'indent': {\n    '+1': __webpack_require__(96),\n    '-1': __webpack_require__(97)\n  },\n  'link': __webpack_require__(98),\n  'list': {\n    'ordered': __webpack_require__(99),\n    'bullet': __webpack_require__(100),\n    'check': __webpack_require__(101)\n  },\n  'script': {\n    'sub': __webpack_require__(102),\n    'super': __webpack_require__(103)\n  },\n  'strike': __webpack_require__(104),\n  'underline': __webpack_require__(105),\n  'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n  _inherits(History, _Module);\n\n  function History(quill, options) {\n    _classCallCheck(this, History);\n\n    var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n    _this.lastRecorded = 0;\n    _this.ignoreChange = false;\n    _this.clear();\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n      if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n      if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n        _this.record(delta, oldDelta);\n      } else {\n        _this.transform(delta);\n      }\n    });\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n    if (/Win/i.test(navigator.platform)) {\n      _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n    }\n    return _this;\n  }\n\n  _createClass(History, [{\n    key: 'change',\n    value: function change(source, dest) {\n      if (this.stack[source].length === 0) return;\n      var delta = this.stack[source].pop();\n      this.stack[dest].push(delta);\n      this.lastRecorded = 0;\n      this.ignoreChange = true;\n      this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n      this.ignoreChange = false;\n      var index = getLastChangeIndex(delta[source]);\n      this.quill.setSelection(index);\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      this.stack = { undo: [], redo: [] };\n    }\n  }, {\n    key: 'cutoff',\n    value: function cutoff() {\n      this.lastRecorded = 0;\n    }\n  }, {\n    key: 'record',\n    value: function record(changeDelta, oldDelta) {\n      if (changeDelta.ops.length === 0) return;\n      this.stack.redo = [];\n      var undoDelta = this.quill.getContents().diff(oldDelta);\n      var timestamp = Date.now();\n      if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n        var delta = this.stack.undo.pop();\n        undoDelta = undoDelta.compose(delta.undo);\n        changeDelta = delta.redo.compose(changeDelta);\n      } else {\n        this.lastRecorded = timestamp;\n      }\n      this.stack.undo.push({\n        redo: changeDelta,\n        undo: undoDelta\n      });\n      if (this.stack.undo.length > this.options.maxStack) {\n        this.stack.undo.shift();\n      }\n    }\n  }, {\n    key: 'redo',\n    value: function redo() {\n      this.change('redo', 'undo');\n    }\n  }, {\n    key: 'transform',\n    value: function transform(delta) {\n      this.stack.undo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n      this.stack.redo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n    }\n  }, {\n    key: 'undo',\n    value: function undo() {\n      this.change('undo', 'redo');\n    }\n  }]);\n\n  return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n  delay: 1000,\n  maxStack: 100,\n  userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n  var lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n  }\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some(function (attr) {\n      return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n    });\n  }\n  return false;\n}\n\nfunction getLastChangeIndex(delta) {\n  var deleteLength = delta.reduce(function (length, op) {\n    length += op.delete || 0;\n    return length;\n  }, 0);\n  var changeIndex = delta.length() - deleteLength;\n  if (endsWithNewlineChange(delta)) {\n    changeIndex -= 1;\n  }\n  return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n  _inherits(BaseTheme, _Theme);\n\n  function BaseTheme(quill, options) {\n    _classCallCheck(this, BaseTheme);\n\n    var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n    var listener = function listener(e) {\n      if (!document.body.contains(quill.root)) {\n        return document.body.removeEventListener('click', listener);\n      }\n      if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n        _this.tooltip.hide();\n      }\n      if (_this.pickers != null) {\n        _this.pickers.forEach(function (picker) {\n          if (!picker.container.contains(e.target)) {\n            picker.close();\n          }\n        });\n      }\n    };\n    quill.emitter.listenDOM('click', document.body, listener);\n    return _this;\n  }\n\n  _createClass(BaseTheme, [{\n    key: 'addModule',\n    value: function addModule(name) {\n      var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n      if (name === 'toolbar') {\n        this.extendToolbar(module);\n      }\n      return module;\n    }\n  }, {\n    key: 'buildButtons',\n    value: function buildButtons(buttons, icons) {\n      buttons.forEach(function (button) {\n        var className = button.getAttribute('class') || '';\n        className.split(/\\s+/).forEach(function (name) {\n          if (!name.startsWith('ql-')) return;\n          name = name.slice('ql-'.length);\n          if (icons[name] == null) return;\n          if (name === 'direction') {\n            button.innerHTML = icons[name][''] + icons[name]['rtl'];\n          } else if (typeof icons[name] === 'string') {\n            button.innerHTML = icons[name];\n          } else {\n            var value = button.value || '';\n            if (value != null && icons[name][value]) {\n              button.innerHTML = icons[name][value];\n            }\n          }\n        });\n      });\n    }\n  }, {\n    key: 'buildPickers',\n    value: function buildPickers(selects, icons) {\n      var _this2 = this;\n\n      this.pickers = selects.map(function (select) {\n        if (select.classList.contains('ql-align')) {\n          if (select.querySelector('option') == null) {\n            fillSelect(select, ALIGNS);\n          }\n          return new _iconPicker2.default(select, icons.align);\n        } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n          var format = select.classList.contains('ql-background') ? 'background' : 'color';\n          if (select.querySelector('option') == null) {\n            fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n          }\n          return new _colorPicker2.default(select, icons[format]);\n        } else {\n          if (select.querySelector('option') == null) {\n            if (select.classList.contains('ql-font')) {\n              fillSelect(select, FONTS);\n            } else if (select.classList.contains('ql-header')) {\n              fillSelect(select, HEADERS);\n            } else if (select.classList.contains('ql-size')) {\n              fillSelect(select, SIZES);\n            }\n          }\n          return new _picker2.default(select);\n        }\n      });\n      var update = function update() {\n        _this2.pickers.forEach(function (picker) {\n          picker.update();\n        });\n      };\n      this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n    }\n  }]);\n\n  return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        formula: function formula() {\n          this.quill.theme.tooltip.edit('formula');\n        },\n        image: function image() {\n          var _this3 = this;\n\n          var fileInput = this.container.querySelector('input.ql-image[type=file]');\n          if (fileInput == null) {\n            fileInput = document.createElement('input');\n            fileInput.setAttribute('type', 'file');\n            fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n            fileInput.classList.add('ql-image');\n            fileInput.addEventListener('change', function () {\n              if (fileInput.files != null && fileInput.files[0] != null) {\n                var reader = new FileReader();\n                reader.onload = function (e) {\n                  var range = _this3.quill.getSelection(true);\n                  _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n                  _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n                  fileInput.value = \"\";\n                };\n                reader.readAsDataURL(fileInput.files[0]);\n              }\n            });\n            this.container.appendChild(fileInput);\n          }\n          fileInput.click();\n        },\n        video: function video() {\n          this.quill.theme.tooltip.edit('video');\n        }\n      }\n    }\n  }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n  _inherits(BaseTooltip, _Tooltip);\n\n  function BaseTooltip(quill, boundsContainer) {\n    _classCallCheck(this, BaseTooltip);\n\n    var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n    _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n    _this4.listen();\n    return _this4;\n  }\n\n  _createClass(BaseTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this5 = this;\n\n      this.textbox.addEventListener('keydown', function (event) {\n        if (_keyboard2.default.match(event, 'enter')) {\n          _this5.save();\n          event.preventDefault();\n        } else if (_keyboard2.default.match(event, 'escape')) {\n          _this5.cancel();\n          event.preventDefault();\n        }\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.hide();\n    }\n  }, {\n    key: 'edit',\n    value: function edit() {\n      var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n      var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      this.root.classList.remove('ql-hidden');\n      this.root.classList.add('ql-editing');\n      if (preview != null) {\n        this.textbox.value = preview;\n      } else if (mode !== this.root.getAttribute('data-mode')) {\n        this.textbox.value = '';\n      }\n      this.position(this.quill.getBounds(this.quill.selection.savedRange));\n      this.textbox.select();\n      this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n      this.root.setAttribute('data-mode', mode);\n    }\n  }, {\n    key: 'restoreFocus',\n    value: function restoreFocus() {\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.quill.focus();\n      this.quill.scrollingContainer.scrollTop = scrollTop;\n    }\n  }, {\n    key: 'save',\n    value: function save() {\n      var value = this.textbox.value;\n      switch (this.root.getAttribute('data-mode')) {\n        case 'link':\n          {\n            var scrollTop = this.quill.root.scrollTop;\n            if (this.linkRange) {\n              this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n              delete this.linkRange;\n            } else {\n              this.restoreFocus();\n              this.quill.format('link', value, _emitter2.default.sources.USER);\n            }\n            this.quill.root.scrollTop = scrollTop;\n            break;\n          }\n        case 'video':\n          {\n            value = extractVideoUrl(value);\n          } // eslint-disable-next-line no-fallthrough\n        case 'formula':\n          {\n            if (!value) break;\n            var range = this.quill.getSelection(true);\n            if (range != null) {\n              var index = range.index + range.length;\n              this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n              if (this.root.getAttribute('data-mode') === 'formula') {\n                this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n              }\n              this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n            }\n            break;\n          }\n        default:\n      }\n      this.textbox.value = '';\n      this.hide();\n    }\n  }]);\n\n  return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n  var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n  if (match) {\n    return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n  }\n  if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n    // eslint-disable-line no-cond-assign\n    return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n  }\n  return url;\n}\n\nfunction fillSelect(select, values) {\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value === defaultValue) {\n      option.setAttribute('selected', 'selected');\n    } else {\n      option.setAttribute('value', value);\n    }\n    select.appendChild(option);\n  });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n    function LinkedList() {\n        this.head = this.tail = null;\n        this.length = 0;\n    }\n    LinkedList.prototype.append = function () {\n        var nodes = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            nodes[_i] = arguments[_i];\n        }\n        this.insertBefore(nodes[0], null);\n        if (nodes.length > 1) {\n            this.append.apply(this, nodes.slice(1));\n        }\n    };\n    LinkedList.prototype.contains = function (node) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            if (cur === node)\n                return true;\n        }\n        return false;\n    };\n    LinkedList.prototype.insertBefore = function (node, refNode) {\n        if (!node)\n            return;\n        node.next = refNode;\n        if (refNode != null) {\n            node.prev = refNode.prev;\n            if (refNode.prev != null) {\n                refNode.prev.next = node;\n            }\n            refNode.prev = node;\n            if (refNode === this.head) {\n                this.head = node;\n            }\n        }\n        else if (this.tail != null) {\n            this.tail.next = node;\n            node.prev = this.tail;\n            this.tail = node;\n        }\n        else {\n            node.prev = null;\n            this.head = this.tail = node;\n        }\n        this.length += 1;\n    };\n    LinkedList.prototype.offset = function (target) {\n        var index = 0, cur = this.head;\n        while (cur != null) {\n            if (cur === target)\n                return index;\n            index += cur.length();\n            cur = cur.next;\n        }\n        return -1;\n    };\n    LinkedList.prototype.remove = function (node) {\n        if (!this.contains(node))\n            return;\n        if (node.prev != null)\n            node.prev.next = node.next;\n        if (node.next != null)\n            node.next.prev = node.prev;\n        if (node === this.head)\n            this.head = node.next;\n        if (node === this.tail)\n            this.tail = node.prev;\n        this.length -= 1;\n    };\n    LinkedList.prototype.iterator = function (curNode) {\n        if (curNode === void 0) { curNode = this.head; }\n        // TODO use yield when we can\n        return function () {\n            var ret = curNode;\n            if (curNode != null)\n                curNode = curNode.next;\n            return ret;\n        };\n    };\n    LinkedList.prototype.find = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            var length = cur.length();\n            if (index < length ||\n                (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n                return [cur, index];\n            }\n            index -= length;\n        }\n        return [null, 0];\n    };\n    LinkedList.prototype.forEach = function (callback) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            callback(cur);\n        }\n    };\n    LinkedList.prototype.forEachAt = function (index, length, callback) {\n        if (length <= 0)\n            return;\n        var _a = this.find(index), startNode = _a[0], offset = _a[1];\n        var cur, curIndex = index - offset, next = this.iterator(startNode);\n        while ((cur = next()) && curIndex < index + length) {\n            var curLength = cur.length();\n            if (index > curIndex) {\n                callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n            }\n            else {\n                callback(cur, 0, Math.min(curLength, index + length - curIndex));\n            }\n            curIndex += curLength;\n        }\n    };\n    LinkedList.prototype.map = function (callback) {\n        return this.reduce(function (memo, cur) {\n            memo.push(callback(cur));\n            return memo;\n        }, []);\n    };\n    LinkedList.prototype.reduce = function (callback, memo) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            memo = callback(memo, cur);\n        }\n        return memo;\n    };\n    return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n    attributes: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n    __extends(ScrollBlot, _super);\n    function ScrollBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.scroll = _this;\n        _this.observer = new MutationObserver(function (mutations) {\n            _this.update(mutations);\n        });\n        _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n        _this.attach();\n        return _this;\n    }\n    ScrollBlot.prototype.detach = function () {\n        _super.prototype.detach.call(this);\n        this.observer.disconnect();\n    };\n    ScrollBlot.prototype.deleteAt = function (index, length) {\n        this.update();\n        if (index === 0 && length === this.length()) {\n            this.children.forEach(function (child) {\n                child.remove();\n            });\n        }\n        else {\n            _super.prototype.deleteAt.call(this, index, length);\n        }\n    };\n    ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n        this.update();\n        _super.prototype.formatAt.call(this, index, length, name, value);\n    };\n    ScrollBlot.prototype.insertAt = function (index, value, def) {\n        this.update();\n        _super.prototype.insertAt.call(this, index, value, def);\n    };\n    ScrollBlot.prototype.optimize = function (mutations, context) {\n        var _this = this;\n        if (mutations === void 0) { mutations = []; }\n        if (context === void 0) { context = {}; }\n        _super.prototype.optimize.call(this, context);\n        // We must modify mutations directly, cannot make copy and then modify\n        var records = [].slice.call(this.observer.takeRecords());\n        // Array.push currently seems to be implemented by a non-tail recursive function\n        // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n        while (records.length > 0)\n            mutations.push(records.pop());\n        // TODO use WeakMap\n        var mark = function (blot, markParent) {\n            if (markParent === void 0) { markParent = true; }\n            if (blot == null || blot === _this)\n                return;\n            if (blot.domNode.parentNode == null)\n                return;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [];\n            }\n            if (markParent)\n                mark(blot.parent);\n        };\n        var optimize = function (blot) {\n            // Post-order traversal\n            if (\n            // @ts-ignore\n            blot.domNode[Registry.DATA_KEY] == null ||\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations == null) {\n                return;\n            }\n            if (blot instanceof container_1.default) {\n                blot.children.forEach(optimize);\n            }\n            blot.optimize(context);\n        };\n        var remaining = mutations;\n        for (var i = 0; remaining.length > 0; i += 1) {\n            if (i >= MAX_OPTIMIZE_ITERATIONS) {\n                throw new Error('[Parchment] Maximum optimize iterations reached');\n            }\n            remaining.forEach(function (mutation) {\n                var blot = Registry.find(mutation.target, true);\n                if (blot == null)\n                    return;\n                if (blot.domNode === mutation.target) {\n                    if (mutation.type === 'childList') {\n                        mark(Registry.find(mutation.previousSibling, false));\n                        [].forEach.call(mutation.addedNodes, function (node) {\n                            var child = Registry.find(node, false);\n                            mark(child, false);\n                            if (child instanceof container_1.default) {\n                                child.children.forEach(function (grandChild) {\n                                    mark(grandChild, false);\n                                });\n                            }\n                        });\n                    }\n                    else if (mutation.type === 'attributes') {\n                        mark(blot.prev);\n                    }\n                }\n                mark(blot);\n            });\n            this.children.forEach(optimize);\n            remaining = [].slice.call(this.observer.takeRecords());\n            records = remaining.slice();\n            while (records.length > 0)\n                mutations.push(records.pop());\n        }\n    };\n    ScrollBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (context === void 0) { context = {}; }\n        mutations = mutations || this.observer.takeRecords();\n        // TODO use WeakMap\n        mutations\n            .map(function (mutation) {\n            var blot = Registry.find(mutation.target, true);\n            if (blot == null)\n                return null;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n                return blot;\n            }\n            else {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n                return null;\n            }\n        })\n            .forEach(function (blot) {\n            if (blot == null ||\n                blot === _this ||\n                //@ts-ignore\n                blot.domNode[Registry.DATA_KEY] == null)\n                return;\n            // @ts-ignore\n            blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n        });\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY].mutations != null) {\n            // @ts-ignore\n            _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n        }\n        this.optimize(mutations, context);\n    };\n    ScrollBlot.blotName = 'scroll';\n    ScrollBlot.defaultChild = 'block';\n    ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n    ScrollBlot.tagName = 'DIV';\n    return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length)\n        return false;\n    // @ts-ignore\n    for (var prop in obj1) {\n        // @ts-ignore\n        if (obj1[prop] !== obj2[prop])\n            return false;\n    }\n    return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n    __extends(InlineBlot, _super);\n    function InlineBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    InlineBlot.formats = function (domNode) {\n        if (domNode.tagName === InlineBlot.tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    InlineBlot.prototype.format = function (name, value) {\n        var _this = this;\n        if (name === this.statics.blotName && !value) {\n            this.children.forEach(function (child) {\n                if (!(child instanceof format_1.default)) {\n                    child = child.wrap(InlineBlot.blotName, true);\n                }\n                _this.attributes.copy(child);\n            });\n            this.unwrap();\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    InlineBlot.prototype.formatAt = function (index, length, name, value) {\n        if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n            var blot = this.isolate(index, length);\n            blot.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    InlineBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        var formats = this.formats();\n        if (Object.keys(formats).length === 0) {\n            return this.unwrap(); // unformatted span\n        }\n        var next = this.next;\n        if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n            next.moveChildren(this);\n            next.remove();\n        }\n    };\n    InlineBlot.blotName = 'inline';\n    InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n    InlineBlot.tagName = 'SPAN';\n    return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n    __extends(BlockBlot, _super);\n    function BlockBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BlockBlot.formats = function (domNode) {\n        var tagName = Registry.query(BlockBlot.blotName).tagName;\n        if (domNode.tagName === tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    BlockBlot.prototype.format = function (name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n            return;\n        }\n        else if (name === this.statics.blotName && !value) {\n            this.replaceWith(BlockBlot.blotName);\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    BlockBlot.prototype.formatAt = function (index, length, name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    BlockBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n            // Insert text or inline\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n        else {\n            var after = this.split(index);\n            var blot = Registry.create(value, def);\n            after.parent.insertBefore(blot, after);\n        }\n    };\n    BlockBlot.prototype.update = function (mutations, context) {\n        if (navigator.userAgent.match(/Trident/)) {\n            this.build();\n        }\n        else {\n            _super.prototype.update.call(this, mutations, context);\n        }\n    };\n    BlockBlot.blotName = 'block';\n    BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n    BlockBlot.tagName = 'P';\n    return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n    __extends(EmbedBlot, _super);\n    function EmbedBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    EmbedBlot.formats = function (domNode) {\n        return undefined;\n    };\n    EmbedBlot.prototype.format = function (name, value) {\n        // super.formatAt wraps, which is what we want in general,\n        // but this allows subclasses to overwrite for formats\n        // that just apply to particular embeds\n        _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n    };\n    EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n        if (index === 0 && length === this.length()) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    EmbedBlot.prototype.formats = function () {\n        return this.statics.formats(this.domNode);\n    };\n    return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n    __extends(TextBlot, _super);\n    function TextBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.text = _this.statics.value(_this.domNode);\n        return _this;\n    }\n    TextBlot.create = function (value) {\n        return document.createTextNode(value);\n    };\n    TextBlot.value = function (domNode) {\n        var text = domNode.data;\n        // @ts-ignore\n        if (text['normalize'])\n            text = text['normalize']();\n        return text;\n    };\n    TextBlot.prototype.deleteAt = function (index, length) {\n        this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n    };\n    TextBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node) {\n            return offset;\n        }\n        return -1;\n    };\n    TextBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null) {\n            this.text = this.text.slice(0, index) + value + this.text.slice(index);\n            this.domNode.data = this.text;\n        }\n        else {\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n    };\n    TextBlot.prototype.length = function () {\n        return this.text.length;\n    };\n    TextBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        this.text = this.statics.value(this.domNode);\n        if (this.text.length === 0) {\n            this.remove();\n        }\n        else if (this.next instanceof TextBlot && this.next.prev === this) {\n            this.insertAt(this.length(), this.next.value());\n            this.next.remove();\n        }\n    };\n    TextBlot.prototype.position = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        return [this.domNode, index];\n    };\n    TextBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = Registry.create(this.domNode.splitText(index));\n        this.parent.insertBefore(after, this.next);\n        this.text = this.statics.value(this.domNode);\n        return after;\n    };\n    TextBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (mutations.some(function (mutation) {\n            return mutation.type === 'characterData' && mutation.target === _this.domNode;\n        })) {\n            this.text = this.statics.value(this.domNode);\n        }\n    };\n    TextBlot.prototype.value = function () {\n        return this.text;\n    };\n    TextBlot.blotName = 'text';\n    TextBlot.scope = Registry.Scope.INLINE_BLOT;\n    return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n  var _toggle = DOMTokenList.prototype.toggle;\n  DOMTokenList.prototype.toggle = function (token, force) {\n    if (arguments.length > 1 && !this.contains(token) === !force) {\n      return force;\n    } else {\n      return _toggle.call(this, token);\n    }\n  };\n}\n\nif (!String.prototype.startsWith) {\n  String.prototype.startsWith = function (searchString, position) {\n    position = position || 0;\n    return this.substr(position, searchString.length) === searchString;\n  };\n}\n\nif (!String.prototype.endsWith) {\n  String.prototype.endsWith = function (searchString, position) {\n    var subjectString = this.toString();\n    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n      position = subjectString.length;\n    }\n    position -= searchString.length;\n    var lastIndex = subjectString.indexOf(searchString, position);\n    return lastIndex !== -1 && lastIndex === position;\n  };\n}\n\nif (!Array.prototype.find) {\n  Object.defineProperty(Array.prototype, \"find\", {\n    value: function value(predicate) {\n      if (this === null) {\n        throw new TypeError('Array.prototype.find called on null or undefined');\n      }\n      if (typeof predicate !== 'function') {\n        throw new TypeError('predicate must be a function');\n      }\n      var list = Object(this);\n      var length = list.length >>> 0;\n      var thisArg = arguments[1];\n      var value;\n\n      for (var i = 0; i < length; i++) {\n        value = list[i];\n        if (predicate.call(thisArg, value, i, list)) {\n          return value;\n        }\n      }\n      return undefined;\n    }\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  // Disable resizing in Firefox\n  document.execCommand(\"enableObjectResizing\", false, false);\n  // Disable automatic linkifying in IE11\n  document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  // Check cursor_pos within bounds\n  if (cursor_pos < 0 || text1.length < cursor_pos) {\n    cursor_pos = null;\n  }\n\n  // Trim off common prefix (speedup).\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = diff_compute_(text1, text2);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs);\n  if (cursor_pos != null) {\n    diffs = fix_cursor(diffs, cursor_pos);\n  }\n  diffs = fix_emoji(diffs);\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n             [DIFF_EQUAL, shorttext],\n             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 != 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length &&\n             text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length &&\n             text1.charAt(text1_length - x2 - 1) ==\n             text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nfunction diff_commonPrefix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) ==\n        text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 ||\n      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = diff_commonPrefix(longtext.substring(i),\n                                           shorttext.substring(j));\n      var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n                                           shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) +\n            shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b,\n              best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if ((pointer - count_delete - count_insert) > 0 &&\n                  diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                    text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, [DIFF_EQUAL,\n                                    text_insert.substring(0, commonlength)]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length -\n                  commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length -\n                  commonlength);\n              text_delete = text_delete.substring(0, text_delete.length -\n                  commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          if (count_delete === 0) {\n            diffs.splice(pointer - count_insert,\n                count_delete + count_insert, [DIFF_INSERT, text_insert]);\n          } else if (count_insert === 0) {\n            diffs.splice(pointer - count_delete,\n                count_delete + count_insert, [DIFF_DELETE, text_delete]);\n          } else {\n            diffs.splice(pointer - count_delete - count_insert,\n                count_delete + count_insert, [DIFF_DELETE, text_delete],\n                [DIFF_INSERT, text_insert]);\n          }\n          pointer = pointer - count_delete - count_insert +\n                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n                                        diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n          diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n            diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n *   cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n *     => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n *   cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n *     => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n  if (cursor_pos === 0) {\n    return [DIFF_EQUAL, diffs];\n  }\n  for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n    var d = diffs[i];\n    if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n      var next_pos = current_pos + d[1].length;\n      if (cursor_pos === next_pos) {\n        return [i + 1, diffs];\n      } else if (cursor_pos < next_pos) {\n        // copy to prevent side effects\n        diffs = diffs.slice();\n        // split d into two diff changes\n        var split_pos = cursor_pos - current_pos;\n        var d_left = [d[0], d[1].slice(0, split_pos)];\n        var d_right = [d[0], d[1].slice(split_pos)];\n        diffs.splice(i, 1, d_left, d_right);\n        return [i + 1, diffs];\n      } else {\n        current_pos = next_pos;\n      }\n    }\n  }\n  throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n *   Check if a naive shift is possible:\n *     [0, X], [ 1, Y] -> [ 1, Y], [0, X]    (if X + Y === Y + X)\n *     [0, X], [-1, Y] -> [-1, Y], [0, X]    (if X + Y === Y + X) - holds same result\n * Case 2)\n *   Check if the following shifts are possible:\n *     [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n *     [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n *         ^            ^\n *         d          d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n  var norm = cursor_normalize_diff(diffs, cursor_pos);\n  var ndiffs = norm[1];\n  var cursor_pointer = norm[0];\n  var d = ndiffs[cursor_pointer];\n  var d_next = ndiffs[cursor_pointer + 1];\n\n  if (d == null) {\n    // Text was deleted from end of original string,\n    // cursor is now out of bounds in new string\n    return diffs;\n  } else if (d[0] !== DIFF_EQUAL) {\n    // A modification happened at the cursor location.\n    // This is the expected outcome, so we can return the original diff.\n    return diffs;\n  } else {\n    if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n      // Case 1)\n      // It is possible to perform a naive shift\n      ndiffs.splice(cursor_pointer, 2, d_next, d)\n      return merge_tuples(ndiffs, cursor_pointer, 2)\n    } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n      // Case 2)\n      // d[1] is a prefix of d_next[1]\n      // We can assume that d_next[0] !== 0, since d[0] === 0\n      // Shift edit locations..\n      ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n      var suffix = d_next[1].slice(d[1].length);\n      if (suffix.length > 0) {\n        ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n      }\n      return merge_tuples(ndiffs, cursor_pointer, 3)\n    } else {\n      // Not possible to perform any modification\n      return diffs;\n    }\n  }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n *     '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n  var compact = false;\n  var starts_with_pair_end = function(str) {\n    return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n  }\n  var ends_with_pair_start = function(str) {\n    return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n  }\n  for (var i = 2; i < diffs.length; i += 1) {\n    if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n        diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n        diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n      compact = true;\n\n      diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n      diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n      diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n    }\n  }\n  if (!compact) {\n    return diffs;\n  }\n  var fixed_diffs = [];\n  for (var i = 0; i < diffs.length; i += 1) {\n    if (diffs[i][1].length > 0) {\n      fixed_diffs.push(diffs[i]);\n    }\n  }\n  return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n  // Check from (start-1) to (start+length).\n  for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n    if (i + 1 < diffs.length) {\n      var left_d = diffs[i];\n      var right_d = diffs[i+1];\n      if (left_d[0] === right_d[1]) {\n        diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n      }\n    }\n  }\n  return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n  _inherits(Clipboard, _Module);\n\n  function Clipboard(quill, options) {\n    _classCallCheck(this, Clipboard);\n\n    var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n    _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n    _this.container = _this.quill.addContainer('ql-clipboard');\n    _this.container.setAttribute('contenteditable', true);\n    _this.container.setAttribute('tabindex', -1);\n    _this.matchers = [];\n    CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          selector = _ref2[0],\n          matcher = _ref2[1];\n\n      if (!options.matchVisual && matcher === matchSpacing) return;\n      _this.addMatcher(selector, matcher);\n    });\n    return _this;\n  }\n\n  _createClass(Clipboard, [{\n    key: 'addMatcher',\n    value: function addMatcher(selector, matcher) {\n      this.matchers.push([selector, matcher]);\n    }\n  }, {\n    key: 'convert',\n    value: function convert(html) {\n      if (typeof html === 'string') {\n        this.container.innerHTML = html.replace(/\\>\\r?\\n +\\</g, '><'); // Remove spaces between tags\n        return this.convert();\n      }\n      var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n      if (formats[_code2.default.blotName]) {\n        var text = this.container.innerText;\n        this.container.innerHTML = '';\n        return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n      }\n\n      var _prepareMatching = this.prepareMatching(),\n          _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n          elementMatchers = _prepareMatching2[0],\n          textMatchers = _prepareMatching2[1];\n\n      var delta = traverse(this.container, elementMatchers, textMatchers);\n      // Remove trailing newline\n      if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n        delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n      }\n      debug.log('convert', this.container.innerHTML, delta);\n      this.container.innerHTML = '';\n      return delta;\n    }\n  }, {\n    key: 'dangerouslyPasteHTML',\n    value: function dangerouslyPasteHTML(index, html) {\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n      if (typeof index === 'string') {\n        this.quill.setContents(this.convert(index), html);\n        this.quill.setSelection(0, _quill2.default.sources.SILENT);\n      } else {\n        var paste = this.convert(html);\n        this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n        this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n      }\n    }\n  }, {\n    key: 'onPaste',\n    value: function onPaste(e) {\n      var _this2 = this;\n\n      if (e.defaultPrevented || !this.quill.isEnabled()) return;\n      var range = this.quill.getSelection();\n      var delta = new _quillDelta2.default().retain(range.index);\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.container.focus();\n      this.quill.selection.update(_quill2.default.sources.SILENT);\n      setTimeout(function () {\n        delta = delta.concat(_this2.convert()).delete(range.length);\n        _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n        // range.length contributes to delta.length()\n        _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n        _this2.quill.scrollingContainer.scrollTop = scrollTop;\n        _this2.quill.focus();\n      }, 1);\n    }\n  }, {\n    key: 'prepareMatching',\n    value: function prepareMatching() {\n      var _this3 = this;\n\n      var elementMatchers = [],\n          textMatchers = [];\n      this.matchers.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            selector = _pair[0],\n            matcher = _pair[1];\n\n        switch (selector) {\n          case Node.TEXT_NODE:\n            textMatchers.push(matcher);\n            break;\n          case Node.ELEMENT_NODE:\n            elementMatchers.push(matcher);\n            break;\n          default:\n            [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n              // TODO use weakmap\n              node[DOM_KEY] = node[DOM_KEY] || [];\n              node[DOM_KEY].push(matcher);\n            });\n            break;\n        }\n      });\n      return [elementMatchers, textMatchers];\n    }\n  }]);\n\n  return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n  matchers: [],\n  matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n  if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n    return Object.keys(format).reduce(function (delta, key) {\n      return applyFormat(delta, key, format[key]);\n    }, delta);\n  } else {\n    return delta.reduce(function (delta, op) {\n      if (op.attributes && op.attributes[format]) {\n        return delta.push(op);\n      } else {\n        return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n      }\n    }, new _quillDelta2.default());\n  }\n}\n\nfunction computeStyle(node) {\n  if (node.nodeType !== Node.ELEMENT_NODE) return {};\n  var DOM_KEY = '__ql-computed-style';\n  return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n  var endText = \"\";\n  for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n    var op = delta.ops[i];\n    if (typeof op.insert !== 'string') break;\n    endText = op.insert + endText;\n  }\n  return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n  if (node.childNodes.length === 0) return false; // Exclude embed blocks\n  var style = computeStyle(node);\n  return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n  // Post-order\n  if (node.nodeType === node.TEXT_NODE) {\n    return textMatchers.reduce(function (delta, matcher) {\n      return matcher(node, delta);\n    }, new _quillDelta2.default());\n  } else if (node.nodeType === node.ELEMENT_NODE) {\n    return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n      var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n      if (childNode.nodeType === node.ELEMENT_NODE) {\n        childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n        childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n      }\n      return delta.concat(childrenDelta);\n    }, new _quillDelta2.default());\n  } else {\n    return new _quillDelta2.default();\n  }\n}\n\nfunction matchAlias(format, node, delta) {\n  return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n  var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n  var classes = _parchment2.default.Attributor.Class.keys(node);\n  var styles = _parchment2.default.Attributor.Style.keys(node);\n  var formats = {};\n  attributes.concat(classes).concat(styles).forEach(function (name) {\n    var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n    if (attr != null) {\n      formats[attr.attrName] = attr.value(node);\n      if (formats[attr.attrName]) return;\n    }\n    attr = ATTRIBUTE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n    attr = STYLE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      attr = STYLE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n  });\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  return delta;\n}\n\nfunction matchBlot(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null) return delta;\n  if (match.prototype instanceof _parchment2.default.Embed) {\n    var embed = {};\n    var value = match.value(node);\n    if (value != null) {\n      embed[match.blotName] = value;\n      delta = new _quillDelta2.default().insert(embed, match.formats(node));\n    }\n  } else if (typeof match.formats === 'function') {\n    delta = applyFormat(delta, match.blotName, match.formats(node));\n  }\n  return delta;\n}\n\nfunction matchBreak(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n  return delta;\n}\n\nfunction matchIgnore() {\n  return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n    return delta;\n  }\n  var indent = -1,\n      parent = node.parentNode;\n  while (!parent.classList.contains('ql-clipboard')) {\n    if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n      indent += 1;\n    }\n    parent = parent.parentNode;\n  }\n  if (indent <= 0) return delta;\n  return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchSpacing(node, delta) {\n  if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n    var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n    if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchStyles(node, delta) {\n  var formats = {};\n  var style = node.style || {};\n  if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n    formats.italic = true;\n  }\n  if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n    formats.bold = true;\n  }\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  if (parseFloat(style.textIndent || 0) > 0) {\n    // Could be 0.5in\n    delta = new _quillDelta2.default().insert('\\t').concat(delta);\n  }\n  return delta;\n}\n\nfunction matchText(node, delta) {\n  var text = node.data;\n  // Word represents empty line with <o:p>&nbsp;</o:p>\n  if (node.parentNode.tagName === 'O:P') {\n    return delta.insert(text.trim());\n  }\n  if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n    return delta;\n  }\n  if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n    // eslint-disable-next-line func-style\n    var replacer = function replacer(collapse, match) {\n      match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n      return match.length < 1 && collapse ? ' ' : match;\n    };\n    text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n    text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n    if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n      text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n    }\n    if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n      text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n    }\n  }\n  return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n  _inherits(Bold, _Inline);\n\n  function Bold() {\n    _classCallCheck(this, Bold);\n\n    return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n  }\n\n  _createClass(Bold, [{\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n      if (this.domNode.tagName !== this.statics.tagName[0]) {\n        this.replaceWith(this.statics.blotName);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create() {\n      return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n  _inherits(Toolbar, _Module);\n\n  function Toolbar(quill, options) {\n    _classCallCheck(this, Toolbar);\n\n    var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n    if (Array.isArray(_this.options.container)) {\n      var container = document.createElement('div');\n      addControls(container, _this.options.container);\n      quill.container.parentNode.insertBefore(container, quill.container);\n      _this.container = container;\n    } else if (typeof _this.options.container === 'string') {\n      _this.container = document.querySelector(_this.options.container);\n    } else {\n      _this.container = _this.options.container;\n    }\n    if (!(_this.container instanceof HTMLElement)) {\n      var _ret;\n\n      return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n    }\n    _this.container.classList.add('ql-toolbar');\n    _this.controls = [];\n    _this.handlers = {};\n    Object.keys(_this.options.handlers).forEach(function (format) {\n      _this.addHandler(format, _this.options.handlers[format]);\n    });\n    [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n      _this.attach(input);\n    });\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n      if (type === _quill2.default.events.SELECTION_CHANGE) {\n        _this.update(range);\n      }\n    });\n    _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      var _this$quill$selection = _this.quill.selection.getRange(),\n          _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n          range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n      _this.update(range);\n    });\n    return _this;\n  }\n\n  _createClass(Toolbar, [{\n    key: 'addHandler',\n    value: function addHandler(format, handler) {\n      this.handlers[format] = handler;\n    }\n  }, {\n    key: 'attach',\n    value: function attach(input) {\n      var _this2 = this;\n\n      var format = [].find.call(input.classList, function (className) {\n        return className.indexOf('ql-') === 0;\n      });\n      if (!format) return;\n      format = format.slice('ql-'.length);\n      if (input.tagName === 'BUTTON') {\n        input.setAttribute('type', 'button');\n      }\n      if (this.handlers[format] == null) {\n        if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n          debug.warn('ignoring attaching to disabled format', format, input);\n          return;\n        }\n        if (_parchment2.default.query(format) == null) {\n          debug.warn('ignoring attaching to nonexistent format', format, input);\n          return;\n        }\n      }\n      var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n      input.addEventListener(eventName, function (e) {\n        var value = void 0;\n        if (input.tagName === 'SELECT') {\n          if (input.selectedIndex < 0) return;\n          var selected = input.options[input.selectedIndex];\n          if (selected.hasAttribute('selected')) {\n            value = false;\n          } else {\n            value = selected.value || false;\n          }\n        } else {\n          if (input.classList.contains('ql-active')) {\n            value = false;\n          } else {\n            value = input.value || !input.hasAttribute('value');\n          }\n          e.preventDefault();\n        }\n        _this2.quill.focus();\n\n        var _quill$selection$getR = _this2.quill.selection.getRange(),\n            _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n            range = _quill$selection$getR2[0];\n\n        if (_this2.handlers[format] != null) {\n          _this2.handlers[format].call(_this2, value);\n        } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n          value = prompt('Enter ' + format);\n          if (!value) return;\n          _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n        } else {\n          _this2.quill.format(format, value, _quill2.default.sources.USER);\n        }\n        _this2.update(range);\n      });\n      // TODO use weakmap\n      this.controls.push([format, input]);\n    }\n  }, {\n    key: 'update',\n    value: function update(range) {\n      var formats = range == null ? {} : this.quill.getFormat(range);\n      this.controls.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            format = _pair[0],\n            input = _pair[1];\n\n        if (input.tagName === 'SELECT') {\n          var option = void 0;\n          if (range == null) {\n            option = null;\n          } else if (formats[format] == null) {\n            option = input.querySelector('option[selected]');\n          } else if (!Array.isArray(formats[format])) {\n            var value = formats[format];\n            if (typeof value === 'string') {\n              value = value.replace(/\\\"/g, '\\\\\"');\n            }\n            option = input.querySelector('option[value=\"' + value + '\"]');\n          }\n          if (option == null) {\n            input.value = ''; // TODO make configurable?\n            input.selectedIndex = -1;\n          } else {\n            option.selected = true;\n          }\n        } else {\n          if (range == null) {\n            input.classList.remove('ql-active');\n          } else if (input.hasAttribute('value')) {\n            // both being null should match (default values)\n            // '1' should match with 1 (headers)\n            var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n            input.classList.toggle('ql-active', isActive);\n          } else {\n            input.classList.toggle('ql-active', formats[format] != null);\n          }\n        }\n      });\n    }\n  }]);\n\n  return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n  var input = document.createElement('button');\n  input.setAttribute('type', 'button');\n  input.classList.add('ql-' + format);\n  if (value != null) {\n    input.value = value;\n  }\n  container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n  if (!Array.isArray(groups[0])) {\n    groups = [groups];\n  }\n  groups.forEach(function (controls) {\n    var group = document.createElement('span');\n    group.classList.add('ql-formats');\n    controls.forEach(function (control) {\n      if (typeof control === 'string') {\n        addButton(group, control);\n      } else {\n        var format = Object.keys(control)[0];\n        var value = control[format];\n        if (Array.isArray(value)) {\n          addSelect(group, format, value);\n        } else {\n          addButton(group, format, value);\n        }\n      }\n    });\n    container.appendChild(group);\n  });\n}\n\nfunction addSelect(container, format, values) {\n  var input = document.createElement('select');\n  input.classList.add('ql-' + format);\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value !== false) {\n      option.setAttribute('value', value);\n    } else {\n      option.setAttribute('selected', 'selected');\n    }\n    input.appendChild(option);\n  });\n  container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n  container: null,\n  handlers: {\n    clean: function clean() {\n      var _this3 = this;\n\n      var range = this.quill.getSelection();\n      if (range == null) return;\n      if (range.length == 0) {\n        var formats = this.quill.getFormat();\n        Object.keys(formats).forEach(function (name) {\n          // Clean functionality in existing apps only clean inline formats\n          if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n            _this3.quill.format(name, false);\n          }\n        });\n      } else {\n        this.quill.removeFormat(range, _quill2.default.sources.USER);\n      }\n    },\n    direction: function direction(value) {\n      var align = this.quill.getFormat()['align'];\n      if (value === 'rtl' && align == null) {\n        this.quill.format('align', 'right', _quill2.default.sources.USER);\n      } else if (!value && align === 'right') {\n        this.quill.format('align', false, _quill2.default.sources.USER);\n      }\n      this.quill.format('direction', value, _quill2.default.sources.USER);\n    },\n    indent: function indent(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      var indent = parseInt(formats.indent || 0);\n      if (value === '+1' || value === '-1') {\n        var modifier = value === '+1' ? 1 : -1;\n        if (formats.direction === 'rtl') modifier *= -1;\n        this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n      }\n    },\n    link: function link(value) {\n      if (value === true) {\n        value = prompt('Enter link URL:');\n      }\n      this.quill.format('link', value, _quill2.default.sources.USER);\n    },\n    list: function list(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      if (value === 'check') {\n        if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        } else {\n          this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n        }\n      } else {\n        this.quill.format('list', value, _quill2.default.sources.USER);\n      }\n    }\n  }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n  _inherits(ColorPicker, _Picker);\n\n  function ColorPicker(select, label) {\n    _classCallCheck(this, ColorPicker);\n\n    var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n    _this.label.innerHTML = label;\n    _this.container.classList.add('ql-color-picker');\n    [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n      item.classList.add('ql-primary');\n    });\n    return _this;\n  }\n\n  _createClass(ColorPicker, [{\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n      item.style.backgroundColor = option.getAttribute('value') || '';\n      return item;\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      var colorLabel = this.label.querySelector('.ql-color-label');\n      var value = item ? item.getAttribute('data-value') || '' : '';\n      if (colorLabel) {\n        if (colorLabel.tagName === 'line') {\n          colorLabel.style.stroke = value;\n        } else {\n          colorLabel.style.fill = value;\n        }\n      }\n    }\n  }]);\n\n  return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n  _inherits(IconPicker, _Picker);\n\n  function IconPicker(select, icons) {\n    _classCallCheck(this, IconPicker);\n\n    var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n    _this.container.classList.add('ql-icon-picker');\n    [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n      item.innerHTML = icons[item.getAttribute('data-value') || ''];\n    });\n    _this.defaultItem = _this.container.querySelector('.ql-selected');\n    _this.selectItem(_this.defaultItem);\n    return _this;\n  }\n\n  _createClass(IconPicker, [{\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      item = item || this.defaultItem;\n      this.label.innerHTML = item.innerHTML;\n    }\n  }]);\n\n  return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n  function Tooltip(quill, boundsContainer) {\n    var _this = this;\n\n    _classCallCheck(this, Tooltip);\n\n    this.quill = quill;\n    this.boundsContainer = boundsContainer || document.body;\n    this.root = quill.addContainer('ql-tooltip');\n    this.root.innerHTML = this.constructor.TEMPLATE;\n    if (this.quill.root === this.quill.scrollingContainer) {\n      this.quill.root.addEventListener('scroll', function () {\n        _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n      });\n    }\n    this.hide();\n  }\n\n  _createClass(Tooltip, [{\n    key: 'hide',\n    value: function hide() {\n      this.root.classList.add('ql-hidden');\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n      // root.scrollTop should be 0 if scrollContainer !== root\n      var top = reference.bottom + this.quill.root.scrollTop;\n      this.root.style.left = left + 'px';\n      this.root.style.top = top + 'px';\n      this.root.classList.remove('ql-flip');\n      var containerBounds = this.boundsContainer.getBoundingClientRect();\n      var rootBounds = this.root.getBoundingClientRect();\n      var shift = 0;\n      if (rootBounds.right > containerBounds.right) {\n        shift = containerBounds.right - rootBounds.right;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.left < containerBounds.left) {\n        shift = containerBounds.left - rootBounds.left;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.bottom > containerBounds.bottom) {\n        var height = rootBounds.bottom - rootBounds.top;\n        var verticalShift = reference.bottom - reference.top + height;\n        this.root.style.top = top - verticalShift + 'px';\n        this.root.classList.add('ql-flip');\n      }\n      return shift;\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      this.root.classList.remove('ql-editing');\n      this.root.classList.remove('ql-hidden');\n    }\n  }]);\n\n  return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n  _inherits(SnowTheme, _BaseTheme);\n\n  function SnowTheme(quill, options) {\n    _classCallCheck(this, SnowTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-snow');\n    return _this;\n  }\n\n  _createClass(SnowTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      toolbar.container.classList.add('ql-snow');\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n      this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n      if (toolbar.container.querySelector('.ql-link')) {\n        this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n          toolbar.handlers['link'].call(toolbar, !context.format.link);\n        });\n      }\n    }\n  }]);\n\n  return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (value) {\n            var range = this.quill.getSelection();\n            if (range == null || range.length == 0) return;\n            var preview = this.quill.getText(range);\n            if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n              preview = 'mailto:' + preview;\n            }\n            var tooltip = this.quill.theme.tooltip;\n            tooltip.edit('link', preview);\n          } else {\n            this.quill.format('link', false);\n          }\n        }\n      }\n    }\n  }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n  _inherits(SnowTooltip, _BaseTooltip);\n\n  function SnowTooltip(quill, bounds) {\n    _classCallCheck(this, SnowTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n    _this2.preview = _this2.root.querySelector('a.ql-preview');\n    return _this2;\n  }\n\n  _createClass(SnowTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n        if (_this3.root.classList.contains('ql-editing')) {\n          _this3.save();\n        } else {\n          _this3.edit('link', _this3.preview.textContent);\n        }\n        event.preventDefault();\n      });\n      this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n        if (_this3.linkRange != null) {\n          var range = _this3.linkRange;\n          _this3.restoreFocus();\n          _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n          delete _this3.linkRange;\n        }\n        event.preventDefault();\n        _this3.hide();\n      });\n      this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n        if (range == null) return;\n        if (range.length === 0 && source === _emitter2.default.sources.USER) {\n          var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n              _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n              link = _quill$scroll$descend2[0],\n              offset = _quill$scroll$descend2[1];\n\n          if (link != null) {\n            _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n            var preview = _link2.default.formats(link.domNode);\n            _this3.preview.textContent = preview;\n            _this3.preview.setAttribute('href', preview);\n            _this3.show();\n            _this3.position(_this3.quill.getBounds(_this3.linkRange));\n            return;\n          }\n        } else {\n          delete _this3.linkRange;\n        }\n        _this3.hide();\n      });\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n      this.root.removeAttribute('data-mode');\n    }\n  }]);\n\n  return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['<a class=\"ql-preview\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"about:blank\"></a>', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-action\"></a>', '<a class=\"ql-remove\"></a>'].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n  'attributors/attribute/direction': _direction.DirectionAttribute,\n\n  'attributors/class/align': _align.AlignClass,\n  'attributors/class/background': _background.BackgroundClass,\n  'attributors/class/color': _color.ColorClass,\n  'attributors/class/direction': _direction.DirectionClass,\n  'attributors/class/font': _font.FontClass,\n  'attributors/class/size': _size.SizeClass,\n\n  'attributors/style/align': _align.AlignStyle,\n  'attributors/style/background': _background.BackgroundStyle,\n  'attributors/style/color': _color.ColorStyle,\n  'attributors/style/direction': _direction.DirectionStyle,\n  'attributors/style/font': _font.FontStyle,\n  'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n  'formats/align': _align.AlignClass,\n  'formats/direction': _direction.DirectionClass,\n  'formats/indent': _indent.IndentClass,\n\n  'formats/background': _background.BackgroundStyle,\n  'formats/color': _color.ColorStyle,\n  'formats/font': _font.FontClass,\n  'formats/size': _size.SizeClass,\n\n  'formats/blockquote': _blockquote2.default,\n  'formats/code-block': _code2.default,\n  'formats/header': _header2.default,\n  'formats/list': _list2.default,\n\n  'formats/bold': _bold2.default,\n  'formats/code': _code.Code,\n  'formats/italic': _italic2.default,\n  'formats/link': _link2.default,\n  'formats/script': _script2.default,\n  'formats/strike': _strike2.default,\n  'formats/underline': _underline2.default,\n\n  'formats/image': _image2.default,\n  'formats/video': _video2.default,\n\n  'formats/list/item': _list.ListItem,\n\n  'modules/formula': _formula2.default,\n  'modules/syntax': _syntax2.default,\n  'modules/toolbar': _toolbar2.default,\n\n  'themes/bubble': _bubble2.default,\n  'themes/snow': _snow2.default,\n\n  'ui/icons': _icons2.default,\n  'ui/picker': _picker2.default,\n  'ui/icon-picker': _iconPicker2.default,\n  'ui/color-picker': _colorPicker2.default,\n  'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n  _inherits(IdentAttributor, _Parchment$Attributor);\n\n  function IdentAttributor() {\n    _classCallCheck(this, IdentAttributor);\n\n    return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n  }\n\n  _createClass(IdentAttributor, [{\n    key: 'add',\n    value: function add(node, value) {\n      if (value === '+1' || value === '-1') {\n        var indent = this.value(node) || 0;\n        value = value === '+1' ? indent + 1 : indent - 1;\n      }\n      if (value === 0) {\n        this.remove(node);\n        return true;\n      } else {\n        return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n      }\n    }\n  }, {\n    key: 'canAdd',\n    value: function canAdd(node, value) {\n      return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n    }\n  }, {\n    key: 'value',\n    value: function value(node) {\n      return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n    }\n  }]);\n\n  return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n  _inherits(Blockquote, _Block);\n\n  function Blockquote() {\n    _classCallCheck(this, Blockquote);\n\n    return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n  }\n\n  return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n  _inherits(Header, _Block);\n\n  function Header() {\n    _classCallCheck(this, Header);\n\n    return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n  }\n\n  _createClass(Header, null, [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return this.tagName.indexOf(domNode.tagName) + 1;\n    }\n  }]);\n\n  return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n  _inherits(ListItem, _Block);\n\n  function ListItem() {\n    _classCallCheck(this, ListItem);\n\n    return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n  }\n\n  _createClass(ListItem, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name === List.blotName && !value) {\n        this.replaceWith(_parchment2.default.create(this.statics.scope));\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      if (this.prev == null && this.next == null) {\n        this.parent.remove();\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n      }\n    }\n  }, {\n    key: 'replaceWith',\n    value: function replaceWith(name, value) {\n      this.parent.isolate(this.offset(this.parent), this.length());\n      if (name === this.parent.statics.blotName) {\n        this.parent.replaceWith(name, value);\n        return this;\n      } else {\n        this.parent.unwrap();\n        return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n    }\n  }]);\n\n  return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n  _inherits(List, _Container);\n\n  _createClass(List, null, [{\n    key: 'create',\n    value: function create(value) {\n      var tagName = value === 'ordered' ? 'OL' : 'UL';\n      var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n      if (value === 'checked' || value === 'unchecked') {\n        node.setAttribute('data-checked', value === 'checked');\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'OL') return 'ordered';\n      if (domNode.tagName === 'UL') {\n        if (domNode.hasAttribute('data-checked')) {\n          return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n        } else {\n          return 'bullet';\n        }\n      }\n      return undefined;\n    }\n  }]);\n\n  function List(domNode) {\n    _classCallCheck(this, List);\n\n    var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n    var listEventHandler = function listEventHandler(e) {\n      if (e.target.parentNode !== domNode) return;\n      var format = _this2.statics.formats(domNode);\n      var blot = _parchment2.default.find(e.target);\n      if (format === 'checked') {\n        blot.format('list', 'unchecked');\n      } else if (format === 'unchecked') {\n        blot.format('list', 'checked');\n      }\n    };\n\n    domNode.addEventListener('touchstart', listEventHandler);\n    domNode.addEventListener('mousedown', listEventHandler);\n    return _this2;\n  }\n\n  _createClass(List, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (this.children.length > 0) {\n        this.children.tail.format(name, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      // We don't inherit from FormatBlot\n      return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot instanceof ListItem) {\n        _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n      } else {\n        var index = ref == null ? this.length() : ref.offset(this);\n        var after = this.split(index);\n        after.parent.insertBefore(blot, after);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      if (target.statics.blotName !== this.statics.blotName) {\n        var item = _parchment2.default.create(this.statics.defaultChild);\n        target.moveChildren(item);\n        this.appendChild(item);\n      }\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n    }\n  }]);\n\n  return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n  _inherits(Italic, _Bold);\n\n  function Italic() {\n    _classCallCheck(this, Italic);\n\n    return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n  }\n\n  return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n  _inherits(Script, _Inline);\n\n  function Script() {\n    _classCallCheck(this, Script);\n\n    return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n  }\n\n  _createClass(Script, null, [{\n    key: 'create',\n    value: function create(value) {\n      if (value === 'super') {\n        return document.createElement('sup');\n      } else if (value === 'sub') {\n        return document.createElement('sub');\n      } else {\n        return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'SUB') return 'sub';\n      if (domNode.tagName === 'SUP') return 'super';\n      return undefined;\n    }\n  }]);\n\n  return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n  _inherits(Strike, _Inline);\n\n  function Strike() {\n    _classCallCheck(this, Strike);\n\n    return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n  }\n\n  return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n  _inherits(Underline, _Inline);\n\n  function Underline() {\n    _classCallCheck(this, Underline);\n\n    return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n  }\n\n  return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n  _inherits(Image, _Parchment$Embed);\n\n  function Image() {\n    _classCallCheck(this, Image);\n\n    return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n  }\n\n  _createClass(Image, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        node.setAttribute('src', this.sanitize(value));\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'match',\n    value: function match(url) {\n      return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n      );\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n  _inherits(Video, _BlockEmbed);\n\n  function Video() {\n    _classCallCheck(this, Video);\n\n    return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n  }\n\n  _createClass(Video, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n      node.setAttribute('frameborder', '0');\n      node.setAttribute('allowfullscreen', true);\n      node.setAttribute('src', this.sanitize(value));\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _link2.default.sanitize(url);\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n  _inherits(FormulaBlot, _Embed);\n\n  function FormulaBlot() {\n    _classCallCheck(this, FormulaBlot);\n\n    return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n  }\n\n  _createClass(FormulaBlot, null, [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        window.katex.render(value, node, {\n          throwOnError: false,\n          errorColor: '#f00'\n        });\n        node.setAttribute('data-value', value);\n      }\n      return node;\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('data-value');\n    }\n  }]);\n\n  return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n  _inherits(Formula, _Module);\n\n  _createClass(Formula, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(FormulaBlot, true);\n    }\n  }]);\n\n  function Formula() {\n    _classCallCheck(this, Formula);\n\n    var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n    if (window.katex == null) {\n      throw new Error('Formula module requires KaTeX.');\n    }\n    return _this2;\n  }\n\n  return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n  _inherits(SyntaxCodeBlock, _CodeBlock);\n\n  function SyntaxCodeBlock() {\n    _classCallCheck(this, SyntaxCodeBlock);\n\n    return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(SyntaxCodeBlock, [{\n    key: 'replaceWith',\n    value: function replaceWith(block) {\n      this.domNode.textContent = this.domNode.textContent;\n      this.attach();\n      _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n    }\n  }, {\n    key: 'highlight',\n    value: function highlight(_highlight) {\n      var text = this.domNode.textContent;\n      if (this.cachedText !== text) {\n        if (text.trim().length > 0 || this.cachedText == null) {\n          this.domNode.innerHTML = _highlight(text);\n          this.domNode.normalize();\n          this.attach();\n        }\n        this.cachedText = text;\n      }\n    }\n  }]);\n\n  return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n  _inherits(Syntax, _Module);\n\n  _createClass(Syntax, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(CodeToken, true);\n      _quill2.default.register(SyntaxCodeBlock, true);\n    }\n  }]);\n\n  function Syntax(quill, options) {\n    _classCallCheck(this, Syntax);\n\n    var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n    if (typeof _this2.options.highlight !== 'function') {\n      throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n    }\n    var timer = null;\n    _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      clearTimeout(timer);\n      timer = setTimeout(function () {\n        _this2.highlight();\n        timer = null;\n      }, _this2.options.interval);\n    });\n    _this2.highlight();\n    return _this2;\n  }\n\n  _createClass(Syntax, [{\n    key: 'highlight',\n    value: function highlight() {\n      var _this3 = this;\n\n      if (this.quill.selection.composing) return;\n      this.quill.update(_quill2.default.sources.USER);\n      var range = this.quill.getSelection();\n      this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n        code.highlight(_this3.options.highlight);\n      });\n      this.quill.update(_quill2.default.sources.SILENT);\n      if (range != null) {\n        this.quill.setSelection(range, _quill2.default.sources.SILENT);\n      }\n    }\n  }]);\n\n  return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n  highlight: function () {\n    if (window.hljs == null) return null;\n    return function (text) {\n      var result = window.hljs.highlightAuto(text);\n      return result.value;\n    };\n  }(),\n  interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z /> </svg>\";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z /> </svg>\";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points=\\\"3 4 4 5 6 3\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points=\\\"3 14 4 15 6 13\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"3 9 4 10 6 8\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n  _inherits(BubbleTheme, _BaseTheme);\n\n  function BubbleTheme(quill, options) {\n    _classCallCheck(this, BubbleTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-bubble');\n    return _this;\n  }\n\n  _createClass(BubbleTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n      this.tooltip.root.appendChild(toolbar.container);\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n    }\n  }]);\n\n  return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (!value) {\n            this.quill.format('link', false);\n          } else {\n            this.quill.theme.tooltip.edit();\n          }\n        }\n      }\n    }\n  }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n  _inherits(BubbleTooltip, _BaseTooltip);\n\n  function BubbleTooltip(quill, bounds) {\n    _classCallCheck(this, BubbleTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n    _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n      if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n      if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n        _this2.show();\n        // Lock our width so we will expand beyond our offsetParent boundaries\n        _this2.root.style.left = '0px';\n        _this2.root.style.width = '';\n        _this2.root.style.width = _this2.root.offsetWidth + 'px';\n        var lines = _this2.quill.getLines(range.index, range.length);\n        if (lines.length === 1) {\n          _this2.position(_this2.quill.getBounds(range));\n        } else {\n          var lastLine = lines[lines.length - 1];\n          var index = _this2.quill.getIndex(lastLine);\n          var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n          var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n          _this2.position(_bounds);\n        }\n      } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n        _this2.hide();\n      }\n    });\n    return _this2;\n  }\n\n  _createClass(BubbleTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('.ql-close').addEventListener('click', function () {\n        _this3.root.classList.remove('ql-editing');\n      });\n      this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n        // Let selection be restored by toolbar handlers before repositioning\n        setTimeout(function () {\n          if (_this3.root.classList.contains('ql-hidden')) return;\n          var range = _this3.quill.getSelection();\n          if (range != null) {\n            _this3.position(_this3.quill.getBounds(range));\n          }\n        }, 1);\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.show();\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n      var arrow = this.root.querySelector('.ql-tooltip-arrow');\n      arrow.style.marginLeft = '';\n      if (shift === 0) return shift;\n      arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n    }\n  }]);\n\n  return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['<span class=\"ql-tooltip-arrow\"></span>', '<div class=\"ql-tooltip-editor\">', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-close\"></a>', '</div>'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\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","'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","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n  aTypedArrayConstructor(C);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\nvar addGetter = function (it, key) {\n  nativeDefineProperty(it, key, { get: function () {\n    return getInternalState(this)[key];\n  } });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && !isSymbol(key)\n    && key in target\n    && isIntegralNumber(+key)\n    && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  key = toPropertyKey(key);\n  return isTypedArrayIndex(target, key)\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  key = toPropertyKey(key);\n  if (isTypedArrayIndex(target, key)\n    && isObject(descriptor)\n    && hasOwn(descriptor, 'value')\n    && !hasOwn(descriptor, 'get')\n    && !hasOwn(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n      data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructorPrototype);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return fromList(TypedArrayConstructor, data);\n        } else {\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructorPrototype);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;return b.open(\"HEAD\",a,!1),b.send(),200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:top.location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var 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 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 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","'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 wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\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  definePropertyModule.f(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","/* 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 global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw TypeError('Incorrect invocation');\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.bpfrpt_proptype_VisibleCellRange = exports.bpfrpt_proptype_Alignment = exports.bpfrpt_proptype_OverscanIndicesGetter = exports.bpfrpt_proptype_OverscanIndices = exports.bpfrpt_proptype_OverscanIndicesGetterParams = exports.bpfrpt_proptype_RenderedSection = exports.bpfrpt_proptype_ScrollbarPresenceChange = exports.bpfrpt_proptype_Scroll = exports.bpfrpt_proptype_NoContentRenderer = exports.bpfrpt_proptype_CellSize = exports.bpfrpt_proptype_CellSizeGetter = exports.bpfrpt_proptype_CellRangeRenderer = exports.bpfrpt_proptype_CellRangeRendererParams = exports.bpfrpt_proptype_StyleCache = exports.bpfrpt_proptype_CellCache = exports.bpfrpt_proptype_CellRenderer = exports.bpfrpt_proptype_CellRendererParams = exports.bpfrpt_proptype_CellPosition = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _ScalingCellSizeAndPositionManager = _interopRequireDefault(require(\"./utils/ScalingCellSizeAndPositionManager\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar bpfrpt_proptype_CellPosition = process.env.NODE_ENV === 'production' ? null : {\n  \"columnIndex\": _propTypes[\"default\"].number.isRequired,\n  \"rowIndex\": _propTypes[\"default\"].number.isRequired\n};\nexports.bpfrpt_proptype_CellPosition = bpfrpt_proptype_CellPosition;\nvar bpfrpt_proptype_CellRendererParams = process.env.NODE_ENV === 'production' ? null : {\n  \"columnIndex\": _propTypes[\"default\"].number.isRequired,\n  \"isScrolling\": _propTypes[\"default\"].bool.isRequired,\n  \"isVisible\": _propTypes[\"default\"].bool.isRequired,\n  \"key\": _propTypes[\"default\"].string.isRequired,\n  \"parent\": _propTypes[\"default\"].object.isRequired,\n  \"rowIndex\": _propTypes[\"default\"].number.isRequired,\n  \"style\": _propTypes[\"default\"].object.isRequired\n};\nexports.bpfrpt_proptype_CellRendererParams = bpfrpt_proptype_CellRendererParams;\nvar bpfrpt_proptype_CellRenderer = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].func;\nexports.bpfrpt_proptype_CellRenderer = bpfrpt_proptype_CellRenderer;\nvar bpfrpt_proptype_CellCache = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].objectOf(_propTypes[\"default\"].node.isRequired);\nexports.bpfrpt_proptype_CellCache = bpfrpt_proptype_CellCache;\nvar bpfrpt_proptype_StyleCache = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].objectOf(_propTypes[\"default\"].object.isRequired);\nexports.bpfrpt_proptype_StyleCache = bpfrpt_proptype_StyleCache;\nvar bpfrpt_proptype_CellRangeRendererParams = process.env.NODE_ENV === 'production' ? null : {\n  \"cellCache\": _propTypes[\"default\"].objectOf(_propTypes[\"default\"].node.isRequired).isRequired,\n  \"cellRenderer\": _propTypes[\"default\"].func.isRequired,\n  \"columnSizeAndPositionManager\": function columnSizeAndPositionManager() {\n    return (typeof _ScalingCellSizeAndPositionManager[\"default\"] === \"function\" ? _propTypes[\"default\"].instanceOf(_ScalingCellSizeAndPositionManager[\"default\"]).isRequired : _propTypes[\"default\"].any.isRequired).apply(this, arguments);\n  },\n  \"columnStartIndex\": _propTypes[\"default\"].number.isRequired,\n  \"columnStopIndex\": _propTypes[\"default\"].number.isRequired,\n  \"deferredMeasurementCache\": _propTypes[\"default\"].object,\n  \"horizontalOffsetAdjustment\": _propTypes[\"default\"].number.isRequired,\n  \"isScrolling\": _propTypes[\"default\"].bool.isRequired,\n  \"isScrollingOptOut\": _propTypes[\"default\"].bool.isRequired,\n  \"parent\": _propTypes[\"default\"].object.isRequired,\n  \"rowSizeAndPositionManager\": function rowSizeAndPositionManager() {\n    return (typeof _ScalingCellSizeAndPositionManager[\"default\"] === \"function\" ? _propTypes[\"default\"].instanceOf(_ScalingCellSizeAndPositionManager[\"default\"]).isRequired : _propTypes[\"default\"].any.isRequired).apply(this, arguments);\n  },\n  \"rowStartIndex\": _propTypes[\"default\"].number.isRequired,\n  \"rowStopIndex\": _propTypes[\"default\"].number.isRequired,\n  \"scrollLeft\": _propTypes[\"default\"].number.isRequired,\n  \"scrollTop\": _propTypes[\"default\"].number.isRequired,\n  \"styleCache\": _propTypes[\"default\"].objectOf(_propTypes[\"default\"].object.isRequired).isRequired,\n  \"verticalOffsetAdjustment\": _propTypes[\"default\"].number.isRequired,\n  \"visibleColumnIndices\": _propTypes[\"default\"].object.isRequired,\n  \"visibleRowIndices\": _propTypes[\"default\"].object.isRequired\n};\nexports.bpfrpt_proptype_CellRangeRendererParams = bpfrpt_proptype_CellRangeRendererParams;\nvar bpfrpt_proptype_CellRangeRenderer = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].func;\nexports.bpfrpt_proptype_CellRangeRenderer = bpfrpt_proptype_CellRangeRenderer;\nvar bpfrpt_proptype_CellSizeGetter = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].func;\nexports.bpfrpt_proptype_CellSizeGetter = bpfrpt_proptype_CellSizeGetter;\nvar bpfrpt_proptype_CellSize = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].number]);\nexports.bpfrpt_proptype_CellSize = bpfrpt_proptype_CellSize;\nvar bpfrpt_proptype_NoContentRenderer = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].func;\nexports.bpfrpt_proptype_NoContentRenderer = bpfrpt_proptype_NoContentRenderer;\nvar bpfrpt_proptype_Scroll = process.env.NODE_ENV === 'production' ? null : {\n  \"clientHeight\": _propTypes[\"default\"].number.isRequired,\n  \"clientWidth\": _propTypes[\"default\"].number.isRequired,\n  \"scrollHeight\": _propTypes[\"default\"].number.isRequired,\n  \"scrollLeft\": _propTypes[\"default\"].number.isRequired,\n  \"scrollTop\": _propTypes[\"default\"].number.isRequired,\n  \"scrollWidth\": _propTypes[\"default\"].number.isRequired\n};\nexports.bpfrpt_proptype_Scroll = bpfrpt_proptype_Scroll;\nvar bpfrpt_proptype_ScrollbarPresenceChange = process.env.NODE_ENV === 'production' ? null : {\n  \"horizontal\": _propTypes[\"default\"].bool.isRequired,\n  \"vertical\": _propTypes[\"default\"].bool.isRequired,\n  \"size\": _propTypes[\"default\"].number.isRequired\n};\nexports.bpfrpt_proptype_ScrollbarPresenceChange = bpfrpt_proptype_ScrollbarPresenceChange;\nvar bpfrpt_proptype_RenderedSection = process.env.NODE_ENV === 'production' ? null : {\n  \"columnOverscanStartIndex\": _propTypes[\"default\"].number.isRequired,\n  \"columnOverscanStopIndex\": _propTypes[\"default\"].number.isRequired,\n  \"columnStartIndex\": _propTypes[\"default\"].number.isRequired,\n  \"columnStopIndex\": _propTypes[\"default\"].number.isRequired,\n  \"rowOverscanStartIndex\": _propTypes[\"default\"].number.isRequired,\n  \"rowOverscanStopIndex\": _propTypes[\"default\"].number.isRequired,\n  \"rowStartIndex\": _propTypes[\"default\"].number.isRequired,\n  \"rowStopIndex\": _propTypes[\"default\"].number.isRequired\n};\nexports.bpfrpt_proptype_RenderedSection = bpfrpt_proptype_RenderedSection;\nvar bpfrpt_proptype_OverscanIndicesGetterParams = process.env.NODE_ENV === 'production' ? null : {\n  // One of SCROLL_DIRECTION_HORIZONTAL or SCROLL_DIRECTION_VERTICAL\n  \"direction\": _propTypes[\"default\"].oneOf([\"horizontal\", \"vertical\"]).isRequired,\n  // One of SCROLL_DIRECTION_BACKWARD or SCROLL_DIRECTION_FORWARD\n  \"scrollDirection\": _propTypes[\"default\"].oneOf([-1, 1]).isRequired,\n  // Number of rows or columns in the current axis\n  \"cellCount\": _propTypes[\"default\"].number.isRequired,\n  // Maximum number of cells to over-render in either direction\n  \"overscanCellsCount\": _propTypes[\"default\"].number.isRequired,\n  // Begin of range of visible cells\n  \"startIndex\": _propTypes[\"default\"].number.isRequired,\n  // End of range of visible cells\n  \"stopIndex\": _propTypes[\"default\"].number.isRequired\n};\nexports.bpfrpt_proptype_OverscanIndicesGetterParams = bpfrpt_proptype_OverscanIndicesGetterParams;\nvar bpfrpt_proptype_OverscanIndices = process.env.NODE_ENV === 'production' ? null : {\n  \"overscanStartIndex\": _propTypes[\"default\"].number.isRequired,\n  \"overscanStopIndex\": _propTypes[\"default\"].number.isRequired\n};\nexports.bpfrpt_proptype_OverscanIndices = bpfrpt_proptype_OverscanIndices;\nvar bpfrpt_proptype_OverscanIndicesGetter = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].func;\nexports.bpfrpt_proptype_OverscanIndicesGetter = bpfrpt_proptype_OverscanIndicesGetter;\nvar bpfrpt_proptype_Alignment = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].oneOf([\"auto\", \"end\", \"start\", \"center\"]);\nexports.bpfrpt_proptype_Alignment = bpfrpt_proptype_Alignment;\nvar bpfrpt_proptype_VisibleCellRange = process.env.NODE_ENV === 'production' ? null : {\n  \"start\": _propTypes[\"default\"].number,\n  \"stop\": _propTypes[\"default\"].number\n};\nexports.bpfrpt_proptype_VisibleCellRange = bpfrpt_proptype_VisibleCellRange;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n  each.call(slice.call(arguments, 1), function (source) {\n    if (source) {\n      for (var prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\nexport function hasXMLHttpRequest() {\n  return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\n\nfunction isPromise(maybePromise) {\n  return !!maybePromise && typeof maybePromise.then === 'function';\n}\n\nexport function makePromise(maybePromise) {\n  if (isPromise(maybePromise)) {\n    return maybePromise;\n  }\n\n  return Promise.resolve(maybePromise);\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 global = require('../internals/global');\nvar 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 = global.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 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","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\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 arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var global = require('../internals/global');\nvar 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 = global.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","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\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.22.5',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.22.5/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\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 classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\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 global = require('../internals/global');\nvar 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 = global.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 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 global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (canUseDOM) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.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 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","module.exports = {};\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 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 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","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.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 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 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 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","module.exports = {};\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 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 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\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 global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw TypeError('Not enough arguments');\n  return passed;\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","'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","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _getRequireWildcardCache(nodeInterop) {\n  if (typeof WeakMap !== \"function\") return null;\n  var cacheBabelInterop = new WeakMap();\n  var cacheNodeInterop = new WeakMap();\n  return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n  })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n  if (!nodeInterop && obj && obj.__esModule) {\n    return obj;\n  }\n\n  if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n    return {\n      \"default\": obj\n    };\n  }\n\n  var cache = _getRequireWildcardCache(nodeInterop);\n\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n\n  var newObj = {};\n  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n  for (var key in obj) {\n    if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n\n  newObj[\"default\"] = obj;\n\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n\n  return newObj;\n}\n\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n  if (aName in aArgs) {\n    return aArgs[aName];\n  } else if (arguments.length === 3) {\n    return aDefaultValue;\n  } else {\n    throw new Error('\"' + aName + '\" is a required argument.');\n  }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n  var match = aUrl.match(urlRegexp);\n  if (!match) {\n    return null;\n  }\n  return {\n    scheme: match[1],\n    auth: match[2],\n    host: match[3],\n    port: match[4],\n    path: match[5]\n  };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n  var url = '';\n  if (aParsedUrl.scheme) {\n    url += aParsedUrl.scheme + ':';\n  }\n  url += '//';\n  if (aParsedUrl.auth) {\n    url += aParsedUrl.auth + '@';\n  }\n  if (aParsedUrl.host) {\n    url += aParsedUrl.host;\n  }\n  if (aParsedUrl.port) {\n    url += \":\" + aParsedUrl.port\n  }\n  if (aParsedUrl.path) {\n    url += aParsedUrl.path;\n  }\n  return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n  var path = aPath;\n  var url = urlParse(aPath);\n  if (url) {\n    if (!url.path) {\n      return aPath;\n    }\n    path = url.path;\n  }\n  var isAbsolute = exports.isAbsolute(path);\n\n  var parts = path.split(/\\/+/);\n  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n    part = parts[i];\n    if (part === '.') {\n      parts.splice(i, 1);\n    } else if (part === '..') {\n      up++;\n    } else if (up > 0) {\n      if (part === '') {\n        // The first part is blank if the path is absolute. Trying to go\n        // above the root is a no-op. Therefore we can remove all '..' parts\n        // directly after the root.\n        parts.splice(i + 1, up);\n        up = 0;\n      } else {\n        parts.splice(i, 2);\n        up--;\n      }\n    }\n  }\n  path = parts.join('/');\n\n  if (path === '') {\n    path = isAbsolute ? '/' : '.';\n  }\n\n  if (url) {\n    url.path = path;\n    return urlGenerate(url);\n  }\n  return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n *   first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n *   is updated with the result and aRoot is returned. Otherwise the result\n *   is returned.\n *   - If aPath is absolute, the result is aPath.\n *   - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n  if (aPath === \"\") {\n    aPath = \".\";\n  }\n  var aPathUrl = urlParse(aPath);\n  var aRootUrl = urlParse(aRoot);\n  if (aRootUrl) {\n    aRoot = aRootUrl.path || '/';\n  }\n\n  // `join(foo, '//www.example.org')`\n  if (aPathUrl && !aPathUrl.scheme) {\n    if (aRootUrl) {\n      aPathUrl.scheme = aRootUrl.scheme;\n    }\n    return urlGenerate(aPathUrl);\n  }\n\n  if (aPathUrl || aPath.match(dataUrlRegexp)) {\n    return aPath;\n  }\n\n  // `join('http://', 'www.example.com')`\n  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n    aRootUrl.host = aPath;\n    return urlGenerate(aRootUrl);\n  }\n\n  var joined = aPath.charAt(0) === '/'\n    ? aPath\n    : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n  if (aRootUrl) {\n    aRootUrl.path = joined;\n    return urlGenerate(aRootUrl);\n  }\n  return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n\n  aRoot = aRoot.replace(/\\/$/, '');\n\n  // It is possible for the path to be above the root. In this case, simply\n  // checking whether the root is a prefix of the path won't work. Instead, we\n  // need to remove components from the root one by one, until either we find\n  // a prefix that fits, or we run out of components to remove.\n  var level = 0;\n  while (aPath.indexOf(aRoot + '/') !== 0) {\n    var index = aRoot.lastIndexOf(\"/\");\n    if (index < 0) {\n      return aPath;\n    }\n\n    // If the only part of the root that is left is the scheme (i.e. http://,\n    // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n    // have exhausted all components, so the path is not relative to the root.\n    aRoot = aRoot.slice(0, index);\n    if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n      return aPath;\n    }\n\n    ++level;\n  }\n\n  // Make sure we add a \"../\" for each component we removed from the root.\n  return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n  var obj = Object.create(null);\n  return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n  return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return '$' + aStr;\n  }\n\n  return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return aStr.slice(1);\n  }\n\n  return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n  if (!s) {\n    return false;\n  }\n\n  var length = s.length;\n\n  if (length < 9 /* \"__proto__\".length */) {\n    return false;\n  }\n\n  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 2) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n      s.charCodeAt(length - 8) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 9) !== 95  /* '_' */) {\n    return false;\n  }\n\n  for (var i = length - 10; i >= 0; i--) {\n    if (s.charCodeAt(i) !== 36 /* '$' */) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n  if (aStr1 === aStr2) {\n    return 0;\n  }\n\n  if (aStr1 === null) {\n    return 1; // aStr2 !== null\n  }\n\n  if (aStr2 === null) {\n    return -1; // aStr1 !== null\n  }\n\n  if (aStr1 > aStr2) {\n    return 1;\n  }\n\n  return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n  return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n  sourceURL = sourceURL || '';\n\n  if (sourceRoot) {\n    // This follows what Chrome does.\n    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n      sourceRoot += '/';\n    }\n    // The spec says:\n    //   Line 4: An optional source root, useful for relocating source\n    //   files on a server or removing repeated values in the\n    //   “sources” entry.  This value is prepended to the individual\n    //   entries in the “source” field.\n    sourceURL = sourceRoot + sourceURL;\n  }\n\n  // Historically, SourceMapConsumer did not take the sourceMapURL as\n  // a parameter.  This mode is still somewhat supported, which is why\n  // this code block is conditional.  However, it's preferable to pass\n  // the source map URL to SourceMapConsumer, so that this function\n  // can implement the source URL resolution algorithm as outlined in\n  // the spec.  This block is basically the equivalent of:\n  //    new URL(sourceURL, sourceMapURL).toString()\n  // ... except it avoids using URL, which wasn't available in the\n  // older releases of node still supported by this library.\n  //\n  // The spec says:\n  //   If the sources are not absolute URLs after prepending of the\n  //   “sourceRoot”, the sources are resolved relative to the\n  //   SourceMap (like resolving script src in a html document).\n  if (sourceMapURL) {\n    var parsed = urlParse(sourceMapURL);\n    if (!parsed) {\n      throw new Error(\"sourceMapURL could not be parsed\");\n    }\n    if (parsed.path) {\n      // Strip the last path component, but keep the \"/\".\n      var index = parsed.path.lastIndexOf('/');\n      if (index >= 0) {\n        parsed.path = parsed.path.substring(0, index + 1);\n      }\n    }\n    sourceURL = join(urlGenerate(parsed), sourceURL);\n  }\n\n  return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n    trimRight = /\\s+$/,\n    tinyCounter = 0,\n    mathRound = Math.round,\n    mathMin = Math.min,\n    mathMax = Math.max,\n    mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n    color = (color) ? color : '';\n    opts = opts || { };\n\n    // If input is already a tinycolor, return itself\n    if (color instanceof tinycolor) {\n       return color;\n    }\n    // If we are called as a function, call using new instead\n    if (!(this instanceof tinycolor)) {\n        return new tinycolor(color, opts);\n    }\n\n    var rgb = inputToRGB(color);\n    this._originalInput = color,\n    this._r = rgb.r,\n    this._g = rgb.g,\n    this._b = rgb.b,\n    this._a = rgb.a,\n    this._roundA = mathRound(100*this._a) / 100,\n    this._format = opts.format || rgb.format;\n    this._gradientType = opts.gradientType;\n\n    // Don't let the range of [0,255] come back in [0,1].\n    // Potentially lose a little bit of precision here, but will fix issues where\n    // .5 gets interpreted as half of the total, instead of half of 1\n    // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n    if (this._r < 1) { this._r = mathRound(this._r); }\n    if (this._g < 1) { this._g = mathRound(this._g); }\n    if (this._b < 1) { this._b = mathRound(this._b); }\n\n    this._ok = rgb.ok;\n    this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n    isDark: function() {\n        return this.getBrightness() < 128;\n    },\n    isLight: function() {\n        return !this.isDark();\n    },\n    isValid: function() {\n        return this._ok;\n    },\n    getOriginalInput: function() {\n      return this._originalInput;\n    },\n    getFormat: function() {\n        return this._format;\n    },\n    getAlpha: function() {\n        return this._a;\n    },\n    getBrightness: function() {\n        //http://www.w3.org/TR/AERT#color-contrast\n        var rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    },\n    getLuminance: function() {\n        //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        var rgb = this.toRgb();\n        var RsRGB, GsRGB, BsRGB, R, G, B;\n        RsRGB = rgb.r/255;\n        GsRGB = rgb.g/255;\n        BsRGB = rgb.b/255;\n\n        if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n        if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n        if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n        return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n    },\n    setAlpha: function(value) {\n        this._a = boundAlpha(value);\n        this._roundA = mathRound(100*this._a) / 100;\n        return this;\n    },\n    toHsv: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n    },\n    toHsvString: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n        return (this._a == 1) ?\n          \"hsv(\"  + h + \", \" + s + \"%, \" + v + \"%)\" :\n          \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n    },\n    toHsl: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n    },\n    toHslString: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n        return (this._a == 1) ?\n          \"hsl(\"  + h + \", \" + s + \"%, \" + l + \"%)\" :\n          \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n    },\n    toHex: function(allow3Char) {\n        return rgbToHex(this._r, this._g, this._b, allow3Char);\n    },\n    toHexString: function(allow3Char) {\n        return '#' + this.toHex(allow3Char);\n    },\n    toHex8: function(allow4Char) {\n        return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n    },\n    toHex8String: function(allow4Char) {\n        return '#' + this.toHex8(allow4Char);\n    },\n    toRgb: function() {\n        return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n    },\n    toRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n          \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n    },\n    toPercentageRgb: function() {\n        return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n    },\n    toPercentageRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n          \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n    },\n    toName: function() {\n        if (this._a === 0) {\n            return \"transparent\";\n        }\n\n        if (this._a < 1) {\n            return false;\n        }\n\n        return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n    },\n    toFilter: function(secondColor) {\n        var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n        var secondHex8String = hex8String;\n        var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n        if (secondColor) {\n            var s = tinycolor(secondColor);\n            secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n        }\n\n        return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n    },\n    toString: function(format) {\n        var formatSet = !!format;\n        format = format || this._format;\n\n        var formattedString = false;\n        var hasAlpha = this._a < 1 && this._a >= 0;\n        var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === \"name\" && this._a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === \"rgb\") {\n            formattedString = this.toRgbString();\n        }\n        if (format === \"prgb\") {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === \"hex\" || format === \"hex6\") {\n            formattedString = this.toHexString();\n        }\n        if (format === \"hex3\") {\n            formattedString = this.toHexString(true);\n        }\n        if (format === \"hex4\") {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === \"hex8\") {\n            formattedString = this.toHex8String();\n        }\n        if (format === \"name\") {\n            formattedString = this.toName();\n        }\n        if (format === \"hsl\") {\n            formattedString = this.toHslString();\n        }\n        if (format === \"hsv\") {\n            formattedString = this.toHsvString();\n        }\n\n        return formattedString || this.toHexString();\n    },\n    clone: function() {\n        return tinycolor(this.toString());\n    },\n\n    _applyModification: function(fn, args) {\n        var color = fn.apply(null, [this].concat([].slice.call(args)));\n        this._r = color._r;\n        this._g = color._g;\n        this._b = color._b;\n        this.setAlpha(color._a);\n        return this;\n    },\n    lighten: function() {\n        return this._applyModification(lighten, arguments);\n    },\n    brighten: function() {\n        return this._applyModification(brighten, arguments);\n    },\n    darken: function() {\n        return this._applyModification(darken, arguments);\n    },\n    desaturate: function() {\n        return this._applyModification(desaturate, arguments);\n    },\n    saturate: function() {\n        return this._applyModification(saturate, arguments);\n    },\n    greyscale: function() {\n        return this._applyModification(greyscale, arguments);\n    },\n    spin: function() {\n        return this._applyModification(spin, arguments);\n    },\n\n    _applyCombination: function(fn, args) {\n        return fn.apply(null, [this].concat([].slice.call(args)));\n    },\n    analogous: function() {\n        return this._applyCombination(analogous, arguments);\n    },\n    complement: function() {\n        return this._applyCombination(complement, arguments);\n    },\n    monochromatic: function() {\n        return this._applyCombination(monochromatic, arguments);\n    },\n    splitcomplement: function() {\n        return this._applyCombination(splitcomplement, arguments);\n    },\n    triad: function() {\n        return this._applyCombination(triad, arguments);\n    },\n    tetrad: function() {\n        return this._applyCombination(tetrad, arguments);\n    }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n    if (typeof color == \"object\") {\n        var newColor = {};\n        for (var i in color) {\n            if (color.hasOwnProperty(i)) {\n                if (i === \"a\") {\n                    newColor[i] = color[i];\n                }\n                else {\n                    newColor[i] = convertToPercentage(color[i]);\n                }\n            }\n        }\n        color = newColor;\n    }\n\n    return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n\n    if (typeof color == \"string\") {\n        color = stringInputToObject(color);\n    }\n\n    if (typeof color == \"object\") {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = \"hsv\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = \"hsl\";\n        }\n\n        if (color.hasOwnProperty(\"a\")) {\n            a = color.a;\n        }\n    }\n\n    a = boundAlpha(a);\n\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: mathMin(255, mathMax(rgb.r, 0)),\n        g: mathMin(255, mathMax(rgb.g, 0)),\n        b: mathMin(255, mathMax(rgb.b, 0)),\n        a: a\n    };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255\n    };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, l = (max + min) / 2;\n\n    if(max == min) {\n        h = s = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n\n        h /= 6;\n    }\n\n    return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n    var r, g, b;\n\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n\n    function hue2rgb(p, q, t) {\n        if(t < 0) t += 1;\n        if(t > 1) t -= 1;\n        if(t < 1/6) return p + (q - p) * 6 * t;\n        if(t < 1/2) return q;\n        if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n        return p;\n    }\n\n    if(s === 0) {\n        r = g = b = l; // achromatic\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1/3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1/3);\n    }\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, v = max;\n\n    var d = max - min;\n    s = max === 0 ? 0 : d / max;\n\n    if(max == min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n\n    var i = Math.floor(h),\n        f = h - i,\n        p = v * (1 - s),\n        q = v * (1 - f * s),\n        t = v * (1 - (1 - f) * s),\n        mod = i % 6,\n        r = [v, q, p, p, t, v][mod],\n        g = [t, v, v, q, p, p][mod],\n        b = [p, p, t, v, v, q][mod];\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    // Return a 3 character hex if possible\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16)),\n        pad2(convertDecimalToHex(a))\n    ];\n\n    // Return a 4 character hex if possible\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n    var hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n    if (!color1 || !color2) { return false; }\n    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n    return tinycolor.fromRatio({\n        r: mathRandom(),\n        g: mathRandom(),\n        b: mathRandom()\n    });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s -= amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s += amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n    return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l += amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var rgb = tinycolor(color).toRgb();\n    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n    return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l -= amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n    var hsl = tinycolor(color).toHsl();\n    var hue = (hsl.h + amount) % 360;\n    hsl.h = hue < 0 ? 360 + hue : hue;\n    return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n    var hsl = tinycolor(color).toHsl();\n    hsl.h = (hsl.h + 180) % 360;\n    return tinycolor(hsl);\n}\n\nfunction triad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction tetrad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction splitcomplement(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n        tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n    ];\n}\n\nfunction analogous(color, results, slices) {\n    results = results || 6;\n    slices = slices || 30;\n\n    var hsl = tinycolor(color).toHsl();\n    var part = 360 / slices;\n    var ret = [tinycolor(color)];\n\n    for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n        hsl.h = (hsl.h + part) % 360;\n        ret.push(tinycolor(hsl));\n    }\n    return ret;\n}\n\nfunction monochromatic(color, results) {\n    results = results || 6;\n    var hsv = tinycolor(color).toHsv();\n    var h = hsv.h, s = hsv.s, v = hsv.v;\n    var ret = [];\n    var modification = 1 / results;\n\n    while (results--) {\n        ret.push(tinycolor({ h: h, s: s, v: v}));\n        v = (v + modification) % 1;\n    }\n\n    return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n    amount = (amount === 0) ? 0 : (amount || 50);\n\n    var rgb1 = tinycolor(color1).toRgb();\n    var rgb2 = tinycolor(color2).toRgb();\n\n    var p = amount / 100;\n\n    var rgba = {\n        r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n        g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n        b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n        a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n    };\n\n    return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n    var c1 = tinycolor(color1);\n    var c2 = tinycolor(color2);\n    return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n    var readability = tinycolor.readability(color1, color2);\n    var wcag2Parms, out;\n\n    out = false;\n\n    wcag2Parms = validateWCAG2Parms(wcag2);\n    switch (wcag2Parms.level + wcag2Parms.size) {\n        case \"AAsmall\":\n        case \"AAAlarge\":\n            out = readability >= 4.5;\n            break;\n        case \"AAlarge\":\n            out = readability >= 3;\n            break;\n        case \"AAAsmall\":\n            out = readability >= 7;\n            break;\n    }\n    return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n    var bestColor = null;\n    var bestScore = 0;\n    var readability;\n    var includeFallbackColors, level, size ;\n    args = args || {};\n    includeFallbackColors = args.includeFallbackColors ;\n    level = args.level;\n    size = args.size;\n\n    for (var i= 0; i < colorList.length ; i++) {\n        readability = tinycolor.readability(baseColor, colorList[i]);\n        if (readability > bestScore) {\n            bestScore = readability;\n            bestColor = tinycolor(colorList[i]);\n        }\n    }\n\n    if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n        return bestColor;\n    }\n    else {\n        args.includeFallbackColors=false;\n        return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n    }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"0ff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"00f\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    burntsienna: \"ea7e5d\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"0ff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkgrey: \"a9a9a9\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkslategrey: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dimgrey: \"696969\",\n    dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"f0f\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    grey: \"808080\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgray: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightgrey: \"d3d3d3\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslategray: \"789\",\n    lightslategrey: \"789\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"0f0\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"f0f\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370db\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"db7093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    rebeccapurple: \"663399\",\n    red: \"f00\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    slategrey: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    wheat: \"f5deb3\",\n    white: \"fff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ff0\",\n    yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n    var flipped = { };\n    for (var i in o) {\n        if (o.hasOwnProperty(i)) {\n            flipped[o[i]] = i;\n        }\n    }\n    return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n    a = parseFloat(a);\n\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n\n    return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n    if (isOnePointZero(n)) { n = \"100%\"; }\n\n    var processPercent = isPercentage(n);\n    n = mathMin(max, mathMax(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n        n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if ((Math.abs(n - max) < 0.000001)) {\n        return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n    return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n    return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n    if (n <= 1) {\n        n = (n * 100) + \"%\";\n    }\n\n    return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n    return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n    // <http://www.w3.org/TR/css3-values/#integers>\n    var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n    return {\n        CSS_UNIT: new RegExp(CSS_UNIT),\n        rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n        rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n        hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n        hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n        hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n        hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n    return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n    color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color == 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n    }\n\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match;\n    if ((match = matchers.rgb.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    if ((match = matchers.rgba.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsl.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    if ((match = matchers.hsla.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsv.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    if ((match = matchers.hsva.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    if ((match = matchers.hex8.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex6.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n    if ((match = matchers.hex4.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            a: convertHexToDecimal(match[4] + '' + match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex3.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n\n    return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n    // return valid WCAG2 parms for isReadable.\n    // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n    var level, size;\n    parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n    level = (parms.level || \"AA\").toUpperCase();\n    size = (parms.size || \"small\").toLowerCase();\n    if (level !== \"AA\" && level !== \"AAA\") {\n        level = \"AA\";\n    }\n    if (size !== \"small\" && size !== \"large\") {\n        size = \"small\";\n    }\n    return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n    module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n    define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n    window.tinycolor = tinycolor;\n}\n\n})(Math);\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","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 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 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","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var global = require('../internals/global');\nvar 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 = global.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 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","'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","var global = require('../internals/global');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar TypeError = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice-simple');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = arraySlice(bytes, start, start + count);\n  return isLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = conversion(+value);\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, ArrayBufferPrototype);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      bytes: fill(Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) this.byteLength = byteLength;\n  };\n\n  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, DataViewPrototype);\n    anInstance(buffer, ArrayBufferPrototype);\n    var bufferLength = getInternalState(buffer).byteLength;\n    var offset = toIntegerOrInfinity(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  DataViewPrototype = $DataView[PROTOTYPE];\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength');\n    addGetter($DataView, 'buffer');\n    addGetter($DataView, 'byteLength');\n    addGetter($DataView, 'byteOffset');\n  }\n\n  defineBuiltIns(DataViewPrototype, {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n    }\n  });\n} else {\n  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n  })) {\n  /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, ArrayBufferPrototype);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n\n    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf(DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\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 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 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","// eslint-disable-next-line es-x/no-math-expm1 -- safe\nvar $expm1 = Math.expm1;\nvar exp = Math.exp;\n\n// `Math.expm1` method implementation\n// https://tc39.es/ecma262/#sec-math.expm1\nmodule.exports = (!$expm1\n  // Old FF bug\n  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n  // Tor Browser bug\n  || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n  return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1;\n} : $expm1;\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 IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\n// Forced replacement object prototype accessors methods\nmodule.exports = IS_PURE || !fails(function () {\n  // This feature detection crashes old WebKit\n  // https://github.com/zloirock/core-js/issues/232\n  if (WEBKIT && WEBKIT < 535) return;\n  var key = Math.random();\n  // In FF throws only define methods\n  // eslint-disable-next-line no-undef, no-useless-call, es-x/no-legacy-object-prototype-accessor-methods -- required for testing\n  __defineSetter__.call(null, key, function () { /* empty */ });\n  delete global[key];\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","'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","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// 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","var global = require('../internals/global');\nvar 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 = global.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","var ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n  return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array<any> | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n  for (var i = 0, length = array.length; i < length; i++) {\n    if (callback.apply(callback, [array[i], i, array])) return array[i];\n  }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean %checks*/\n{\n  // $FlowIgnore[method-unbinding]\n  return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean %checks*/\n{\n  return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n  return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n)\n/*: ?Error*/\n{\n  if (props[propName]) {\n    return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n  }\n}","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Added support for injecting custom window object\n **/\nexport default function createDetectElementResize(nonce, hostWindow) {\n  // Check `document` and `window` in case of server-side rendering\n  var _window;\n\n  if (typeof hostWindow !== 'undefined') {\n    _window = hostWindow;\n  } else if (typeof window !== 'undefined') {\n    _window = window;\n  } else if (typeof self !== 'undefined') {\n    _window = self;\n  } else {\n    _window = global;\n  }\n\n  var attachEvent = typeof _window.document !== 'undefined' && _window.document.attachEvent;\n\n  if (!attachEvent) {\n    var requestFrame = function () {\n      var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n        return _window.setTimeout(fn, 20);\n      };\n\n      return function (fn) {\n        return raf(fn);\n      };\n    }();\n\n    var cancelFrame = function () {\n      var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n      return function (id) {\n        return cancel(id);\n      };\n    }();\n\n    var resetTriggers = function resetTriggers(element) {\n      var triggers = element.__resizeTriggers__,\n          expand = triggers.firstElementChild,\n          contract = triggers.lastElementChild,\n          expandChild = expand.firstElementChild;\n      contract.scrollLeft = contract.scrollWidth;\n      contract.scrollTop = contract.scrollHeight;\n      expandChild.style.width = expand.offsetWidth + 1 + 'px';\n      expandChild.style.height = expand.offsetHeight + 1 + 'px';\n      expand.scrollLeft = expand.scrollWidth;\n      expand.scrollTop = expand.scrollHeight;\n    };\n\n    var checkTriggers = function checkTriggers(element) {\n      return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n    };\n\n    var scrollListener = function scrollListener(e) {\n      // Don't measure (which forces) reflow for scrolls that happen inside of children!\n      if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n        return;\n      }\n\n      var element = this;\n      resetTriggers(this);\n\n      if (this.__resizeRAF__) {\n        cancelFrame(this.__resizeRAF__);\n      }\n\n      this.__resizeRAF__ = requestFrame(function () {\n        if (checkTriggers(element)) {\n          element.__resizeLast__.width = element.offsetWidth;\n          element.__resizeLast__.height = element.offsetHeight;\n\n          element.__resizeListeners__.forEach(function (fn) {\n            fn.call(element, e);\n          });\n        }\n      });\n    };\n    /* Detect CSS Animations support to detect element display/re-attach */\n\n\n    var animation = false,\n        keyframeprefix = '',\n        animationstartevent = 'animationstart',\n        domPrefixes = 'Webkit Moz O ms'.split(' '),\n        startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n        pfx = '';\n    {\n      var elm = _window.document.createElement('fakeelement');\n\n      if (elm.style.animationName !== undefined) {\n        animation = true;\n      }\n\n      if (animation === false) {\n        for (var i = 0; i < domPrefixes.length; i++) {\n          if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n            pfx = domPrefixes[i];\n            keyframeprefix = '-' + pfx.toLowerCase() + '-';\n            animationstartevent = startEvents[i];\n            animation = true;\n            break;\n          }\n        }\n      }\n    }\n    var animationName = 'resizeanim';\n    var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n    var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n  }\n\n  var createStyles = function createStyles(doc) {\n    if (!doc.getElementById('detectElementResize')) {\n      //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n      var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n          head = doc.head || doc.getElementsByTagName('head')[0],\n          style = doc.createElement('style');\n      style.id = 'detectElementResize';\n      style.type = 'text/css';\n\n      if (nonce != null) {\n        style.setAttribute('nonce', nonce);\n      }\n\n      if (style.styleSheet) {\n        style.styleSheet.cssText = css;\n      } else {\n        style.appendChild(doc.createTextNode(css));\n      }\n\n      head.appendChild(style);\n    }\n  };\n\n  var addResizeListener = function addResizeListener(element, fn) {\n    if (attachEvent) {\n      element.attachEvent('onresize', fn);\n    } else {\n      if (!element.__resizeTriggers__) {\n        var doc = element.ownerDocument;\n\n        var elementStyle = _window.getComputedStyle(element);\n\n        if (elementStyle && elementStyle.position == 'static') {\n          element.style.position = 'relative';\n        }\n\n        createStyles(doc);\n        element.__resizeLast__ = {};\n        element.__resizeListeners__ = [];\n        (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n        var resizeTriggersHtml = '<div class=\"expand-trigger\"><div></div></div>' + '<div class=\"contract-trigger\"></div>';\n\n        if (window.trustedTypes) {\n          var staticPolicy = trustedTypes.createPolicy('react-virtualized-auto-sizer', {\n            createHTML: function createHTML() {\n              return resizeTriggersHtml;\n            }\n          });\n          element.__resizeTriggers__.innerHTML = staticPolicy.createHTML('');\n        } else {\n          element.__resizeTriggers__.innerHTML = resizeTriggersHtml;\n        }\n\n        element.appendChild(element.__resizeTriggers__);\n        resetTriggers(element);\n        element.addEventListener('scroll', scrollListener, true);\n        /* Listen for a css animation to detect element display/re-attach */\n\n        if (animationstartevent) {\n          element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n            if (e.animationName == animationName) {\n              resetTriggers(element);\n            }\n          };\n\n          element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n        }\n      }\n\n      element.__resizeListeners__.push(fn);\n    }\n  };\n\n  var removeResizeListener = function removeResizeListener(element, fn) {\n    if (attachEvent) {\n      element.detachEvent('onresize', fn);\n    } else {\n      element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n\n      if (!element.__resizeListeners__.length) {\n        element.removeEventListener('scroll', scrollListener, true);\n\n        if (element.__resizeTriggers__.__animationListener__) {\n          element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n\n          element.__resizeTriggers__.__animationListener__ = null;\n        }\n\n        try {\n          element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n        } catch (e) {// Preact compat; see developit/preact-compat/issues/228\n        }\n      }\n    }\n  };\n\n  return {\n    addResizeListener: addResizeListener,\n    removeResizeListener: removeResizeListener\n  };\n}","\"use strict\";\n/*\nReact-Quill\nhttps://github.com/zenoamaro/react-quill\n*/\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar react_1 = __importDefault(require(\"react\"));\nvar react_dom_1 = __importDefault(require(\"react-dom\"));\nvar isEqual_1 = __importDefault(require(\"lodash/isEqual\"));\nvar quill_1 = __importDefault(require(\"quill\"));\nvar ReactQuill = /** @class */ (function (_super) {\n    __extends(ReactQuill, _super);\n    function ReactQuill(props) {\n        var _this = _super.call(this, props) || this;\n        /*\n        Changing one of these props should cause a full re-render and a\n        re-instantiation of the Quill editor.\n        */\n        _this.dirtyProps = [\n            'modules',\n            'formats',\n            'bounds',\n            'theme',\n            'children',\n        ];\n        /*\n        Changing one of these props should cause a regular update. These are mostly\n        props that act on the container, rather than the quillized editing area.\n        */\n        _this.cleanProps = [\n            'id',\n            'className',\n            'style',\n            'placeholder',\n            'tabIndex',\n            'onChange',\n            'onChangeSelection',\n            'onFocus',\n            'onBlur',\n            'onKeyPress',\n            'onKeyDown',\n            'onKeyUp',\n        ];\n        _this.state = {\n            generation: 0,\n        };\n        /*\n        Tracks the internal selection of the Quill editor\n        */\n        _this.selection = null;\n        _this.onEditorChange = function (eventName, rangeOrDelta, oldRangeOrDelta, source) {\n            var _a, _b, _c, _d;\n            if (eventName === 'text-change') {\n                (_b = (_a = _this).onEditorChangeText) === null || _b === void 0 ? void 0 : _b.call(_a, _this.editor.root.innerHTML, rangeOrDelta, source, _this.unprivilegedEditor);\n            }\n            else if (eventName === 'selection-change') {\n                (_d = (_c = _this).onEditorChangeSelection) === null || _d === void 0 ? void 0 : _d.call(_c, rangeOrDelta, source, _this.unprivilegedEditor);\n            }\n        };\n        var value = _this.isControlled() ? props.value : props.defaultValue;\n        _this.value = (value !== null && value !== void 0 ? value : '');\n        return _this;\n    }\n    ReactQuill.prototype.validateProps = function (props) {\n        var _a;\n        if (react_1.default.Children.count(props.children) > 1)\n            throw new Error('The Quill editing area can only be composed of a single React element.');\n        if (react_1.default.Children.count(props.children)) {\n            var child = react_1.default.Children.only(props.children);\n            if (((_a = child) === null || _a === void 0 ? void 0 : _a.type) === 'textarea')\n                throw new Error('Quill does not support editing on a <textarea>. Use a <div> instead.');\n        }\n        if (this.lastDeltaChangeSet &&\n            props.value === this.lastDeltaChangeSet)\n            throw new Error('You are passing the `delta` object from the `onChange` event back ' +\n                'as `value`. You most probably want `editor.getContents()` instead. ' +\n                'See: https://github.com/zenoamaro/react-quill#using-deltas');\n    };\n    ReactQuill.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n        var _this = this;\n        var _a;\n        this.validateProps(nextProps);\n        // If the editor hasn't been instantiated yet, or the component has been\n        // regenerated, we already know we should update.\n        if (!this.editor || this.state.generation !== nextState.generation) {\n            return true;\n        }\n        // Handle value changes in-place\n        if ('value' in nextProps) {\n            var prevContents = this.getEditorContents();\n            var nextContents = (_a = nextProps.value, (_a !== null && _a !== void 0 ? _a : ''));\n            // NOTE: Seeing that Quill is missing a way to prevent edits, we have to\n            //       settle for a hybrid between controlled and uncontrolled mode. We\n            //       can't prevent the change, but we'll still override content\n            //       whenever `value` differs from current state.\n            // NOTE: Comparing an HTML string and a Quill Delta will always trigger a\n            //       change, regardless of whether they represent the same document.\n            if (!this.isEqualValue(nextContents, prevContents)) {\n                this.setEditorContents(this.editor, nextContents);\n            }\n        }\n        // Handle read-only changes in-place\n        if (nextProps.readOnly !== this.props.readOnly) {\n            this.setEditorReadOnly(this.editor, nextProps.readOnly);\n        }\n        // Clean and Dirty props require a render\n        return __spreadArrays(this.cleanProps, this.dirtyProps).some(function (prop) {\n            return !isEqual_1.default(nextProps[prop], _this.props[prop]);\n        });\n    };\n    ReactQuill.prototype.shouldComponentRegenerate = function (nextProps) {\n        var _this = this;\n        // Whenever a `dirtyProp` changes, the editor needs reinstantiation.\n        return this.dirtyProps.some(function (prop) {\n            return !isEqual_1.default(nextProps[prop], _this.props[prop]);\n        });\n    };\n    ReactQuill.prototype.componentDidMount = function () {\n        this.instantiateEditor();\n        this.setEditorContents(this.editor, this.getEditorContents());\n    };\n    ReactQuill.prototype.componentWillUnmount = function () {\n        this.destroyEditor();\n    };\n    ReactQuill.prototype.componentDidUpdate = function (prevProps, prevState) {\n        var _this = this;\n        // If we're changing one of the `dirtyProps`, the entire Quill Editor needs\n        // to be re-instantiated. Regenerating the editor will cause the whole tree,\n        // including the container, to be cleaned up and re-rendered from scratch.\n        // Store the contents so they can be restored later.\n        if (this.editor && this.shouldComponentRegenerate(prevProps)) {\n            var delta = this.editor.getContents();\n            var selection = this.editor.getSelection();\n            this.regenerationSnapshot = { delta: delta, selection: selection };\n            this.setState({ generation: this.state.generation + 1 });\n            this.destroyEditor();\n        }\n        // The component has been regenerated, so it must be re-instantiated, and\n        // its content must be restored to the previous values from the snapshot.\n        if (this.state.generation !== prevState.generation) {\n            var _a = this.regenerationSnapshot, delta = _a.delta, selection_1 = _a.selection;\n            delete this.regenerationSnapshot;\n            this.instantiateEditor();\n            var editor_1 = this.editor;\n            editor_1.setContents(delta);\n            postpone(function () { return _this.setEditorSelection(editor_1, selection_1); });\n        }\n    };\n    ReactQuill.prototype.instantiateEditor = function () {\n        if (this.editor)\n            return;\n        this.editor = this.createEditor(this.getEditingArea(), this.getEditorConfig());\n    };\n    ReactQuill.prototype.destroyEditor = function () {\n        if (!this.editor)\n            return;\n        this.unhookEditor(this.editor);\n        delete this.editor;\n    };\n    /*\n    We consider the component to be controlled if `value` is being sent in props.\n    */\n    ReactQuill.prototype.isControlled = function () {\n        return 'value' in this.props;\n    };\n    ReactQuill.prototype.getEditorConfig = function () {\n        return {\n            bounds: this.props.bounds,\n            formats: this.props.formats,\n            modules: this.props.modules,\n            placeholder: this.props.placeholder,\n            readOnly: this.props.readOnly,\n            scrollingContainer: this.props.scrollingContainer,\n            tabIndex: this.props.tabIndex,\n            theme: this.props.theme,\n        };\n    };\n    ReactQuill.prototype.getEditor = function () {\n        if (!this.editor)\n            throw new Error('Accessing non-instantiated editor');\n        return this.editor;\n    };\n    /**\n    Creates an editor on the given element. The editor will be passed the\n    configuration, have its events bound,\n    */\n    ReactQuill.prototype.createEditor = function (element, config) {\n        var editor = new quill_1.default(element, config);\n        if (config.tabIndex != null) {\n            this.setEditorTabIndex(editor, config.tabIndex);\n        }\n        this.hookEditor(editor);\n        return editor;\n    };\n    ReactQuill.prototype.hookEditor = function (editor) {\n        // Expose the editor on change events via a weaker, unprivileged proxy\n        // object that does not allow accidentally modifying editor state.\n        this.unprivilegedEditor = this.makeUnprivilegedEditor(editor);\n        // Using `editor-change` allows picking up silent updates, like selection\n        // changes on typing.\n        editor.on('editor-change', this.onEditorChange);\n    };\n    ReactQuill.prototype.unhookEditor = function (editor) {\n        editor.off('editor-change', this.onEditorChange);\n    };\n    ReactQuill.prototype.getEditorContents = function () {\n        return this.value;\n    };\n    ReactQuill.prototype.getEditorSelection = function () {\n        return this.selection;\n    };\n    /*\n    True if the value is a Delta instance or a Delta look-alike.\n    */\n    ReactQuill.prototype.isDelta = function (value) {\n        return value && value.ops;\n    };\n    /*\n    Special comparison function that knows how to compare Deltas.\n    */\n    ReactQuill.prototype.isEqualValue = function (value, nextValue) {\n        if (this.isDelta(value) && this.isDelta(nextValue)) {\n            return isEqual_1.default(value.ops, nextValue.ops);\n        }\n        else {\n            return isEqual_1.default(value, nextValue);\n        }\n    };\n    /*\n    Replace the contents of the editor, but keep the previous selection hanging\n    around so that the cursor won't move.\n    */\n    ReactQuill.prototype.setEditorContents = function (editor, value) {\n        var _this = this;\n        this.value = value;\n        var sel = this.getEditorSelection();\n        if (typeof value === 'string') {\n            editor.setContents(editor.clipboard.convert(value));\n        }\n        else {\n            editor.setContents(value);\n        }\n        postpone(function () { return _this.setEditorSelection(editor, sel); });\n    };\n    ReactQuill.prototype.setEditorSelection = function (editor, range) {\n        this.selection = range;\n        if (range) {\n            // Validate bounds before applying.\n            var length_1 = editor.getLength();\n            range.index = Math.max(0, Math.min(range.index, length_1 - 1));\n            range.length = Math.max(0, Math.min(range.length, (length_1 - 1) - range.index));\n            editor.setSelection(range);\n        }\n    };\n    ReactQuill.prototype.setEditorTabIndex = function (editor, tabIndex) {\n        var _a, _b;\n        if ((_b = (_a = editor) === null || _a === void 0 ? void 0 : _a.scroll) === null || _b === void 0 ? void 0 : _b.domNode) {\n            editor.scroll.domNode.tabIndex = tabIndex;\n        }\n    };\n    ReactQuill.prototype.setEditorReadOnly = function (editor, value) {\n        if (value) {\n            editor.disable();\n        }\n        else {\n            editor.enable();\n        }\n    };\n    /*\n    Returns a weaker, unprivileged proxy object that only exposes read-only\n    accessors found on the editor instance, without any state-modifying methods.\n    */\n    ReactQuill.prototype.makeUnprivilegedEditor = function (editor) {\n        var e = editor;\n        return {\n            getHTML: function () { return e.root.innerHTML; },\n            getLength: e.getLength.bind(e),\n            getText: e.getText.bind(e),\n            getContents: e.getContents.bind(e),\n            getSelection: e.getSelection.bind(e),\n            getBounds: e.getBounds.bind(e),\n        };\n    };\n    ReactQuill.prototype.getEditingArea = function () {\n        if (!this.editingArea) {\n            throw new Error('Instantiating on missing editing area');\n        }\n        var element = react_dom_1.default.findDOMNode(this.editingArea);\n        if (!element) {\n            throw new Error('Cannot find element for editing area');\n        }\n        if (element.nodeType === 3) {\n            throw new Error('Editing area cannot be a text node');\n        }\n        return element;\n    };\n    /*\n    Renders an editor area, unless it has been provided one to clone.\n    */\n    ReactQuill.prototype.renderEditingArea = function () {\n        var _this = this;\n        var _a = this.props, children = _a.children, preserveWhitespace = _a.preserveWhitespace;\n        var generation = this.state.generation;\n        var properties = {\n            key: generation,\n            ref: function (instance) {\n                _this.editingArea = instance;\n            },\n        };\n        if (react_1.default.Children.count(children)) {\n            return react_1.default.cloneElement(react_1.default.Children.only(children), properties);\n        }\n        return preserveWhitespace ?\n            react_1.default.createElement(\"pre\", __assign({}, properties)) :\n            react_1.default.createElement(\"div\", __assign({}, properties));\n    };\n    ReactQuill.prototype.render = function () {\n        var _a;\n        return (react_1.default.createElement(\"div\", { id: this.props.id, style: this.props.style, key: this.state.generation, className: \"quill \" + (_a = this.props.className, (_a !== null && _a !== void 0 ? _a : '')), onKeyPress: this.props.onKeyPress, onKeyDown: this.props.onKeyDown, onKeyUp: this.props.onKeyUp }, this.renderEditingArea()));\n    };\n    ReactQuill.prototype.onEditorChangeText = function (value, delta, source, editor) {\n        var _a, _b;\n        if (!this.editor)\n            return;\n        // We keep storing the same type of value as what the user gives us,\n        // so that value comparisons will be more stable and predictable.\n        var nextContents = this.isDelta(this.value)\n            ? editor.getContents()\n            : editor.getHTML();\n        if (nextContents !== this.getEditorContents()) {\n            // Taint this `delta` object, so we can recognize whether the user\n            // is trying to send it back as `value`, preventing a likely loop.\n            this.lastDeltaChangeSet = delta;\n            this.value = nextContents;\n            (_b = (_a = this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, value, delta, source, editor);\n        }\n    };\n    ReactQuill.prototype.onEditorChangeSelection = function (nextSelection, source, editor) {\n        var _a, _b, _c, _d, _e, _f;\n        if (!this.editor)\n            return;\n        var currentSelection = this.getEditorSelection();\n        var hasGainedFocus = !currentSelection && nextSelection;\n        var hasLostFocus = currentSelection && !nextSelection;\n        if (isEqual_1.default(nextSelection, currentSelection))\n            return;\n        this.selection = nextSelection;\n        (_b = (_a = this.props).onChangeSelection) === null || _b === void 0 ? void 0 : _b.call(_a, nextSelection, source, editor);\n        if (hasGainedFocus) {\n            (_d = (_c = this.props).onFocus) === null || _d === void 0 ? void 0 : _d.call(_c, nextSelection, source, editor);\n        }\n        else if (hasLostFocus) {\n            (_f = (_e = this.props).onBlur) === null || _f === void 0 ? void 0 : _f.call(_e, currentSelection, source, editor);\n        }\n    };\n    ReactQuill.prototype.focus = function () {\n        if (!this.editor)\n            return;\n        this.editor.focus();\n    };\n    ReactQuill.prototype.blur = function () {\n        if (!this.editor)\n            return;\n        this.selection = null;\n        this.editor.blur();\n    };\n    ReactQuill.displayName = 'React Quill';\n    /*\n    Export Quill to be able to call `register`\n    */\n    ReactQuill.Quill = quill_1.default;\n    ReactQuill.defaultProps = {\n        theme: 'snow',\n        modules: {},\n        readOnly: false,\n    };\n    return ReactQuill;\n}(react_1.default.Component));\n/*\nSmall helper to execute a function in the next micro-tick.\n*/\nfunction postpone(fn) {\n    Promise.resolve().then(fn);\n}\nmodule.exports = ReactQuill;\n//# sourceMappingURL=index.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","// cheap lodash replacements\nexport function memoize(fn) {\n  var result = null;\n\n  var memoized = function memoized() {\n    if (result == null) {\n      result = fn();\n    }\n\n    return result;\n  };\n\n  return memoized;\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n  return items.filter(function (i) {\n    return i !== item;\n  });\n}\nexport function union(itemsA, itemsB) {\n  var set = new Set();\n\n  var insertItem = function insertItem(item) {\n    return set.add(item);\n  };\n\n  itemsA.forEach(insertItem);\n  itemsB.forEach(insertItem);\n  var result = [];\n  set.forEach(function (key) {\n    return result.push(key);\n  });\n  return result;\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { union, without } from './utils/js_utils';\nexport var EnterLeaveCounter = /*#__PURE__*/function () {\n  function EnterLeaveCounter(isNodeInDocument) {\n    _classCallCheck(this, EnterLeaveCounter);\n\n    _defineProperty(this, \"entered\", []);\n\n    _defineProperty(this, \"isNodeInDocument\", void 0);\n\n    this.isNodeInDocument = isNodeInDocument;\n  }\n\n  _createClass(EnterLeaveCounter, [{\n    key: \"enter\",\n    value: function enter(enteringNode) {\n      var _this = this;\n\n      var previousLength = this.entered.length;\n\n      var isNodeEntered = function isNodeEntered(node) {\n        return _this.isNodeInDocument(node) && (!node.contains || node.contains(enteringNode));\n      };\n\n      this.entered = union(this.entered.filter(isNodeEntered), [enteringNode]);\n      return previousLength === 0 && this.entered.length > 0;\n    }\n  }, {\n    key: \"leave\",\n    value: function leave(leavingNode) {\n      var previousLength = this.entered.length;\n      this.entered = without(this.entered.filter(this.isNodeInDocument), leavingNode);\n      return previousLength > 0 && this.entered.length === 0;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.entered = [];\n    }\n  }]);\n\n  return EnterLeaveCounter;\n}();","import { memoize } from './utils/js_utils';\nexport var isFirefox = memoize(function () {\n  return /firefox/i.test(navigator.userAgent);\n});\nexport var isSafari = memoize(function () {\n  return Boolean(window.safari);\n});","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var MonotonicInterpolant = /*#__PURE__*/function () {\n  function MonotonicInterpolant(xs, ys) {\n    _classCallCheck(this, MonotonicInterpolant);\n\n    _defineProperty(this, \"xs\", void 0);\n\n    _defineProperty(this, \"ys\", void 0);\n\n    _defineProperty(this, \"c1s\", void 0);\n\n    _defineProperty(this, \"c2s\", void 0);\n\n    _defineProperty(this, \"c3s\", void 0);\n\n    var length = xs.length; // Rearrange xs and ys so that xs is sorted\n\n    var indexes = [];\n\n    for (var i = 0; i < length; i++) {\n      indexes.push(i);\n    }\n\n    indexes.sort(function (a, b) {\n      return xs[a] < xs[b] ? -1 : 1;\n    }); // Get consecutive differences and slopes\n\n    var dys = [];\n    var dxs = [];\n    var ms = [];\n    var dx;\n    var dy;\n\n    for (var _i = 0; _i < length - 1; _i++) {\n      dx = xs[_i + 1] - xs[_i];\n      dy = ys[_i + 1] - ys[_i];\n      dxs.push(dx);\n      dys.push(dy);\n      ms.push(dy / dx);\n    } // Get degree-1 coefficients\n\n\n    var c1s = [ms[0]];\n\n    for (var _i2 = 0; _i2 < dxs.length - 1; _i2++) {\n      var m2 = ms[_i2];\n      var mNext = ms[_i2 + 1];\n\n      if (m2 * mNext <= 0) {\n        c1s.push(0);\n      } else {\n        dx = dxs[_i2];\n        var dxNext = dxs[_i2 + 1];\n        var common = dx + dxNext;\n        c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n      }\n    }\n\n    c1s.push(ms[ms.length - 1]); // Get degree-2 and degree-3 coefficients\n\n    var c2s = [];\n    var c3s = [];\n    var m;\n\n    for (var _i3 = 0; _i3 < c1s.length - 1; _i3++) {\n      m = ms[_i3];\n      var c1 = c1s[_i3];\n      var invDx = 1 / dxs[_i3];\n\n      var _common = c1 + c1s[_i3 + 1] - m - m;\n\n      c2s.push((m - c1 - _common) * invDx);\n      c3s.push(_common * invDx * invDx);\n    }\n\n    this.xs = xs;\n    this.ys = ys;\n    this.c1s = c1s;\n    this.c2s = c2s;\n    this.c3s = c3s;\n  }\n\n  _createClass(MonotonicInterpolant, [{\n    key: \"interpolate\",\n    value: function interpolate(x) {\n      var xs = this.xs,\n          ys = this.ys,\n          c1s = this.c1s,\n          c2s = this.c2s,\n          c3s = this.c3s; // The rightmost point in the dataset should give an exact result\n\n      var i = xs.length - 1;\n\n      if (x === xs[i]) {\n        return ys[i];\n      } // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\n\n      var low = 0;\n      var high = c3s.length - 1;\n      var mid;\n\n      while (low <= high) {\n        mid = Math.floor(0.5 * (low + high));\n        var xHere = xs[mid];\n\n        if (xHere < x) {\n          low = mid + 1;\n        } else if (xHere > x) {\n          high = mid - 1;\n        } else {\n          return ys[mid];\n        }\n      }\n\n      i = Math.max(0, high); // Interpolate\n\n      var diff = x - xs[i];\n      var diffSq = diff * diff;\n      return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n    }\n  }]);\n\n  return MonotonicInterpolant;\n}();","import { isSafari, isFirefox } from './BrowserDetector';\nimport { MonotonicInterpolant } from './MonotonicInterpolant';\nvar ELEMENT_NODE = 1;\nexport function getNodeClientOffset(node) {\n  var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n\n  if (!el) {\n    return null;\n  }\n\n  var _el$getBoundingClient = el.getBoundingClientRect(),\n      top = _el$getBoundingClient.top,\n      left = _el$getBoundingClient.left;\n\n  return {\n    x: left,\n    y: top\n  };\n}\nexport function getEventClientOffset(e) {\n  return {\n    x: e.clientX,\n    y: e.clientY\n  };\n}\n\nfunction isImageNode(node) {\n  var _document$documentEle;\n\n  return node.nodeName === 'IMG' && (isFirefox() || !((_document$documentEle = document.documentElement) !== null && _document$documentEle !== void 0 && _document$documentEle.contains(node)));\n}\n\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n  var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n  var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight; // Work around @2x coordinate discrepancies in browsers\n\n  if (isSafari() && isImage) {\n    dragPreviewHeight /= window.devicePixelRatio;\n    dragPreviewWidth /= window.devicePixelRatio;\n  }\n\n  return {\n    dragPreviewWidth: dragPreviewWidth,\n    dragPreviewHeight: dragPreviewHeight\n  };\n}\n\nexport function getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n  // The browsers will use the image intrinsic size under different conditions.\n  // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n  var isImage = isImageNode(dragPreview);\n  var dragPreviewNode = isImage ? sourceNode : dragPreview;\n  var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n  var offsetFromDragPreview = {\n    x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n    y: clientOffset.y - dragPreviewNodeOffsetFromClient.y\n  };\n  var sourceWidth = sourceNode.offsetWidth,\n      sourceHeight = sourceNode.offsetHeight;\n  var anchorX = anchorPoint.anchorX,\n      anchorY = anchorPoint.anchorY;\n\n  var _getDragPreviewSize = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight),\n      dragPreviewWidth = _getDragPreviewSize.dragPreviewWidth,\n      dragPreviewHeight = _getDragPreviewSize.dragPreviewHeight;\n\n  var calculateYOffset = function calculateYOffset() {\n    var interpolantY = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the top\n    offsetFromDragPreview.y, // Align at the center\n    offsetFromDragPreview.y / sourceHeight * dragPreviewHeight, // Dock to the bottom\n    offsetFromDragPreview.y + dragPreviewHeight - sourceHeight]);\n    var y = interpolantY.interpolate(anchorY); // Work around Safari 8 positioning bug\n\n    if (isSafari() && isImage) {\n      // We'll have to wait for @3x to see if this is entirely correct\n      y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n    }\n\n    return y;\n  };\n\n  var calculateXOffset = function calculateXOffset() {\n    // Interpolate coordinates depending on anchor point\n    // If you know a simpler way to do this, let me know\n    var interpolantX = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the left\n    offsetFromDragPreview.x, // Align at the center\n    offsetFromDragPreview.x / sourceWidth * dragPreviewWidth, // Dock to the right\n    offsetFromDragPreview.x + dragPreviewWidth - sourceWidth]);\n    return interpolantX.interpolate(anchorX);\n  }; // Force offsets if specified in the options.\n\n\n  var offsetX = offsetPoint.offsetX,\n      offsetY = offsetPoint.offsetY;\n  var isManualOffsetX = offsetX === 0 || offsetX;\n  var isManualOffsetY = offsetY === 0 || offsetY;\n  return {\n    x: isManualOffsetX ? offsetX : calculateXOffset(),\n    y: isManualOffsetY ? offsetY : calculateYOffset()\n  };\n}","export var FILE = '__NATIVE_FILE__';\nexport var URL = '__NATIVE_URL__';\nexport var TEXT = '__NATIVE_TEXT__';\nexport var HTML = '__NATIVE_HTML__';","var _nativeTypesConfig;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport * as NativeTypes from '../NativeTypes';\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer';\nexport var nativeTypesConfig = (_nativeTypesConfig = {}, _defineProperty(_nativeTypesConfig, NativeTypes.FILE, {\n  exposeProperties: {\n    files: function files(dataTransfer) {\n      return Array.prototype.slice.call(dataTransfer.files);\n    },\n    items: function items(dataTransfer) {\n      return dataTransfer.items;\n    },\n    dataTransfer: function dataTransfer(_dataTransfer) {\n      return _dataTransfer;\n    }\n  },\n  matchesTypes: ['Files']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.HTML, {\n  exposeProperties: {\n    html: function html(dataTransfer, matchesTypes) {\n      return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n    },\n    dataTransfer: function dataTransfer(_dataTransfer2) {\n      return _dataTransfer2;\n    }\n  },\n  matchesTypes: ['Html', 'text/html']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.URL, {\n  exposeProperties: {\n    urls: function urls(dataTransfer, matchesTypes) {\n      return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n    },\n    dataTransfer: function dataTransfer(_dataTransfer3) {\n      return _dataTransfer3;\n    }\n  },\n  matchesTypes: ['Url', 'text/uri-list']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.TEXT, {\n  exposeProperties: {\n    text: function text(dataTransfer, matchesTypes) {\n      return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n    },\n    dataTransfer: function dataTransfer(_dataTransfer4) {\n      return _dataTransfer4;\n    }\n  },\n  matchesTypes: ['Text', 'text/plain']\n}), _nativeTypesConfig);","export function getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n  var result = typesToTry.reduce(function (resultSoFar, typeToTry) {\n    return resultSoFar || dataTransfer.getData(typeToTry);\n  }, '');\n  return result != null ? result : defaultValue;\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var NativeDragSource = /*#__PURE__*/function () {\n  function NativeDragSource(config) {\n    _classCallCheck(this, NativeDragSource);\n\n    _defineProperty(this, \"item\", void 0);\n\n    _defineProperty(this, \"config\", void 0);\n\n    this.config = config;\n    this.item = {};\n    this.initializeExposedProperties();\n  }\n\n  _createClass(NativeDragSource, [{\n    key: \"initializeExposedProperties\",\n    value: function initializeExposedProperties() {\n      var _this = this;\n\n      Object.keys(this.config.exposeProperties).forEach(function (property) {\n        Object.defineProperty(_this.item, property, {\n          configurable: true,\n          enumerable: true,\n          get: function get() {\n            // eslint-disable-next-line no-console\n            console.warn(\"Browser doesn't allow reading \\\"\".concat(property, \"\\\" until the drop event.\"));\n            return null;\n          }\n        });\n      });\n    }\n  }, {\n    key: \"loadDataTransfer\",\n    value: function loadDataTransfer(dataTransfer) {\n      var _this2 = this;\n\n      if (dataTransfer) {\n        var newProperties = {};\n        Object.keys(this.config.exposeProperties).forEach(function (property) {\n          newProperties[property] = {\n            value: _this2.config.exposeProperties[property](dataTransfer, _this2.config.matchesTypes),\n            configurable: true,\n            enumerable: true\n          };\n        });\n        Object.defineProperties(this.item, newProperties);\n      }\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      return true;\n    }\n  }, {\n    key: \"beginDrag\",\n    value: function beginDrag() {\n      return this.item;\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging(monitor, handle) {\n      return handle === monitor.getSourceId();\n    }\n  }, {\n    key: \"endDrag\",\n    value: function endDrag() {// empty\n    }\n  }]);\n\n  return NativeDragSource;\n}();","import { nativeTypesConfig } from './nativeTypesConfig';\nimport { NativeDragSource } from './NativeDragSource';\nexport function createNativeDragSource(type, dataTransfer) {\n  var result = new NativeDragSource(nativeTypesConfig[type]);\n  result.loadDataTransfer(dataTransfer);\n  return result;\n}\nexport function matchNativeItemType(dataTransfer) {\n  if (!dataTransfer) {\n    return null;\n  }\n\n  var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n  return Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n    var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n    return matchesTypes.some(function (t) {\n      return dataTransferTypes.indexOf(t) > -1;\n    });\n  })[0] || null;\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var OptionsReader = /*#__PURE__*/function () {\n  function OptionsReader(globalContext, options) {\n    _classCallCheck(this, OptionsReader);\n\n    _defineProperty(this, \"ownerDocument\", null);\n\n    _defineProperty(this, \"globalContext\", void 0);\n\n    _defineProperty(this, \"optionsArgs\", void 0);\n\n    this.globalContext = globalContext;\n    this.optionsArgs = options;\n  }\n\n  _createClass(OptionsReader, [{\n    key: \"window\",\n    get: function get() {\n      if (this.globalContext) {\n        return this.globalContext;\n      } else if (typeof window !== 'undefined') {\n        return window;\n      }\n\n      return undefined;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      var _this$globalContext;\n\n      if ((_this$globalContext = this.globalContext) !== null && _this$globalContext !== void 0 && _this$globalContext.document) {\n        return this.globalContext.document;\n      } else if (this.window) {\n        return this.window.document;\n      } else {\n        return undefined;\n      }\n    }\n  }, {\n    key: \"rootElement\",\n    get: function get() {\n      var _this$optionsArgs;\n\n      return ((_this$optionsArgs = this.optionsArgs) === null || _this$optionsArgs === void 0 ? void 0 : _this$optionsArgs.rootElement) || this.window;\n    }\n  }]);\n\n  return OptionsReader;\n}();","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter';\nimport { getNodeClientOffset, getEventClientOffset, getDragPreviewOffset } from './OffsetUtils';\nimport { createNativeDragSource, matchNativeItemType } from './NativeDragSources';\nimport * as NativeTypes from './NativeTypes';\nimport { OptionsReader } from './OptionsReader';\nexport var HTML5BackendImpl = /*#__PURE__*/function () {\n  // React-Dnd Components\n  // Internal State\n  function HTML5BackendImpl(manager, globalContext, options) {\n    var _this = this;\n\n    _classCallCheck(this, HTML5BackendImpl);\n\n    _defineProperty(this, \"options\", void 0);\n\n    _defineProperty(this, \"actions\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"registry\", void 0);\n\n    _defineProperty(this, \"enterLeaveCounter\", void 0);\n\n    _defineProperty(this, \"sourcePreviewNodes\", new Map());\n\n    _defineProperty(this, \"sourcePreviewNodeOptions\", new Map());\n\n    _defineProperty(this, \"sourceNodes\", new Map());\n\n    _defineProperty(this, \"sourceNodeOptions\", new Map());\n\n    _defineProperty(this, \"dragStartSourceIds\", null);\n\n    _defineProperty(this, \"dropTargetIds\", []);\n\n    _defineProperty(this, \"dragEnterTargetIds\", []);\n\n    _defineProperty(this, \"currentNativeSource\", null);\n\n    _defineProperty(this, \"currentNativeHandle\", null);\n\n    _defineProperty(this, \"currentDragSourceNode\", null);\n\n    _defineProperty(this, \"altKeyPressed\", false);\n\n    _defineProperty(this, \"mouseMoveTimeoutTimer\", null);\n\n    _defineProperty(this, \"asyncEndDragFrameId\", null);\n\n    _defineProperty(this, \"dragOverTargetIds\", null);\n\n    _defineProperty(this, \"lastClientOffset\", null);\n\n    _defineProperty(this, \"hoverRafId\", null);\n\n    _defineProperty(this, \"getSourceClientOffset\", function (sourceId) {\n      var source = _this.sourceNodes.get(sourceId);\n\n      return source && getNodeClientOffset(source) || null;\n    });\n\n    _defineProperty(this, \"endDragNativeItem\", function () {\n      if (!_this.isDraggingNativeItem()) {\n        return;\n      }\n\n      _this.actions.endDrag();\n\n      if (_this.currentNativeHandle) {\n        _this.registry.removeSource(_this.currentNativeHandle);\n      }\n\n      _this.currentNativeHandle = null;\n      _this.currentNativeSource = null;\n    });\n\n    _defineProperty(this, \"isNodeInDocument\", function (node) {\n      // Check the node either in the main document or in the current context\n      return Boolean(node && _this.document && _this.document.body && _this.document.body.contains(node));\n    });\n\n    _defineProperty(this, \"endDragIfSourceWasRemovedFromDOM\", function () {\n      var node = _this.currentDragSourceNode;\n\n      if (node == null || _this.isNodeInDocument(node)) {\n        return;\n      }\n\n      if (_this.clearCurrentDragSourceNode() && _this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragStartCapture\", function () {\n      _this.clearCurrentDragSourceNode();\n\n      _this.dragStartSourceIds = [];\n    });\n\n    _defineProperty(this, \"handleTopDragStart\", function (e) {\n      if (e.defaultPrevented) {\n        return;\n      }\n\n      var dragStartSourceIds = _this.dragStartSourceIds;\n      _this.dragStartSourceIds = null;\n      var clientOffset = getEventClientOffset(e); // Avoid crashing if we missed a drop event or our previous drag died\n\n      if (_this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      } // Don't publish the source just yet (see why below)\n\n\n      _this.actions.beginDrag(dragStartSourceIds || [], {\n        publishSource: false,\n        getSourceClientOffset: _this.getSourceClientOffset,\n        clientOffset: clientOffset\n      });\n\n      var dataTransfer = e.dataTransfer;\n      var nativeType = matchNativeItemType(dataTransfer);\n\n      if (_this.monitor.isDragging()) {\n        if (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n          // Use custom drag image if user specifies it.\n          // If child drag source refuses drag but parent agrees,\n          // use parent's node as drag image. Neither works in IE though.\n          var sourceId = _this.monitor.getSourceId();\n\n          var sourceNode = _this.sourceNodes.get(sourceId);\n\n          var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n\n          if (dragPreview) {\n            var _this$getCurrentSourc = _this.getCurrentSourcePreviewNodeOptions(),\n                anchorX = _this$getCurrentSourc.anchorX,\n                anchorY = _this$getCurrentSourc.anchorY,\n                offsetX = _this$getCurrentSourc.offsetX,\n                offsetY = _this$getCurrentSourc.offsetY;\n\n            var anchorPoint = {\n              anchorX: anchorX,\n              anchorY: anchorY\n            };\n            var offsetPoint = {\n              offsetX: offsetX,\n              offsetY: offsetY\n            };\n            var dragPreviewOffset = getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n            dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n          }\n        }\n\n        try {\n          // Firefox won't drag without setting data\n          dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.setData('application/json', {});\n        } catch (err) {// IE doesn't support MIME types in setData\n        } // Store drag source node so we can check whether\n        // it is removed from DOM and trigger endDrag manually.\n\n\n        _this.setCurrentDragSourceNode(e.target); // Now we are ready to publish the drag source.. or are we not?\n\n\n        var _this$getCurrentSourc2 = _this.getCurrentSourcePreviewNodeOptions(),\n            captureDraggingState = _this$getCurrentSourc2.captureDraggingState;\n\n        if (!captureDraggingState) {\n          // Usually we want to publish it in the next tick so that browser\n          // is able to screenshot the current (not yet dragging) state.\n          //\n          // It also neatly avoids a situation where render() returns null\n          // in the same tick for the source element, and browser freaks out.\n          setTimeout(function () {\n            return _this.actions.publishDragSource();\n          }, 0);\n        } else {\n          // In some cases the user may want to override this behavior, e.g.\n          // to work around IE not supporting custom drag previews.\n          //\n          // When using a custom drag layer, the only way to prevent\n          // the default drag preview from drawing in IE is to screenshot\n          // the dragging state in which the node itself has zero opacity\n          // and height. In this case, though, returning null from render()\n          // will abruptly end the dragging, which is not obvious.\n          //\n          // This is the reason such behavior is strictly opt-in.\n          _this.actions.publishDragSource();\n        }\n      } else if (nativeType) {\n        // A native item (such as URL) dragged from inside the document\n        _this.beginDragNativeItem(nativeType);\n      } else if (dataTransfer && !dataTransfer.types && (e.target && !e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n        // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n        // Just let it drag. It's a native type (URL or text) and will be picked up in\n        // dragenter handler.\n        return;\n      } else {\n        // If by this time no drag source reacted, tell browser not to drag.\n        e.preventDefault();\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragEndCapture\", function () {\n      if (_this.clearCurrentDragSourceNode() && _this.monitor.isDragging()) {\n        // Firefox can dispatch this event in an infinite loop\n        // if dragend handler does something like showing an alert.\n        // Only proceed if we have not handled it already.\n        _this.actions.endDrag();\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragEnterCapture\", function (e) {\n      _this.dragEnterTargetIds = [];\n\n      var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n\n      if (!isFirstEnter || _this.monitor.isDragging()) {\n        return;\n      }\n\n      var dataTransfer = e.dataTransfer;\n      var nativeType = matchNativeItemType(dataTransfer);\n\n      if (nativeType) {\n        // A native item (such as file or URL) dragged from outside the document\n        _this.beginDragNativeItem(nativeType, dataTransfer);\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragEnter\", function (e) {\n      var dragEnterTargetIds = _this.dragEnterTargetIds;\n      _this.dragEnterTargetIds = [];\n\n      if (!_this.monitor.isDragging()) {\n        // This is probably a native item type we don't understand.\n        return;\n      }\n\n      _this.altKeyPressed = e.altKey; // If the target changes position as the result of `dragenter`, `dragover` might still\n      // get dispatched despite target being no longer there. The easy solution is to check\n      // whether there actually is a target before firing `hover`.\n\n      if (dragEnterTargetIds.length > 0) {\n        _this.actions.hover(dragEnterTargetIds, {\n          clientOffset: getEventClientOffset(e)\n        });\n      }\n\n      var canDrop = dragEnterTargetIds.some(function (targetId) {\n        return _this.monitor.canDropOnTarget(targetId);\n      });\n\n      if (canDrop) {\n        // IE requires this to fire dragover events\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n        }\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragOverCapture\", function () {\n      _this.dragOverTargetIds = [];\n    });\n\n    _defineProperty(this, \"handleTopDragOver\", function (e) {\n      var dragOverTargetIds = _this.dragOverTargetIds;\n      _this.dragOverTargetIds = [];\n\n      if (!_this.monitor.isDragging()) {\n        // This is probably a native item type we don't understand.\n        // Prevent default \"drop and blow away the whole document\" action.\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = 'none';\n        }\n\n        return;\n      }\n\n      _this.altKeyPressed = e.altKey;\n      _this.lastClientOffset = getEventClientOffset(e);\n\n      if (_this.hoverRafId === null && typeof requestAnimationFrame !== 'undefined') {\n        _this.hoverRafId = requestAnimationFrame(function () {\n          if (_this.monitor.isDragging()) {\n            _this.actions.hover(dragOverTargetIds || [], {\n              clientOffset: _this.lastClientOffset\n            });\n          }\n\n          _this.hoverRafId = null;\n        });\n      }\n\n      var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n        return _this.monitor.canDropOnTarget(targetId);\n      });\n\n      if (canDrop) {\n        // Show user-specified drop effect.\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n        }\n      } else if (_this.isDraggingNativeItem()) {\n        // Don't show a nice cursor but still prevent default\n        // \"drop and blow away the whole document\" action.\n        e.preventDefault();\n      } else {\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = 'none';\n        }\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragLeaveCapture\", function (e) {\n      if (_this.isDraggingNativeItem()) {\n        e.preventDefault();\n      }\n\n      var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n\n      if (!isLastLeave) {\n        return;\n      }\n\n      if (_this.isDraggingNativeItem()) {\n        setTimeout(function () {\n          return _this.endDragNativeItem();\n        }, 0);\n      }\n    });\n\n    _defineProperty(this, \"handleTopDropCapture\", function (e) {\n      _this.dropTargetIds = [];\n\n      if (_this.isDraggingNativeItem()) {\n        var _this$currentNativeSo;\n\n        e.preventDefault();\n        (_this$currentNativeSo = _this.currentNativeSource) === null || _this$currentNativeSo === void 0 ? void 0 : _this$currentNativeSo.loadDataTransfer(e.dataTransfer);\n      } else if (matchNativeItemType(e.dataTransfer)) {\n        // Dragging some elements, like <a> and <img> may still behave like a native drag event,\n        // even if the current drag event matches a user-defined type.\n        // Stop the default behavior when we're not expecting a native item to be dropped.\n        e.preventDefault();\n      }\n\n      _this.enterLeaveCounter.reset();\n    });\n\n    _defineProperty(this, \"handleTopDrop\", function (e) {\n      var dropTargetIds = _this.dropTargetIds;\n      _this.dropTargetIds = [];\n\n      _this.actions.hover(dropTargetIds, {\n        clientOffset: getEventClientOffset(e)\n      });\n\n      _this.actions.drop({\n        dropEffect: _this.getCurrentDropEffect()\n      });\n\n      if (_this.isDraggingNativeItem()) {\n        _this.endDragNativeItem();\n      } else if (_this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      }\n    });\n\n    _defineProperty(this, \"handleSelectStart\", function (e) {\n      var target = e.target; // Only IE requires us to explicitly say\n      // we want drag drop operation to start\n\n      if (typeof target.dragDrop !== 'function') {\n        return;\n      } // Inputs and textareas should be selectable\n\n\n      if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n        return;\n      } // For other targets, ask IE\n      // to enable drag and drop\n\n\n      e.preventDefault();\n      target.dragDrop();\n    });\n\n    this.options = new OptionsReader(globalContext, options);\n    this.actions = manager.getActions();\n    this.monitor = manager.getMonitor();\n    this.registry = manager.getRegistry();\n    this.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument);\n  }\n  /**\n   * Generate profiling statistics for the HTML5Backend.\n   */\n\n\n  _createClass(HTML5BackendImpl, [{\n    key: \"profile\",\n    value: function profile() {\n      var _this$dragStartSource, _this$dragOverTargetI;\n\n      return {\n        sourcePreviewNodes: this.sourcePreviewNodes.size,\n        sourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n        sourceNodeOptions: this.sourceNodeOptions.size,\n        sourceNodes: this.sourceNodes.size,\n        dragStartSourceIds: ((_this$dragStartSource = this.dragStartSourceIds) === null || _this$dragStartSource === void 0 ? void 0 : _this$dragStartSource.length) || 0,\n        dropTargetIds: this.dropTargetIds.length,\n        dragEnterTargetIds: this.dragEnterTargetIds.length,\n        dragOverTargetIds: ((_this$dragOverTargetI = this.dragOverTargetIds) === null || _this$dragOverTargetI === void 0 ? void 0 : _this$dragOverTargetI.length) || 0\n      };\n    } // public for test\n\n  }, {\n    key: \"window\",\n    get: function get() {\n      return this.options.window;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      return this.options.document;\n    }\n    /**\n     * Get the root element to use for event subscriptions\n     */\n\n  }, {\n    key: \"rootElement\",\n    get: function get() {\n      return this.options.rootElement;\n    }\n  }, {\n    key: \"setup\",\n    value: function setup() {\n      var root = this.rootElement;\n\n      if (root === undefined) {\n        return;\n      }\n\n      if (root.__isReactDndBackendSetUp) {\n        throw new Error('Cannot have two HTML5 backends at the same time.');\n      }\n\n      root.__isReactDndBackendSetUp = true;\n      this.addEventListeners(root);\n    }\n  }, {\n    key: \"teardown\",\n    value: function teardown() {\n      var root = this.rootElement;\n\n      if (root === undefined) {\n        return;\n      }\n\n      root.__isReactDndBackendSetUp = false;\n      this.removeEventListeners(this.rootElement);\n      this.clearCurrentDragSourceNode();\n\n      if (this.asyncEndDragFrameId) {\n        var _this$window;\n\n        (_this$window = this.window) === null || _this$window === void 0 ? void 0 : _this$window.cancelAnimationFrame(this.asyncEndDragFrameId);\n      }\n    }\n  }, {\n    key: \"connectDragPreview\",\n    value: function connectDragPreview(sourceId, node, options) {\n      var _this2 = this;\n\n      this.sourcePreviewNodeOptions.set(sourceId, options);\n      this.sourcePreviewNodes.set(sourceId, node);\n      return function () {\n        _this2.sourcePreviewNodes.delete(sourceId);\n\n        _this2.sourcePreviewNodeOptions.delete(sourceId);\n      };\n    }\n  }, {\n    key: \"connectDragSource\",\n    value: function connectDragSource(sourceId, node, options) {\n      var _this3 = this;\n\n      this.sourceNodes.set(sourceId, node);\n      this.sourceNodeOptions.set(sourceId, options);\n\n      var handleDragStart = function handleDragStart(e) {\n        return _this3.handleDragStart(e, sourceId);\n      };\n\n      var handleSelectStart = function handleSelectStart(e) {\n        return _this3.handleSelectStart(e);\n      };\n\n      node.setAttribute('draggable', 'true');\n      node.addEventListener('dragstart', handleDragStart);\n      node.addEventListener('selectstart', handleSelectStart);\n      return function () {\n        _this3.sourceNodes.delete(sourceId);\n\n        _this3.sourceNodeOptions.delete(sourceId);\n\n        node.removeEventListener('dragstart', handleDragStart);\n        node.removeEventListener('selectstart', handleSelectStart);\n        node.setAttribute('draggable', 'false');\n      };\n    }\n  }, {\n    key: \"connectDropTarget\",\n    value: function connectDropTarget(targetId, node) {\n      var _this4 = this;\n\n      var handleDragEnter = function handleDragEnter(e) {\n        return _this4.handleDragEnter(e, targetId);\n      };\n\n      var handleDragOver = function handleDragOver(e) {\n        return _this4.handleDragOver(e, targetId);\n      };\n\n      var handleDrop = function handleDrop(e) {\n        return _this4.handleDrop(e, targetId);\n      };\n\n      node.addEventListener('dragenter', handleDragEnter);\n      node.addEventListener('dragover', handleDragOver);\n      node.addEventListener('drop', handleDrop);\n      return function () {\n        node.removeEventListener('dragenter', handleDragEnter);\n        node.removeEventListener('dragover', handleDragOver);\n        node.removeEventListener('drop', handleDrop);\n      };\n    }\n  }, {\n    key: \"addEventListeners\",\n    value: function addEventListeners(target) {\n      // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n      if (!target.addEventListener) {\n        return;\n      }\n\n      target.addEventListener('dragstart', this.handleTopDragStart);\n      target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n      target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n      target.addEventListener('dragenter', this.handleTopDragEnter);\n      target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n      target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n      target.addEventListener('dragover', this.handleTopDragOver);\n      target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n      target.addEventListener('drop', this.handleTopDrop);\n      target.addEventListener('drop', this.handleTopDropCapture, true);\n    }\n  }, {\n    key: \"removeEventListeners\",\n    value: function removeEventListeners(target) {\n      // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n      if (!target.removeEventListener) {\n        return;\n      }\n\n      target.removeEventListener('dragstart', this.handleTopDragStart);\n      target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n      target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n      target.removeEventListener('dragenter', this.handleTopDragEnter);\n      target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n      target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n      target.removeEventListener('dragover', this.handleTopDragOver);\n      target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n      target.removeEventListener('drop', this.handleTopDrop);\n      target.removeEventListener('drop', this.handleTopDropCapture, true);\n    }\n  }, {\n    key: \"getCurrentSourceNodeOptions\",\n    value: function getCurrentSourceNodeOptions() {\n      var sourceId = this.monitor.getSourceId();\n      var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n      return _objectSpread({\n        dropEffect: this.altKeyPressed ? 'copy' : 'move'\n      }, sourceNodeOptions || {});\n    }\n  }, {\n    key: \"getCurrentDropEffect\",\n    value: function getCurrentDropEffect() {\n      if (this.isDraggingNativeItem()) {\n        // It makes more sense to default to 'copy' for native resources\n        return 'copy';\n      }\n\n      return this.getCurrentSourceNodeOptions().dropEffect;\n    }\n  }, {\n    key: \"getCurrentSourcePreviewNodeOptions\",\n    value: function getCurrentSourcePreviewNodeOptions() {\n      var sourceId = this.monitor.getSourceId();\n      var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n      return _objectSpread({\n        anchorX: 0.5,\n        anchorY: 0.5,\n        captureDraggingState: false\n      }, sourcePreviewNodeOptions || {});\n    }\n  }, {\n    key: \"isDraggingNativeItem\",\n    value: function isDraggingNativeItem() {\n      var itemType = this.monitor.getItemType();\n      return Object.keys(NativeTypes).some(function (key) {\n        return NativeTypes[key] === itemType;\n      });\n    }\n  }, {\n    key: \"beginDragNativeItem\",\n    value: function beginDragNativeItem(type, dataTransfer) {\n      this.clearCurrentDragSourceNode();\n      this.currentNativeSource = createNativeDragSource(type, dataTransfer);\n      this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n      this.actions.beginDrag([this.currentNativeHandle]);\n    }\n  }, {\n    key: \"setCurrentDragSourceNode\",\n    value: function setCurrentDragSourceNode(node) {\n      var _this5 = this;\n\n      this.clearCurrentDragSourceNode();\n      this.currentDragSourceNode = node; // A timeout of > 0 is necessary to resolve Firefox issue referenced\n      // See:\n      //   * https://github.com/react-dnd/react-dnd/pull/928\n      //   * https://github.com/react-dnd/react-dnd/issues/869\n\n      var MOUSE_MOVE_TIMEOUT = 1000; // Receiving a mouse event in the middle of a dragging operation\n      // means it has ended and the drag source node disappeared from DOM,\n      // so the browser didn't dispatch the dragend event.\n      //\n      // We need to wait before we start listening for mousemove events.\n      // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n      // immediately in some browsers.\n      //\n      // See:\n      //   * https://github.com/react-dnd/react-dnd/pull/928\n      //   * https://github.com/react-dnd/react-dnd/issues/869\n      //\n\n      this.mouseMoveTimeoutTimer = setTimeout(function () {\n        var _this5$rootElement;\n\n        return (_this5$rootElement = _this5.rootElement) === null || _this5$rootElement === void 0 ? void 0 : _this5$rootElement.addEventListener('mousemove', _this5.endDragIfSourceWasRemovedFromDOM, true);\n      }, MOUSE_MOVE_TIMEOUT);\n    }\n  }, {\n    key: \"clearCurrentDragSourceNode\",\n    value: function clearCurrentDragSourceNode() {\n      if (this.currentDragSourceNode) {\n        this.currentDragSourceNode = null;\n\n        if (this.rootElement) {\n          var _this$window2;\n\n          (_this$window2 = this.window) === null || _this$window2 === void 0 ? void 0 : _this$window2.clearTimeout(this.mouseMoveTimeoutTimer || undefined);\n          this.rootElement.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n        }\n\n        this.mouseMoveTimeoutTimer = null;\n        return true;\n      }\n\n      return false;\n    }\n  }, {\n    key: \"handleDragStart\",\n    value: function handleDragStart(e, sourceId) {\n      if (e.defaultPrevented) {\n        return;\n      }\n\n      if (!this.dragStartSourceIds) {\n        this.dragStartSourceIds = [];\n      }\n\n      this.dragStartSourceIds.unshift(sourceId);\n    }\n  }, {\n    key: \"handleDragEnter\",\n    value: function handleDragEnter(e, targetId) {\n      this.dragEnterTargetIds.unshift(targetId);\n    }\n  }, {\n    key: \"handleDragOver\",\n    value: function handleDragOver(e, targetId) {\n      if (this.dragOverTargetIds === null) {\n        this.dragOverTargetIds = [];\n      }\n\n      this.dragOverTargetIds.unshift(targetId);\n    }\n  }, {\n    key: \"handleDrop\",\n    value: function handleDrop(e, targetId) {\n      this.dropTargetIds.unshift(targetId);\n    }\n  }]);\n\n  return HTML5BackendImpl;\n}();","import { HTML5BackendImpl } from './HTML5BackendImpl';\nimport * as NativeTypes from './NativeTypes';\nexport { getEmptyImage } from './getEmptyImage';\nexport { NativeTypes };\nexport var HTML5Backend = function createBackend(manager, context, options) {\n  return new HTML5BackendImpl(manager, context, options);\n};","var fetchApi\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch\n  }\n}\n\nif (typeof require !== 'undefined' && (typeof window === 'undefined' || typeof window.document === 'undefined')) {\n  var f = fetchApi || require('cross-fetch')\n  if (f.default) f = f.default\n  exports.default = f\n  module.exports = exports.default\n}\n","var global = require('../internals/global');\nvar 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 = global.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 global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var fails = require('../internals/fails');\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  if (options && hasOwn(options, 'constructor') && options.constructor) {\n    if (DESCRIPTORS) try {\n      defineProperty(value, 'prototype', { writable: false });\n    } catch (error) { /* empty */ }\n  } else value.prototype = undefined;\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var 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","// 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 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 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","/* 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","'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","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","'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 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 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 userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","// eslint-disable-next-line es-x/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.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","// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n  return function ($this, maxLength, fillString) {\n    var S = toString(requireObjectCoercible($this));\n    var intMaxLength = toLength(maxLength);\n    var stringLength = S.length;\n    var fillStr = fillString === undefined ? ' ' : toString(fillString);\n    var fillLen, stringFiller;\n    if (intMaxLength <= stringLength || fillStr == '') return S;\n    fillLen = intMaxLength - stringLength;\n    stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n    if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n    return IS_END ? S + stringFiller : stringFiller + S;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.padStart` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padstart\n  start: createMethod(false),\n  // `String.prototype.padEnd` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padend\n  end: createMethod(true)\n};\n","'use strict';\nvar global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar RangeError = global.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","// 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","// `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  // eslint-disable-next-line no-self-compare -- NaN check\n  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\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 isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es-x/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\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 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","'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.sticky) result += 'y';\n  return result;\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 global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.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","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","'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 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","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n  if (!matchesSelectorFunc) {\n    matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n      // $FlowIgnore: Doesn't think elements are indexable\n      return (0, _shims.isFunction)(el[method]);\n    });\n  } // Might not be found entirely (not an Element?) - in that case, bail\n  // $FlowIgnore: Doesn't think elements are indexable\n\n\n  if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n  return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n  var node = el;\n\n  do {\n    if (matchesSelector(node, selector)) return true;\n    if (node === baseNode) return false;\n    node = node.parentNode;\n  } while (node);\n\n  return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n  if (!el) return;\n\n  var options = _objectSpread({\n    capture: true\n  }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n  if (el.addEventListener) {\n    el.addEventListener(event, handler, options);\n  } else if (el.attachEvent) {\n    el.attachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = handler;\n  }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n  if (!el) return;\n\n  var options = _objectSpread({\n    capture: true\n  }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n  if (el.removeEventListener) {\n    el.removeEventListener(event, handler, options);\n  } else if (el.detachEvent) {\n    el.detachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = null;\n  }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetTop which is including margin. See getBoundPosition\n  var height = node.clientHeight;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height += (0, _shims.int)(computedStyle.borderTopWidth);\n  height += (0, _shims.int)(computedStyle.borderBottomWidth);\n  return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetLeft which is including margin. See getBoundPosition\n  var width = node.clientWidth;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width += (0, _shims.int)(computedStyle.borderLeftWidth);\n  width += (0, _shims.int)(computedStyle.borderRightWidth);\n  return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  var height = node.clientHeight;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height -= (0, _shims.int)(computedStyle.paddingTop);\n  height -= (0, _shims.int)(computedStyle.paddingBottom);\n  return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  var width = node.clientWidth;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width -= (0, _shims.int)(computedStyle.paddingLeft);\n  width -= (0, _shims.int)(computedStyle.paddingRight);\n  return width;\n}\n/*:: interface EventWithOffset {\n  clientX: number, clientY: number\n}*/\n\n\n// Get from offsetParent\nfunction offsetXYFromParent(evt\n/*: EventWithOffset*/\n, offsetParent\n/*: HTMLElement*/\n, scale\n/*: number*/\n)\n/*: ControlPosition*/\n{\n  var isBody = offsetParent === offsetParent.ownerDocument.body;\n  var offsetParentRect = isBody ? {\n    left: 0,\n    top: 0\n  } : offsetParent.getBoundingClientRect();\n  var x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n  var y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n  return {\n    x: x,\n    y: y\n  };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n  var translation = getTranslation(controlPos, positionOffset, 'px');\n  return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default), translation);\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n  var translation = getTranslation(controlPos, positionOffset, '');\n  return translation;\n}\n\nfunction getTranslation(_ref2, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n  var x = _ref2.x,\n      y = _ref2.y;\n  var translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n\n  if (positionOffset) {\n    var defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n    var defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n    translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n  }\n\n  return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n  return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n    return identifier === t.identifier;\n  }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n    return identifier === t.identifier;\n  });\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n  if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n  if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n  if (!doc) return;\n  var styleEl = doc.getElementById('react-draggable-style-el');\n\n  if (!styleEl) {\n    styleEl = doc.createElement('style');\n    styleEl.type = 'text/css';\n    styleEl.id = 'react-draggable-style-el';\n    styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n    styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n    doc.getElementsByTagName('head')[0].appendChild(styleEl);\n  }\n\n  if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n  if (!doc) return;\n\n  try {\n    if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n    if (doc.selection) {\n      // $FlowIgnore: IE\n      doc.selection.empty();\n    } else {\n      // Remove selection caused by scroll, unless it's a focused input\n      // (we use doc.defaultView in case we're in an iframe)\n      var selection = (doc.defaultView || window).getSelection();\n\n      if (selection && selection.type !== 'Caret') {\n        selection.removeAllRanges();\n      }\n    }\n  } catch (e) {// probably IE\n  }\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n  if (el.classList) {\n    el.classList.add(className);\n  } else {\n    if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n      el.className += \" \".concat(className);\n    }\n  }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n  if (el.classList) {\n    el.classList.remove(className);\n  } else {\n    el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n  }\n}","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _CellSizeAndPositionManager = _interopRequireDefault(require(\"./CellSizeAndPositionManager\"));\n\nvar _maxElementSize = require(\"./maxElementSize.js\");\n\nvar _types = require(\"../types\");\n\n/**\n * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.\n */\nvar ScalingCellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n  function ScalingCellSizeAndPositionManager(_ref) {\n    var _ref$maxScrollSize = _ref.maxScrollSize,\n        maxScrollSize = _ref$maxScrollSize === void 0 ? (0, _maxElementSize.getMaxElementSize)() : _ref$maxScrollSize,\n        params = (0, _objectWithoutProperties2[\"default\"])(_ref, [\"maxScrollSize\"]);\n    (0, _classCallCheck2[\"default\"])(this, ScalingCellSizeAndPositionManager);\n    (0, _defineProperty2[\"default\"])(this, \"_cellSizeAndPositionManager\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_maxScrollSize\", void 0);\n    // Favor composition over inheritance to simplify IE10 support\n    this._cellSizeAndPositionManager = new _CellSizeAndPositionManager[\"default\"](params);\n    this._maxScrollSize = maxScrollSize;\n  }\n\n  (0, _createClass2[\"default\"])(ScalingCellSizeAndPositionManager, [{\n    key: \"areOffsetsAdjusted\",\n    value: function areOffsetsAdjusted() {\n      return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;\n    }\n  }, {\n    key: \"configure\",\n    value: function configure(params) {\n      this._cellSizeAndPositionManager.configure(params);\n    }\n  }, {\n    key: \"getCellCount\",\n    value: function getCellCount() {\n      return this._cellSizeAndPositionManager.getCellCount();\n    }\n  }, {\n    key: \"getEstimatedCellSize\",\n    value: function getEstimatedCellSize() {\n      return this._cellSizeAndPositionManager.getEstimatedCellSize();\n    }\n  }, {\n    key: \"getLastMeasuredIndex\",\n    value: function getLastMeasuredIndex() {\n      return this._cellSizeAndPositionManager.getLastMeasuredIndex();\n    }\n    /**\n     * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.\n     * The offset passed to this function is scaled (safe) as well.\n     */\n\n  }, {\n    key: \"getOffsetAdjustment\",\n    value: function getOffsetAdjustment(_ref2) {\n      var containerSize = _ref2.containerSize,\n          offset = _ref2.offset;\n\n      var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n      var safeTotalSize = this.getTotalSize();\n\n      var offsetPercentage = this._getOffsetPercentage({\n        containerSize: containerSize,\n        offset: offset,\n        totalSize: safeTotalSize\n      });\n\n      return Math.round(offsetPercentage * (safeTotalSize - totalSize));\n    }\n  }, {\n    key: \"getSizeAndPositionOfCell\",\n    value: function getSizeAndPositionOfCell(index) {\n      return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);\n    }\n  }, {\n    key: \"getSizeAndPositionOfLastMeasuredCell\",\n    value: function getSizeAndPositionOfLastMeasuredCell() {\n      return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();\n    }\n    /** See CellSizeAndPositionManager#getTotalSize */\n\n  }, {\n    key: \"getTotalSize\",\n    value: function getTotalSize() {\n      return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());\n    }\n    /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */\n\n  }, {\n    key: \"getUpdatedOffsetForIndex\",\n    value: function getUpdatedOffsetForIndex(_ref3) {\n      var _ref3$align = _ref3.align,\n          align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n          containerSize = _ref3.containerSize,\n          currentOffset = _ref3.currentOffset,\n          targetIndex = _ref3.targetIndex;\n      currentOffset = this._safeOffsetToOffset({\n        containerSize: containerSize,\n        offset: currentOffset\n      });\n\n      var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({\n        align: align,\n        containerSize: containerSize,\n        currentOffset: currentOffset,\n        targetIndex: targetIndex\n      });\n\n      return this._offsetToSafeOffset({\n        containerSize: containerSize,\n        offset: offset\n      });\n    }\n    /** See CellSizeAndPositionManager#getVisibleCellRange */\n\n  }, {\n    key: \"getVisibleCellRange\",\n    value: function getVisibleCellRange(_ref4) {\n      var containerSize = _ref4.containerSize,\n          offset = _ref4.offset;\n      offset = this._safeOffsetToOffset({\n        containerSize: containerSize,\n        offset: offset\n      });\n      return this._cellSizeAndPositionManager.getVisibleCellRange({\n        containerSize: containerSize,\n        offset: offset\n      });\n    }\n  }, {\n    key: \"resetCell\",\n    value: function resetCell(index) {\n      this._cellSizeAndPositionManager.resetCell(index);\n    }\n  }, {\n    key: \"_getOffsetPercentage\",\n    value: function _getOffsetPercentage(_ref5) {\n      var containerSize = _ref5.containerSize,\n          offset = _ref5.offset,\n          totalSize = _ref5.totalSize;\n      return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);\n    }\n  }, {\n    key: \"_offsetToSafeOffset\",\n    value: function _offsetToSafeOffset(_ref6) {\n      var containerSize = _ref6.containerSize,\n          offset = _ref6.offset;\n\n      var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n      var safeTotalSize = this.getTotalSize();\n\n      if (totalSize === safeTotalSize) {\n        return offset;\n      } else {\n        var offsetPercentage = this._getOffsetPercentage({\n          containerSize: containerSize,\n          offset: offset,\n          totalSize: totalSize\n        });\n\n        return Math.round(offsetPercentage * (safeTotalSize - containerSize));\n      }\n    }\n  }, {\n    key: \"_safeOffsetToOffset\",\n    value: function _safeOffsetToOffset(_ref7) {\n      var containerSize = _ref7.containerSize,\n          offset = _ref7.offset;\n\n      var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n      var safeTotalSize = this.getTotalSize();\n\n      if (totalSize === safeTotalSize) {\n        return offset;\n      } else {\n        var offsetPercentage = this._getOffsetPercentage({\n          containerSize: containerSize,\n          offset: offset,\n          totalSize: safeTotalSize\n        });\n\n        return Math.round(offsetPercentage * (totalSize - containerSize));\n      }\n    }\n  }]);\n  return ScalingCellSizeAndPositionManager;\n}();\n\nexports[\"default\"] = ScalingCellSizeAndPositionManager;","var baseForOwn = require('./_baseForOwn'),\n    castFunction = require('./_castFunction');\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n  return object && baseForOwn(object, castFunction(iteratee));\n}\n\nmodule.exports = forOwn;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.type       //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\nvar Declaration = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Declaration, _Node);\n\n  function Declaration(defaults) {\n    var _this;\n\n    _this = _Node.call(this, defaults) || this;\n    _this.type = 'decl';\n    return _this;\n  }\n  /**\n   * @memberof Declaration#\n   * @member {string} prop The declaration’s property name.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black }')\n   * const decl = root.first.first\n   * decl.prop //=> 'color'\n   */\n\n  /**\n   * @memberof Declaration#\n   * @member {string} value The declaration’s value.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black }')\n   * const decl = root.first.first\n   * decl.value //=> 'black'\n   */\n\n  /**\n   * @memberof Declaration#\n   * @member {boolean} important `true` if the declaration\n   *                             has an !important annotation.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black !important; color: red }')\n   * root.first.first.important //=> true\n   * root.first.last.important  //=> undefined\n   */\n\n  /**\n   * @memberof Declaration#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node. It also stores `*`\n   *   and `_` symbols before the declaration (IE hack).\n   * * `between`: the symbols between the property and value\n   *   for declarations.\n   * * `important`: the content of the important statement,\n   *   if it is not just `!important`.\n   *\n   * PostCSS cleans declaration from comments and extra spaces,\n   * but it stores origin content in raws properties.\n   * As such, if you don’t change a declaration’s value,\n   * PostCSS will use the raw value with comments.\n   *\n   * @example\n   * const root = postcss.parse('a {\\n  color:black\\n}')\n   * root.first.first.raws //=> { before: '\\n  ', between: ':' }\n   */\n\n\n  return Declaration;\n}(_node.default);\n\nvar _default = Declaration;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9uLmVzNiJdLCJuYW1lcyI6WyJEZWNsYXJhdGlvbiIsImRlZmF1bHRzIiwidHlwZSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztBQUVBOzs7Ozs7Ozs7OztJQVdNQSxXOzs7QUFDSix1QkFBYUMsUUFBYixFQUF1QjtBQUFBOztBQUNyQiw2QkFBTUEsUUFBTjtBQUNBLFVBQUtDLElBQUwsR0FBWSxNQUFaO0FBRnFCO0FBR3RCO0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7OztBQVdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFyQ3dCQyxhOztlQStEWEgsVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBOb2RlIGZyb20gJy4vbm9kZSdcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIGRlY2xhcmF0aW9uLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgfScpXG4gKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdFxuICogZGVjbC50eXBlICAgICAgIC8vPT4gJ2RlY2wnXG4gKiBkZWNsLnRvU3RyaW5nKCkgLy89PiAnIGNvbG9yOiBibGFjaydcbiAqL1xuY2xhc3MgRGVjbGFyYXRpb24gZXh0ZW5kcyBOb2RlIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2RlY2wnXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHByb3AgVGhlIGRlY2xhcmF0aW9u4oCZcyBwcm9wZXJ0eSBuYW1lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9JylcbiAgICogY29uc3QgZGVjbCA9IHJvb3QuZmlyc3QuZmlyc3RcbiAgICogZGVjbC5wcm9wIC8vPT4gJ2NvbG9yJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHZhbHVlIFRoZSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdFxuICAgKiBkZWNsLnZhbHVlIC8vPT4gJ2JsYWNrJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgKiBAbWVtYmVyIHtib29sZWFufSBpbXBvcnRhbnQgYHRydWVgIGlmIHRoZSBkZWNsYXJhdGlvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIGFuICFpbXBvcnRhbnQgYW5ub3RhdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsgY29sb3I6IHJlZCB9JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5pbXBvcnRhbnQgLy89PiB0cnVlXG4gICAqIHJvb3QuZmlyc3QubGFzdC5pbXBvcnRhbnQgIC8vPT4gdW5kZWZpbmVkXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMuXG4gICAqICogYGltcG9ydGFudGA6IHRoZSBjb250ZW50IG9mIHRoZSBpbXBvcnRhbnQgc3RhdGVtZW50LFxuICAgKiAgIGlmIGl0IGlzIG5vdCBqdXN0IGAhaW1wb3J0YW50YC5cbiAgICpcbiAgICogUG9zdENTUyBjbGVhbnMgZGVjbGFyYXRpb24gZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgKiBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3MgcHJvcGVydGllcy5cbiAgICogQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5yYXdzIC8vPT4geyBiZWZvcmU6ICdcXG4gICcsIGJldHdlZW46ICc6JyB9XG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBEZWNsYXJhdGlvblxuIl0sImZpbGUiOiJkZWNsYXJhdGlvbi5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _cssSyntaxError = _interopRequireDefault(require(\"./css-syntax-error\"));\n\nvar _stringifier = _interopRequireDefault(require(\"./stringifier\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction cloneNode(obj, parent) {\n  var cloned = new obj.constructor();\n\n  for (var i in obj) {\n    if (!obj.hasOwnProperty(i)) continue;\n    var value = obj[i];\n    var type = typeof value;\n\n    if (i === 'parent' && type === 'object') {\n      if (parent) cloned[i] = parent;\n    } else if (i === 'source') {\n      cloned[i] = value;\n    } else if (value instanceof Array) {\n      cloned[i] = value.map(function (j) {\n        return cloneNode(j, cloned);\n      });\n    } else {\n      if (type === 'object' && value !== null) value = cloneNode(value);\n      cloned[i] = value;\n    }\n  }\n\n  return cloned;\n}\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\n\nvar Node = /*#__PURE__*/function () {\n  /**\n   * @param {object} [defaults] Value for node properties.\n   */\n  function Node(defaults) {\n    if (defaults === void 0) {\n      defaults = {};\n    }\n\n    this.raws = {};\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof defaults !== 'object' && typeof defaults !== 'undefined') {\n        throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults));\n      }\n    }\n\n    for (var name in defaults) {\n      this[name] = defaults[name];\n    }\n  }\n  /**\n   * Returns a `CssSyntaxError` instance containing the original position\n   * of the node in the source, showing line and column numbers and also\n   * a small excerpt to facilitate debugging.\n   *\n   * If present, an input source map will be used to get the original position\n   * of the source, even from a previous compilation step\n   * (e.g., from Sass compilation).\n   *\n   * This method produces very useful error messages.\n   *\n   * @param {string} message     Error description.\n   * @param {object} [opts]      Options.\n   * @param {string} opts.plugin Plugin name that created this error.\n   *                             PostCSS will set it automatically.\n   * @param {string} opts.word   A word inside a node’s string that should\n   *                             be highlighted as the source of the error.\n   * @param {number} opts.index  An index inside a node’s string that should\n   *                             be highlighted as the source of the error.\n   *\n   * @return {CssSyntaxError} Error object to throw it.\n   *\n   * @example\n   * if (!variables[name]) {\n   *   throw decl.error('Unknown variable ' + name, { word: name })\n   *   // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n   *   //   color: $black\n   *   // a\n   *   //          ^\n   *   //   background: white\n   * }\n   */\n\n\n  var _proto = Node.prototype;\n\n  _proto.error = function error(message, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    if (this.source) {\n      var pos = this.positionBy(opts);\n      return this.source.input.error(message, pos.line, pos.column, opts);\n    }\n\n    return new _cssSyntaxError.default(message);\n  }\n  /**\n   * This method is provided as a convenience wrapper for {@link Result#warn}.\n   *\n   * @param {Result} result      The {@link Result} instance\n   *                             that will receive the warning.\n   * @param {string} text        Warning message.\n   * @param {object} [opts]      Options\n   * @param {string} opts.plugin Plugin name that created this warning.\n   *                             PostCSS will set it automatically.\n   * @param {string} opts.word   A word inside a node’s string that should\n   *                             be highlighted as the source of the warning.\n   * @param {number} opts.index  An index inside a node’s string that should\n   *                             be highlighted as the source of the warning.\n   *\n   * @return {Warning} Created warning object.\n   *\n   * @example\n   * const plugin = postcss.plugin('postcss-deprecated', () => {\n   *   return (root, result) => {\n   *     root.walkDecls('bad', decl => {\n   *       decl.warn(result, 'Deprecated property bad')\n   *     })\n   *   }\n   * })\n   */\n  ;\n\n  _proto.warn = function warn(result, text, opts) {\n    var data = {\n      node: this\n    };\n\n    for (var i in opts) {\n      data[i] = opts[i];\n    }\n\n    return result.warn(text, data);\n  }\n  /**\n   * Removes the node from its parent and cleans the parent properties\n   * from the node and its children.\n   *\n   * @example\n   * if (decl.prop.match(/^-webkit-/)) {\n   *   decl.remove()\n   * }\n   *\n   * @return {Node} Node to make calls chain.\n   */\n  ;\n\n  _proto.remove = function remove() {\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n\n    this.parent = undefined;\n    return this;\n  }\n  /**\n   * Returns a CSS string representing the node.\n   *\n   * @param {stringifier|syntax} [stringifier] A syntax to use\n   *                                           in string generation.\n   *\n   * @return {string} CSS string of this node.\n   *\n   * @example\n   * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n   */\n  ;\n\n  _proto.toString = function toString(stringifier) {\n    if (stringifier === void 0) {\n      stringifier = _stringify.default;\n    }\n\n    if (stringifier.stringify) stringifier = stringifier.stringify;\n    var result = '';\n    stringifier(this, function (i) {\n      result += i;\n    });\n    return result;\n  }\n  /**\n   * Returns an exact clone of the node.\n   *\n   * The resulting cloned node and its (cloned) children will retain\n   * code style properties.\n   *\n   * @param {object} [overrides] New properties to override in the clone.\n   *\n   * @example\n   * decl.raws.before    //=> \"\\n  \"\n   * const cloned = decl.clone({ prop: '-moz-' + decl.prop })\n   * cloned.raws.before  //=> \"\\n  \"\n   * cloned.toString()   //=> -moz-transform: scale(0)\n   *\n   * @return {Node} Clone of the node.\n   */\n  ;\n\n  _proto.clone = function clone(overrides) {\n    if (overrides === void 0) {\n      overrides = {};\n    }\n\n    var cloned = cloneNode(this);\n\n    for (var name in overrides) {\n      cloned[name] = overrides[name];\n    }\n\n    return cloned;\n  }\n  /**\n   * Shortcut to clone the node and insert the resulting cloned node\n   * before the current node.\n   *\n   * @param {object} [overrides] Mew properties to override in the clone.\n   *\n   * @example\n   * decl.cloneBefore({ prop: '-moz-' + decl.prop })\n   *\n   * @return {Node} New node\n   */\n  ;\n\n  _proto.cloneBefore = function cloneBefore(overrides) {\n    if (overrides === void 0) {\n      overrides = {};\n    }\n\n    var cloned = this.clone(overrides);\n    this.parent.insertBefore(this, cloned);\n    return cloned;\n  }\n  /**\n   * Shortcut to clone the node and insert the resulting cloned node\n   * after the current node.\n   *\n   * @param {object} [overrides] New properties to override in the clone.\n   *\n   * @return {Node} New node.\n   */\n  ;\n\n  _proto.cloneAfter = function cloneAfter(overrides) {\n    if (overrides === void 0) {\n      overrides = {};\n    }\n\n    var cloned = this.clone(overrides);\n    this.parent.insertAfter(this, cloned);\n    return cloned;\n  }\n  /**\n   * Inserts node(s) before the current node and removes the current node.\n   *\n   * @param {...Node} nodes Mode(s) to replace current one.\n   *\n   * @example\n   * if (atrule.name === 'mixin') {\n   *   atrule.replaceWith(mixinRules[atrule.params])\n   * }\n   *\n   * @return {Node} Current node to methods chain.\n   */\n  ;\n\n  _proto.replaceWith = function replaceWith() {\n    if (this.parent) {\n      for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) {\n        nodes[_key] = arguments[_key];\n      }\n\n      for (var _i = 0, _nodes = nodes; _i < _nodes.length; _i++) {\n        var node = _nodes[_i];\n        this.parent.insertBefore(this, node);\n      }\n\n      this.remove();\n    }\n\n    return this;\n  }\n  /**\n   * Returns the next child of the node’s parent.\n   * Returns `undefined` if the current node is the last child.\n   *\n   * @return {Node|undefined} Next node.\n   *\n   * @example\n   * if (comment.text === 'delete next') {\n   *   const next = comment.next()\n   *   if (next) {\n   *     next.remove()\n   *   }\n   * }\n   */\n  ;\n\n  _proto.next = function next() {\n    if (!this.parent) return undefined;\n    var index = this.parent.index(this);\n    return this.parent.nodes[index + 1];\n  }\n  /**\n   * Returns the previous child of the node’s parent.\n   * Returns `undefined` if the current node is the first child.\n   *\n   * @return {Node|undefined} Previous node.\n   *\n   * @example\n   * const annotation = decl.prev()\n   * if (annotation.type === 'comment') {\n   *   readAnnotation(annotation.text)\n   * }\n   */\n  ;\n\n  _proto.prev = function prev() {\n    if (!this.parent) return undefined;\n    var index = this.parent.index(this);\n    return this.parent.nodes[index - 1];\n  }\n  /**\n   * Insert new node before current node to current node’s parent.\n   *\n   * Just alias for `node.parent.insertBefore(node, add)`.\n   *\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * decl.before('content: \"\"')\n   */\n  ;\n\n  _proto.before = function before(add) {\n    this.parent.insertBefore(this, add);\n    return this;\n  }\n  /**\n   * Insert new node after current node to current node’s parent.\n   *\n   * Just alias for `node.parent.insertAfter(node, add)`.\n   *\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * decl.after('color: black')\n   */\n  ;\n\n  _proto.after = function after(add) {\n    this.parent.insertAfter(this, add);\n    return this;\n  };\n\n  _proto.toJSON = function toJSON() {\n    var fixed = {};\n\n    for (var name in this) {\n      if (!this.hasOwnProperty(name)) continue;\n      if (name === 'parent') continue;\n      var value = this[name];\n\n      if (value instanceof Array) {\n        fixed[name] = value.map(function (i) {\n          if (typeof i === 'object' && i.toJSON) {\n            return i.toJSON();\n          } else {\n            return i;\n          }\n        });\n      } else if (typeof value === 'object' && value.toJSON) {\n        fixed[name] = value.toJSON();\n      } else {\n        fixed[name] = value;\n      }\n    }\n\n    return fixed;\n  }\n  /**\n   * Returns a {@link Node#raws} value. If the node is missing\n   * the code style property (because the node was manually built or cloned),\n   * PostCSS will try to autodetect the code style property by looking\n   * at other nodes in the tree.\n   *\n   * @param {string} prop          Name of code style property.\n   * @param {string} [defaultType] Name of default value, it can be missed\n   *                               if the value is the same as prop.\n   *\n   * @example\n   * const root = postcss.parse('a { background: white }')\n   * root.nodes[0].append({ prop: 'color', value: 'black' })\n   * root.nodes[0].nodes[1].raws.before   //=> undefined\n   * root.nodes[0].nodes[1].raw('before') //=> ' '\n   *\n   * @return {string} Code style value.\n   */\n  ;\n\n  _proto.raw = function raw(prop, defaultType) {\n    var str = new _stringifier.default();\n    return str.raw(this, prop, defaultType);\n  }\n  /**\n   * Finds the Root instance of the node’s tree.\n   *\n   * @example\n   * root.nodes[0].nodes[0].root() === root\n   *\n   * @return {Root} Root parent.\n   */\n  ;\n\n  _proto.root = function root() {\n    var result = this;\n\n    while (result.parent) {\n      result = result.parent;\n    }\n\n    return result;\n  }\n  /**\n   * Clear the code style properties for the node and its children.\n   *\n   * @param {boolean} [keepBetween] Keep the raws.between symbols.\n   *\n   * @return {undefined}\n   *\n   * @example\n   * node.raws.before  //=> ' '\n   * node.cleanRaws()\n   * node.raws.before  //=> undefined\n   */\n  ;\n\n  _proto.cleanRaws = function cleanRaws(keepBetween) {\n    delete this.raws.before;\n    delete this.raws.after;\n    if (!keepBetween) delete this.raws.between;\n  };\n\n  _proto.positionInside = function positionInside(index) {\n    var string = this.toString();\n    var column = this.source.start.column;\n    var line = this.source.start.line;\n\n    for (var i = 0; i < index; i++) {\n      if (string[i] === '\\n') {\n        column = 1;\n        line += 1;\n      } else {\n        column += 1;\n      }\n    }\n\n    return {\n      line: line,\n      column: column\n    };\n  };\n\n  _proto.positionBy = function positionBy(opts) {\n    var pos = this.source.start;\n\n    if (opts.index) {\n      pos = this.positionInside(opts.index);\n    } else if (opts.word) {\n      var index = this.toString().indexOf(opts.word);\n      if (index !== -1) pos = this.positionInside(index);\n    }\n\n    return pos;\n  }\n  /**\n   * @memberof Node#\n   * @member {string} type String representing the node’s type.\n   *                       Possible values are `root`, `atrule`, `rule`,\n   *                       `decl`, or `comment`.\n   *\n   * @example\n   * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n   */\n\n  /**\n   * @memberof Node#\n   * @member {Container} parent The node’s parent node.\n   *\n   * @example\n   * root.nodes[0].parent === root\n   */\n\n  /**\n   * @memberof Node#\n   * @member {source} source The input source of the node.\n   *\n   * The property is used in source map generation.\n   *\n   * If you create a node manually (e.g., with `postcss.decl()`),\n   * that node will not have a `source` property and will be absent\n   * from the source map. For this reason, the plugin developer should\n   * consider cloning nodes to create new ones (in which case the new node’s\n   * source will reference the original, cloned node) or setting\n   * the `source` property manually.\n   *\n   * ```js\n   * // Bad\n   * const prefixed = postcss.decl({\n   *   prop: '-moz-' + decl.prop,\n   *   value: decl.value\n   * })\n   *\n   * // Good\n   * const prefixed = decl.clone({ prop: '-moz-' + decl.prop })\n   * ```\n   *\n   * ```js\n   * if (atrule.name === 'add-link') {\n   *   const rule = postcss.rule({ selector: 'a', source: atrule.source })\n   *   atrule.parent.insertBefore(atrule, rule)\n   * }\n   * ```\n   *\n   * @example\n   * decl.source.input.from //=> '/home/ai/a.sass'\n   * decl.source.start      //=> { line: 10, column: 2 }\n   * decl.source.end        //=> { line: 10, column: 12 }\n   */\n\n  /**\n   * @memberof Node#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node. It also stores `*`\n   *   and `_` symbols before the declaration (IE hack).\n   * * `after`: the space symbols after the last child of the node\n   *   to the end of the node.\n   * * `between`: the symbols between the property and value\n   *   for declarations, selector and `{` for rules, or last parameter\n   *   and `{` for at-rules.\n   * * `semicolon`: contains true if the last child has\n   *   an (optional) semicolon.\n   * * `afterName`: the space between the at-rule name and its parameters.\n   * * `left`: the space symbols between `/*` and the comment’s text.\n   * * `right`: the space symbols between the comment’s text\n   *   and <code>*&#47;</code>.\n   * * `important`: the content of the important statement,\n   *   if it is not just `!important`.\n   *\n   * PostCSS cleans selectors, declaration values and at-rule parameters\n   * from comments and extra spaces, but it stores origin content in raws\n   * properties. As such, if you don’t change a declaration’s value,\n   * PostCSS will use the raw value with comments.\n   *\n   * @example\n   * const root = postcss.parse('a {\\n  color:black\\n}')\n   * root.first.first.raws //=> { before: '\\n  ', between: ':' }\n   */\n  ;\n\n  return Node;\n}();\n\nvar _default = Node;\n/**\n * @typedef {object} position\n * @property {number} line   Source line in file.\n * @property {number} column Source column in file.\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input    {@link Input} with input file\n * @property {position} start The starting position of the node’s source.\n * @property {position} end   The ending position of the node’s source.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuZXM2Il0sIm5hbWVzIjpbImNsb25lTm9kZSIsIm9iaiIsInBhcmVudCIsImNsb25lZCIsImNvbnN0cnVjdG9yIiwiaSIsImhhc093blByb3BlcnR5IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJtYXAiLCJqIiwiTm9kZSIsImRlZmF1bHRzIiwicmF3cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hbWUiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcHRzIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImlucHV0IiwibGluZSIsImNvbHVtbiIsIkNzc1N5bnRheEVycm9yIiwid2FybiIsInJlc3VsdCIsInRleHQiLCJkYXRhIiwibm9kZSIsInJlbW92ZSIsInJlbW92ZUNoaWxkIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJzdHJpbmdpZmllciIsImNsb25lIiwib3ZlcnJpZGVzIiwiY2xvbmVCZWZvcmUiLCJpbnNlcnRCZWZvcmUiLCJjbG9uZUFmdGVyIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlV2l0aCIsIm5vZGVzIiwibmV4dCIsImluZGV4IiwicHJldiIsImJlZm9yZSIsImFkZCIsImFmdGVyIiwidG9KU09OIiwiZml4ZWQiLCJyYXciLCJwcm9wIiwiZGVmYXVsdFR5cGUiLCJzdHIiLCJTdHJpbmdpZmllciIsInJvb3QiLCJjbGVhblJhd3MiLCJrZWVwQmV0d2VlbiIsImJldHdlZW4iLCJwb3NpdGlvbkluc2lkZSIsInN0cmluZyIsInN0YXJ0Iiwid29yZCIsImluZGV4T2YiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW9CQyxHQUFwQixFQUF5QkMsTUFBekIsRUFBaUM7QUFDL0IsTUFBSUMsTUFBTSxHQUFHLElBQUlGLEdBQUcsQ0FBQ0csV0FBUixFQUFiOztBQUVBLE9BQUssSUFBSUMsQ0FBVCxJQUFjSixHQUFkLEVBQW1C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Y3NzLXN5bnRheC1lcnJvcidcbmltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJ1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeSdcblxuZnVuY3Rpb24gY2xvbmVOb2RlIChvYmosIHBhcmVudCkge1xuICBsZXQgY2xvbmVkID0gbmV3IG9iai5jb25zdHJ1Y3RvcigpXG5cbiAgZm9yIChsZXQgaSBpbiBvYmopIHtcbiAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShpKSkgY29udGludWVcbiAgICBsZXQgdmFsdWUgPSBvYmpbaV1cbiAgICBsZXQgdHlwZSA9IHR5cGVvZiB2YWx1ZVxuXG4gICAgaWYgKGkgPT09ICdwYXJlbnQnICYmIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAocGFyZW50KSBjbG9uZWRbaV0gPSBwYXJlbnRcbiAgICB9IGVsc2UgaWYgKGkgPT09ICdzb3VyY2UnKSB7XG4gICAgICBjbG9uZWRbaV0gPSB2YWx1ZVxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY2xvbmVkW2ldID0gdmFsdWUubWFwKGogPT4gY2xvbmVOb2RlKGosIGNsb25lZCkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkgdmFsdWUgPSBjbG9uZU5vZGUodmFsdWUpXG4gICAgICBjbG9uZWRbaV0gPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbG9uZWRcbn1cblxuLyoqXG4gKiBBbGwgbm9kZSBjbGFzc2VzIGluaGVyaXQgdGhlIGZvbGxvd2luZyBjb21tb24gbWV0aG9kcy5cbiAqXG4gKiBAYWJzdHJhY3RcbiAqL1xuY2xhc3MgTm9kZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBWYWx1ZSBmb3Igbm9kZSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzID0geyB9KSB7XG4gICAgdGhpcy5yYXdzID0geyB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICh0eXBlb2YgZGVmYXVsdHMgIT09ICdvYmplY3QnICYmIHR5cGVvZiBkZWZhdWx0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdQb3N0Q1NTIG5vZGVzIGNvbnN0cnVjdG9yIGFjY2VwdHMgb2JqZWN0LCBub3QgJyArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGVmYXVsdHMpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgbmFtZSBpbiBkZWZhdWx0cykge1xuICAgICAgdGhpc1tuYW1lXSA9IGRlZmF1bHRzW25hbWVdXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBgQ3NzU3ludGF4RXJyb3JgIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIHBvc2l0aW9uXG4gICAqIG9mIHRoZSBub2RlIGluIHRoZSBzb3VyY2UsIHNob3dpbmcgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgYW5kIGFsc29cbiAgICogYSBzbWFsbCBleGNlcnB0IHRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLlxuICAgKlxuICAgKiBJZiBwcmVzZW50LCBhbiBpbnB1dCBzb3VyY2UgbWFwIHdpbGwgYmUgdXNlZCB0byBnZXQgdGhlIG9yaWdpbmFsIHBvc2l0aW9uXG4gICAqIG9mIHRoZSBzb3VyY2UsIGV2ZW4gZnJvbSBhIHByZXZpb3VzIGNvbXBpbGF0aW9uIHN0ZXBcbiAgICogKGUuZy4sIGZyb20gU2FzcyBjb21waWxhdGlvbikuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHByb2R1Y2VzIHZlcnkgdXNlZnVsIGVycm9yIG1lc3NhZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAgICAgRXJyb3IgZGVzY3JpcHRpb24uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0c10gICAgICBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5wbHVnaW4gUGx1Z2luIG5hbWUgdGhhdCBjcmVhdGVkIHRoaXMgZXJyb3IuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3N0Q1NTIHdpbGwgc2V0IGl0IGF1dG9tYXRpY2FsbHkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICBBIHdvcmQgaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdHMuaW5kZXggIEFuIGluZGV4IGluc2lkZSBhIG5vZGXigJlzIHN0cmluZyB0aGF0IHNob3VsZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgaGlnaGxpZ2h0ZWQgYXMgdGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEByZXR1cm4ge0Nzc1N5bnRheEVycm9yfSBFcnJvciBvYmplY3QgdG8gdGhyb3cgaXQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmICghdmFyaWFibGVzW25hbWVdKSB7XG4gICAqICAgdGhyb3cgZGVjbC5lcnJvcignVW5rbm93biB2YXJpYWJsZSAnICsgbmFtZSwgeyB3b3JkOiBuYW1lIH0pXG4gICAqICAgLy8gQ3NzU3ludGF4RXJyb3I6IHBvc3Rjc3MtdmFyczphLnNhc3M6NDozOiBVbmtub3duIHZhcmlhYmxlICRibGFja1xuICAgKiAgIC8vICAgY29sb3I6ICRibGFja1xuICAgKiAgIC8vIGFcbiAgICogICAvLyAgICAgICAgICBeXG4gICAqICAgLy8gICBiYWNrZ3JvdW5kOiB3aGl0ZVxuICAgKiB9XG4gICAqL1xuICBlcnJvciAobWVzc2FnZSwgb3B0cyA9IHsgfSkge1xuICAgIGlmICh0aGlzLnNvdXJjZSkge1xuICAgICAgbGV0IHBvcyA9IHRoaXMucG9zaXRpb25CeShvcHRzKVxuICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmlucHV0LmVycm9yKG1lc3NhZ2UsIHBvcy5saW5lLCBwb3MuY29sdW1uLCBvcHRzKVxuICAgIH1cbiAgICByZXR1cm4gbmV3IENzc1N5bnRheEVycm9yKG1lc3NhZ2UpXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciB7QGxpbmsgUmVzdWx0I3dhcm59LlxuICAgKlxuICAgKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0ICAgICAgVGhlIHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgIFdhcm5pbmcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRzXSAgICAgIE9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIFBsdWdpbiBuYW1lIHRoYXQgY3JlYXRlZCB0aGlzIHdhcm5pbmcuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3N0Q1NTIHdpbGwgc2V0IGl0IGF1dG9tYXRpY2FsbHkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICBBIHdvcmQgaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgQW4gaW5kZXggaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSB3YXJuaW5nLlxuICAgKlxuICAgKiBAcmV0dXJuIHtXYXJuaW5nfSBDcmVhdGVkIHdhcm5pbmcgb2JqZWN0LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBwbHVnaW4gPSBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1kZXByZWNhdGVkJywgKCkgPT4ge1xuICAgKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gICAqICAgICByb290LndhbGtEZWNscygnYmFkJywgZGVjbCA9PiB7XG4gICAqICAgICAgIGRlY2wud2FybihyZXN1bHQsICdEZXByZWNhdGVkIHByb3BlcnR5IGJhZCcpXG4gICAqICAgICB9KVxuICAgKiAgIH1cbiAgICogfSlcbiAgICovXG4gIHdhcm4gKHJlc3VsdCwgdGV4dCwgb3B0cykge1xuICAgIGxldCBkYXRhID0geyBub2RlOiB0aGlzIH1cbiAgICBmb3IgKGxldCBpIGluIG9wdHMpIGRhdGFbaV0gPSBvcHRzW2ldXG4gICAgcmV0dXJuIHJlc3VsdC53YXJuKHRleHQsIGRhdGEpXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgbm9kZSBmcm9tIGl0cyBwYXJlbnQgYW5kIGNsZWFucyB0aGUgcGFyZW50IHByb3BlcnRpZXNcbiAgICogZnJvbSB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAoZGVjbC5wcm9wLm1hdGNoKC9eLXdlYmtpdC0vKSkge1xuICAgKiAgIGRlY2wucmVtb3ZlKClcbiAgICogfVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBOb2RlIHRvIG1ha2UgY2FsbHMgY2hhaW4uXG4gICAqL1xuICByZW1vdmUgKCkge1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcylcbiAgICB9XG4gICAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBDU1Mgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdpZmllcnxzeW50YXh9IFtzdHJpbmdpZmllcl0gQSBzeW50YXggdG8gdXNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHN0cmluZyBnZW5lcmF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENTUyBzdHJpbmcgb2YgdGhpcyBub2RlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnIH0pLnRvU3RyaW5nKCkgLy89PiBcImEge31cIlxuICAgKi9cbiAgdG9TdHJpbmcgKHN0cmluZ2lmaWVyID0gc3RyaW5naWZ5KSB7XG4gICAgaWYgKHN0cmluZ2lmaWVyLnN0cmluZ2lmeSkgc3RyaW5naWZpZXIgPSBzdHJpbmdpZmllci5zdHJpbmdpZnlcbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICBzdHJpbmdpZmllcih0aGlzLCBpID0+IHtcbiAgICAgIHJlc3VsdCArPSBpXG4gICAgfSlcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleGFjdCBjbG9uZSBvZiB0aGUgbm9kZS5cbiAgICpcbiAgICogVGhlIHJlc3VsdGluZyBjbG9uZWQgbm9kZSBhbmQgaXRzIChjbG9uZWQpIGNoaWxkcmVuIHdpbGwgcmV0YWluXG4gICAqIGNvZGUgc3R5bGUgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvdmVycmlkZXNdIE5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5yYXdzLmJlZm9yZSAgICAvLz0+IFwiXFxuICBcIlxuICAgKiBjb25zdCBjbG9uZWQgPSBkZWNsLmNsb25lKHsgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCB9KVxuICAgKiBjbG9uZWQucmF3cy5iZWZvcmUgIC8vPT4gXCJcXG4gIFwiXG4gICAqIGNsb25lZC50b1N0cmluZygpICAgLy89PiAtbW96LXRyYW5zZm9ybTogc2NhbGUoMClcbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gQ2xvbmUgb2YgdGhlIG5vZGUuXG4gICAqL1xuICBjbG9uZSAob3ZlcnJpZGVzID0geyB9KSB7XG4gICAgbGV0IGNsb25lZCA9IGNsb25lTm9kZSh0aGlzKVxuICAgIGZvciAobGV0IG5hbWUgaW4gb3ZlcnJpZGVzKSB7XG4gICAgICBjbG9uZWRbbmFtZV0gPSBvdmVycmlkZXNbbmFtZV1cbiAgICB9XG4gICAgcmV0dXJuIGNsb25lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNob3J0Y3V0IHRvIGNsb25lIHRoZSBub2RlIGFuZCBpbnNlcnQgdGhlIHJlc3VsdGluZyBjbG9uZWQgbm9kZVxuICAgKiBiZWZvcmUgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvdmVycmlkZXNdIE1ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSlcbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gTmV3IG5vZGVcbiAgICovXG4gIGNsb25lQmVmb3JlIChvdmVycmlkZXMgPSB7IH0pIHtcbiAgICBsZXQgY2xvbmVkID0gdGhpcy5jbG9uZShvdmVycmlkZXMpXG4gICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIGNsb25lZClcbiAgICByZXR1cm4gY2xvbmVkXG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgdG8gY2xvbmUgdGhlIG5vZGUgYW5kIGluc2VydCB0aGUgcmVzdWx0aW5nIGNsb25lZCBub2RlXG4gICAqIGFmdGVyIHRoZSBjdXJyZW50IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3ZlcnJpZGVzXSBOZXcgcHJvcGVydGllcyB0byBvdmVycmlkZSBpbiB0aGUgY2xvbmUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IE5ldyBub2RlLlxuICAgKi9cbiAgY2xvbmVBZnRlciAob3ZlcnJpZGVzID0geyB9KSB7XG4gICAgbGV0IGNsb25lZCA9IHRoaXMuY2xvbmUob3ZlcnJpZGVzKVxuICAgIHRoaXMucGFyZW50Lmluc2VydEFmdGVyKHRoaXMsIGNsb25lZClcbiAgICByZXR1cm4gY2xvbmVkXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0cyBub2RlKHMpIGJlZm9yZSB0aGUgY3VycmVudCBub2RlIGFuZCByZW1vdmVzIHRoZSBjdXJyZW50IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uTm9kZX0gbm9kZXMgTW9kZShzKSB0byByZXBsYWNlIGN1cnJlbnQgb25lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAoYXRydWxlLm5hbWUgPT09ICdtaXhpbicpIHtcbiAgICogICBhdHJ1bGUucmVwbGFjZVdpdGgobWl4aW5SdWxlc1thdHJ1bGUucGFyYW1zXSlcbiAgICogfVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBDdXJyZW50IG5vZGUgdG8gbWV0aG9kcyBjaGFpbi5cbiAgICovXG4gIHJlcGxhY2VXaXRoICguLi5ub2Rlcykge1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcywgbm9kZSlcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW1vdmUoKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmV4dCBjaGlsZCBvZiB0aGUgbm9kZeKAmXMgcGFyZW50LlxuICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIGxhc3QgY2hpbGQuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV8dW5kZWZpbmVkfSBOZXh0IG5vZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChjb21tZW50LnRleHQgPT09ICdkZWxldGUgbmV4dCcpIHtcbiAgICogICBjb25zdCBuZXh0ID0gY29tbWVudC5uZXh0KClcbiAgICogICBpZiAobmV4dCkge1xuICAgKiAgICAgbmV4dC5yZW1vdmUoKVxuICAgKiAgIH1cbiAgICogfVxuICAgKi9cbiAgbmV4dCAoKSB7XG4gICAgaWYgKCF0aGlzLnBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGxldCBpbmRleCA9IHRoaXMucGFyZW50LmluZGV4KHRoaXMpXG4gICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4ICsgMV1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwcmV2aW91cyBjaGlsZCBvZiB0aGUgbm9kZeKAmXMgcGFyZW50LlxuICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIGZpcnN0IGNoaWxkLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfHVuZGVmaW5lZH0gUHJldmlvdXMgbm9kZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgYW5ub3RhdGlvbiA9IGRlY2wucHJldigpXG4gICAqIGlmIChhbm5vdGF0aW9uLnR5cGUgPT09ICdjb21tZW50Jykge1xuICAgKiAgIHJlYWRBbm5vdGF0aW9uKGFubm90YXRpb24udGV4dClcbiAgICogfVxuICAgKi9cbiAgcHJldiAoKSB7XG4gICAgaWYgKCF0aGlzLnBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGxldCBpbmRleCA9IHRoaXMucGFyZW50LmluZGV4KHRoaXMpXG4gICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4IC0gMV1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbmV3IG5vZGUgYmVmb3JlIGN1cnJlbnQgbm9kZSB0byBjdXJyZW50IG5vZGXigJlzIHBhcmVudC5cbiAgICpcbiAgICogSnVzdCBhbGlhcyBmb3IgYG5vZGUucGFyZW50Lmluc2VydEJlZm9yZShub2RlLCBhZGQpYC5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgTmV3IG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5iZWZvcmUoJ2NvbnRlbnQ6IFwiXCInKVxuICAgKi9cbiAgYmVmb3JlIChhZGQpIHtcbiAgICB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcywgYWRkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IG5ldyBub2RlIGFmdGVyIGN1cnJlbnQgbm9kZSB0byBjdXJyZW50IG5vZGXigJlzIHBhcmVudC5cbiAgICpcbiAgICogSnVzdCBhbGlhcyBmb3IgYG5vZGUucGFyZW50Lmluc2VydEFmdGVyKG5vZGUsIGFkZClgLlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLmFmdGVyKCdjb2xvcjogYmxhY2snKVxuICAgKi9cbiAgYWZ0ZXIgKGFkZCkge1xuICAgIHRoaXMucGFyZW50Lmluc2VydEFmdGVyKHRoaXMsIGFkZClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdG9KU09OICgpIHtcbiAgICBsZXQgZml4ZWQgPSB7IH1cblxuICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcykge1xuICAgICAgaWYgKCF0aGlzLmhhc093blByb3BlcnR5KG5hbWUpKSBjb250aW51ZVxuICAgICAgaWYgKG5hbWUgPT09ICdwYXJlbnQnKSBjb250aW51ZVxuICAgICAgbGV0IHZhbHVlID0gdGhpc1tuYW1lXVxuXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlLm1hcChpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIGkudG9KU09OKSB7XG4gICAgICAgICAgICByZXR1cm4gaS50b0pTT04oKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS50b0pTT04pIHtcbiAgICAgICAgZml4ZWRbbmFtZV0gPSB2YWx1ZS50b0pTT04oKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZml4ZWRbbmFtZV0gPSB2YWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaXhlZFxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB7QGxpbmsgTm9kZSNyYXdzfSB2YWx1ZS4gSWYgdGhlIG5vZGUgaXMgbWlzc2luZ1xuICAgKiB0aGUgY29kZSBzdHlsZSBwcm9wZXJ0eSAoYmVjYXVzZSB0aGUgbm9kZSB3YXMgbWFudWFsbHkgYnVpbHQgb3IgY2xvbmVkKSxcbiAgICogUG9zdENTUyB3aWxsIHRyeSB0byBhdXRvZGV0ZWN0IHRoZSBjb2RlIHN0eWxlIHByb3BlcnR5IGJ5IGxvb2tpbmdcbiAgICogYXQgb3RoZXIgbm9kZXMgaW4gdGhlIHRyZWUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wICAgICAgICAgIE5hbWUgb2YgY29kZSBzdHlsZSBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkZWZhdWx0VHlwZV0gTmFtZSBvZiBkZWZhdWx0IHZhbHVlLCBpdCBjYW4gYmUgbWlzc2VkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBwcm9wLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGJhY2tncm91bmQ6IHdoaXRlIH0nKVxuICAgKiByb290Lm5vZGVzWzBdLmFwcGVuZCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pXG4gICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3cy5iZWZvcmUgICAvLz0+IHVuZGVmaW5lZFxuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzFdLnJhdygnYmVmb3JlJykgLy89PiAnICdcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBDb2RlIHN0eWxlIHZhbHVlLlxuICAgKi9cbiAgcmF3IChwcm9wLCBkZWZhdWx0VHlwZSkge1xuICAgIGxldCBzdHIgPSBuZXcgU3RyaW5naWZpZXIoKVxuICAgIHJldHVybiBzdHIucmF3KHRoaXMsIHByb3AsIGRlZmF1bHRUeXBlKVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBSb290IGluc3RhbmNlIG9mIHRoZSBub2Rl4oCZcyB0cmVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnJvb3QoKSA9PT0gcm9vdFxuICAgKlxuICAgKiBAcmV0dXJuIHtSb290fSBSb290IHBhcmVudC5cbiAgICovXG4gIHJvb3QgKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzXG4gICAgd2hpbGUgKHJlc3VsdC5wYXJlbnQpIHJlc3VsdCA9IHJlc3VsdC5wYXJlbnRcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGNvZGUgc3R5bGUgcHJvcGVydGllcyBmb3IgdGhlIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBba2VlcEJldHdlZW5dIEtlZXAgdGhlIHJhd3MuYmV0d2VlbiBzeW1ib2xzLlxuICAgKlxuICAgKiBAcmV0dXJuIHt1bmRlZmluZWR9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIG5vZGUucmF3cy5iZWZvcmUgIC8vPT4gJyAnXG4gICAqIG5vZGUuY2xlYW5SYXdzKClcbiAgICogbm9kZS5yYXdzLmJlZm9yZSAgLy89PiB1bmRlZmluZWRcbiAgICovXG4gIGNsZWFuUmF3cyAoa2VlcEJldHdlZW4pIHtcbiAgICBkZWxldGUgdGhpcy5yYXdzLmJlZm9yZVxuICAgIGRlbGV0ZSB0aGlzLnJhd3MuYWZ0ZXJcbiAgICBpZiAoIWtlZXBCZXR3ZWVuKSBkZWxldGUgdGhpcy5yYXdzLmJldHdlZW5cbiAgfVxuXG4gIHBvc2l0aW9uSW5zaWRlIChpbmRleCkge1xuICAgIGxldCBzdHJpbmcgPSB0aGlzLnRvU3RyaW5nKClcbiAgICBsZXQgY29sdW1uID0gdGhpcy5zb3VyY2Uuc3RhcnQuY29sdW1uXG4gICAgbGV0IGxpbmUgPSB0aGlzLnNvdXJjZS5zdGFydC5saW5lXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4OyBpKyspIHtcbiAgICAgIGlmIChzdHJpbmdbaV0gPT09ICdcXG4nKSB7XG4gICAgICAgIGNvbHVtbiA9IDFcbiAgICAgICAgbGluZSArPSAxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2x1bW4gKz0gMVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGxpbmUsIGNvbHVtbiB9XG4gIH1cblxuICBwb3NpdGlvbkJ5IChvcHRzKSB7XG4gICAgbGV0IHBvcyA9IHRoaXMuc291cmNlLnN0YXJ0XG4gICAgaWYgKG9wdHMuaW5kZXgpIHtcbiAgICAgIHBvcyA9IHRoaXMucG9zaXRpb25JbnNpZGUob3B0cy5pbmRleClcbiAgICB9IGVsc2UgaWYgKG9wdHMud29yZCkge1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy50b1N0cmluZygpLmluZGV4T2Yob3B0cy53b3JkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkgcG9zID0gdGhpcy5wb3NpdGlvbkluc2lkZShpbmRleClcbiAgICB9XG4gICAgcmV0dXJuIHBvc1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBOb2RlI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHR5cGUgU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbm9kZeKAmXMgdHlwZS5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlIHZhbHVlcyBhcmUgYHJvb3RgLCBgYXRydWxlYCwgYHJ1bGVgLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgYGRlY2xgLCBvciBgY29tbWVudGAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pLnR5cGUgLy89PiAnZGVjbCdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBOb2RlI1xuICAgKiBAbWVtYmVyIHtDb250YWluZXJ9IHBhcmVudCBUaGUgbm9kZeKAmXMgcGFyZW50IG5vZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qubm9kZXNbMF0ucGFyZW50ID09PSByb290XG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgTm9kZSNcbiAgICogQG1lbWJlciB7c291cmNlfSBzb3VyY2UgVGhlIGlucHV0IHNvdXJjZSBvZiB0aGUgbm9kZS5cbiAgICpcbiAgICogVGhlIHByb3BlcnR5IGlzIHVzZWQgaW4gc291cmNlIG1hcCBnZW5lcmF0aW9uLlxuICAgKlxuICAgKiBJZiB5b3UgY3JlYXRlIGEgbm9kZSBtYW51YWxseSAoZS5nLiwgd2l0aCBgcG9zdGNzcy5kZWNsKClgKSxcbiAgICogdGhhdCBub2RlIHdpbGwgbm90IGhhdmUgYSBgc291cmNlYCBwcm9wZXJ0eSBhbmQgd2lsbCBiZSBhYnNlbnRcbiAgICogZnJvbSB0aGUgc291cmNlIG1hcC4gRm9yIHRoaXMgcmVhc29uLCB0aGUgcGx1Z2luIGRldmVsb3BlciBzaG91bGRcbiAgICogY29uc2lkZXIgY2xvbmluZyBub2RlcyB0byBjcmVhdGUgbmV3IG9uZXMgKGluIHdoaWNoIGNhc2UgdGhlIG5ldyBub2Rl4oCZc1xuICAgKiBzb3VyY2Ugd2lsbCByZWZlcmVuY2UgdGhlIG9yaWdpbmFsLCBjbG9uZWQgbm9kZSkgb3Igc2V0dGluZ1xuICAgKiB0aGUgYHNvdXJjZWAgcHJvcGVydHkgbWFudWFsbHkuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIC8vIEJhZFxuICAgKiBjb25zdCBwcmVmaXhlZCA9IHBvc3Rjc3MuZGVjbCh7XG4gICAqICAgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCxcbiAgICogICB2YWx1ZTogZGVjbC52YWx1ZVxuICAgKiB9KVxuICAgKlxuICAgKiAvLyBHb29kXG4gICAqIGNvbnN0IHByZWZpeGVkID0gZGVjbC5jbG9uZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSlcbiAgICogYGBgXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGlmIChhdHJ1bGUubmFtZSA9PT0gJ2FkZC1saW5rJykge1xuICAgKiAgIGNvbnN0IHJ1bGUgPSBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnLCBzb3VyY2U6IGF0cnVsZS5zb3VyY2UgfSlcbiAgICogICBhdHJ1bGUucGFyZW50Lmluc2VydEJlZm9yZShhdHJ1bGUsIHJ1bGUpXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGRlY2wuc291cmNlLmlucHV0LmZyb20gLy89PiAnL2hvbWUvYWkvYS5zYXNzJ1xuICAgKiBkZWNsLnNvdXJjZS5zdGFydCAgICAgIC8vPT4geyBsaW5lOiAxMCwgY29sdW1uOiAyIH1cbiAgICogZGVjbC5zb3VyY2UuZW5kICAgICAgICAvLz0+IHsgbGluZTogMTAsIGNvbHVtbjogMTIgfVxuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgbm9kZVxuICAgKiAgIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGUuXG4gICAqICogYGJldHdlZW5gOiB0aGUgc3ltYm9scyBiZXR3ZWVuIHRoZSBwcm9wZXJ0eSBhbmQgdmFsdWVcbiAgICogICBmb3IgZGVjbGFyYXRpb25zLCBzZWxlY3RvciBhbmQgYHtgIGZvciBydWxlcywgb3IgbGFzdCBwYXJhbWV0ZXJcbiAgICogICBhbmQgYHtgIGZvciBhdC1ydWxlcy5cbiAgICogKiBgc2VtaWNvbG9uYDogY29udGFpbnMgdHJ1ZSBpZiB0aGUgbGFzdCBjaGlsZCBoYXNcbiAgICogICBhbiAob3B0aW9uYWwpIHNlbWljb2xvbi5cbiAgICogKiBgYWZ0ZXJOYW1lYDogdGhlIHNwYWNlIGJldHdlZW4gdGhlIGF0LXJ1bGUgbmFtZSBhbmQgaXRzIHBhcmFtZXRlcnMuXG4gICAqICogYGxlZnRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIGAvKmAgYW5kIHRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHRcbiAgICogICBhbmQgPGNvZGU+KiYjNDc7PC9jb2RlPi5cbiAgICogKiBgaW1wb3J0YW50YDogdGhlIGNvbnRlbnQgb2YgdGhlIGltcG9ydGFudCBzdGF0ZW1lbnQsXG4gICAqICAgaWYgaXQgaXMgbm90IGp1c3QgYCFpbXBvcnRhbnRgLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBzZWxlY3RvcnMsIGRlY2xhcmF0aW9uIHZhbHVlcyBhbmQgYXQtcnVsZSBwYXJhbWV0ZXJzXG4gICAqIGZyb20gY29tbWVudHMgYW5kIGV4dHJhIHNwYWNlcywgYnV0IGl0IHN0b3JlcyBvcmlnaW4gY29udGVudCBpbiByYXdzXG4gICAqIHByb3BlcnRpZXMuIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICogUG9zdENTUyB3aWxsIHVzZSB0aGUgcmF3IHZhbHVlIHdpdGggY29tbWVudHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHtcXG4gIGNvbG9yOmJsYWNrXFxufScpXG4gICAqIHJvb3QuZmlyc3QuZmlyc3QucmF3cyAvLz0+IHsgYmVmb3JlOiAnXFxuICAnLCBiZXR3ZWVuOiAnOicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgTm9kZVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHBvc2l0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGluZSAgIFNvdXJjZSBsaW5lIGluIGZpbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY29sdW1uIFNvdXJjZSBjb2x1bW4gaW4gZmlsZS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHNvdXJjZVxuICogQHByb3BlcnR5IHtJbnB1dH0gaW5wdXQgICAge0BsaW5rIElucHV0fSB3aXRoIGlucHV0IGZpbGVcbiAqIEBwcm9wZXJ0eSB7cG9zaXRpb259IHN0YXJ0IFRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgbm9kZeKAmXMgc291cmNlLlxuICogQHByb3BlcnR5IHtwb3NpdGlvbn0gZW5kICAgVGhlIGVuZGluZyBwb3NpdGlvbiBvZiB0aGUgbm9kZeKAmXMgc291cmNlLlxuICovXG4iXSwiZmlsZSI6Im5vZGUuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _stringifier = _interopRequireDefault(require(\"./stringifier\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringify(node, builder) {\n  var str = new _stringifier.default(builder);\n  str.stringify(node);\n}\n\nvar _default = stringify;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLElBQXBCLEVBQTBCQyxPQUExQixFQUFtQztBQUNqQyxNQUFJQyxHQUFHLEdBQUcsSUFBSUMsb0JBQUosQ0FBZ0JGLE9BQWhCLENBQVY7QUFDQUMsRUFBQUEsR0FBRyxDQUFDSCxTQUFKLENBQWNDLElBQWQ7QUFDRDs7ZUFFY0QsUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJ1xuXG5mdW5jdGlvbiBzdHJpbmdpZnkgKG5vZGUsIGJ1aWxkZXIpIHtcbiAgbGV0IHN0ciA9IG5ldyBTdHJpbmdpZmllcihidWlsZGVyKVxuICBzdHIuc3RyaW5naWZ5KG5vZGUpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeVxuIl0sImZpbGUiOiJzdHJpbmdpZnkuanMifQ==\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  if (path.length === 0) return '.';\n  var code = path.charCodeAt(0);\n  var hasRoot = code === 47 /*/*/;\n  var end = -1;\n  var matchedSlash = true;\n  for (var i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        if (!matchedSlash) {\n          end = i;\n          break;\n        }\n      } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.';\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/';\n  }\n  return path.slice(0, end);\n};\n\nfunction basename(path) {\n  if (typeof path !== 'string') path = path + '';\n\n  var start = 0;\n  var end = -1;\n  var matchedSlash = true;\n  var i;\n\n  for (i = path.length - 1; i >= 0; --i) {\n    if (path.charCodeAt(i) === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          start = i + 1;\n          break;\n        }\n      } else if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // path component\n      matchedSlash = false;\n      end = i + 1;\n    }\n  }\n\n  if (end === -1) return '';\n  return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n  var f = basename(path);\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\nexports.extname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  var startDot = -1;\n  var startPart = 0;\n  var end = -1;\n  var matchedSlash = true;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  var preDotState = 0;\n  for (var i = path.length - 1; i >= 0; --i) {\n    var code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          startPart = i + 1;\n          break;\n        }\n        continue;\n      }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === 46 /*.*/) {\n        // If this is our first dot, mark it as the start of our extension\n        if (startDot === -1)\n          startDot = i;\n        else if (preDotState !== 1)\n          preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n\n  if (startDot === -1 || end === -1 ||\n      // We saw a non-dot character immediately before the dot\n      preDotState === 0 ||\n      // The (right-most) trimmed path component is exactly '..'\n      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    return '';\n  }\n  return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nvar _input = _interopRequireDefault(require(\"./input\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(css, opts) {\n  var input = new _input.default(css, opts);\n  var parser = new _parser.default(input);\n\n  try {\n    parser.parse();\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (e.name === 'CssSyntaxError' && opts && opts.from) {\n        if (/\\.scss$/i.test(opts.from)) {\n          e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n        } else if (/\\.sass/i.test(opts.from)) {\n          e.message += '\\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser';\n        } else if (/\\.less$/i.test(opts.from)) {\n          e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n        }\n      }\n    }\n\n    throw e;\n  }\n\n  return parser.root;\n}\n\nvar _default = parse;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsImNzcyIsIm9wdHMiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwiZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm1lc3NhZ2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7O0FBRUEsU0FBU0EsS0FBVCxDQUFnQkMsR0FBaEIsRUFBcUJDLElBQXJCLEVBQTJCO0FBQ3pCLE1BQUlDLEtBQUssR0FBRyxJQUFJQyxjQUFKLENBQVVILEdBQVYsRUFBZUMsSUFBZixDQUFaO0FBQ0EsTUFBSUcsTUFBTSxHQUFHLElBQUlDLGVBQUosQ0FBV0gsS0FBWCxDQUFiOztBQUNBLE1BQUk7QUFDRkUsSUFBQUEsTUFBTSxDQUFDTCxLQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFFBQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDLFVBQUlILENBQUMsQ0FBQ0ksSUFBRixLQUFXLGdCQUFYLElBQStCVCxJQUEvQixJQUF1Q0EsSUFBSSxDQUFDVSxJQUFoRCxFQUFzRDtBQUNwRCxZQUFJLFdBQVdDLElBQVgsQ0FBZ0JYLElBQUksQ0FBQ1UsSUFBckIsQ0FBSixFQUFnQztBQUM5QkwsVUFBQUEsQ0FBQyxDQUFDTyxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdELFNBSkQsTUFJTyxJQUFJLFVBQVVELElBQVYsQ0FBZVgsSUFBSSxDQUFDVSxJQUFwQixDQUFKLEVBQStCO0FBQ3BDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0QsU0FKTSxNQUlBLElBQUksV0FBV0QsSUFBWCxDQUFnQlgsSUFBSSxDQUFDVSxJQUFyQixDQUFKLEVBQWdDO0FBQ3JDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0Q7QUFDRjtBQUNGOztBQUNELFVBQU1QLENBQU47QUFDRDs7QUFFRCxTQUFPRixNQUFNLENBQUNVLElBQWQ7QUFDRDs7ZUFFY2YsSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIgZnJvbSAnLi9wYXJzZXInXG5pbXBvcnQgSW5wdXQgZnJvbSAnLi9pbnB1dCdcblxuZnVuY3Rpb24gcGFyc2UgKGNzcywgb3B0cykge1xuICBsZXQgaW5wdXQgPSBuZXcgSW5wdXQoY3NzLCBvcHRzKVxuICBsZXQgcGFyc2VyID0gbmV3IFBhcnNlcihpbnB1dClcbiAgdHJ5IHtcbiAgICBwYXJzZXIucGFyc2UoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChlLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicgJiYgb3B0cyAmJiBvcHRzLmZyb20pIHtcbiAgICAgICAgaWYgKC9cXC5zY3NzJC9pLnRlc3Qob3B0cy5mcm9tKSkge1xuICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIFNDU1Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLXNjc3MgcGFyc2VyJ1xuICAgICAgICB9IGVsc2UgaWYgKC9cXC5zYXNzL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU2FzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2FzcyBwYXJzZXInXG4gICAgICAgIH0gZWxzZSBpZiAoL1xcLmxlc3MkL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgTGVzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3MtbGVzcyBwYXJzZXInXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgZVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlci5yb290XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlXG4iXSwiZmlsZSI6InBhcnNlLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\nvar Comment = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Comment, _Node);\n\n  function Comment(defaults) {\n    var _this;\n\n    _this = _Node.call(this, defaults) || this;\n    _this.type = 'comment';\n    return _this;\n  }\n  /**\n   * @memberof Comment#\n   * @member {string} text The comment’s text.\n   */\n\n  /**\n   * @memberof Comment#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node.\n   * * `left`: the space symbols between `/*` and the comment’s text.\n   * * `right`: the space symbols between the comment’s text.\n   */\n\n\n  return Comment;\n}(_node.default);\n\nvar _default = Comment;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1lbnQuZXM2Il0sIm5hbWVzIjpbIkNvbW1lbnQiLCJkZWZhdWx0cyIsInR5cGUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7SUFRTUEsTzs7O0FBQ0osbUJBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFDckIsNkJBQU1BLFFBQU47QUFDQSxVQUFLQyxJQUFMLEdBQVksU0FBWjtBQUZxQjtBQUd0QjtBQUVEOzs7OztBQUtBOzs7Ozs7Ozs7Ozs7Ozs7RUFYb0JDLGE7O2VBeUJQSCxPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb21tZW50IGJldHdlZW4gZGVjbGFyYXRpb25zIG9yIHN0YXRlbWVudHMgKHJ1bGUgYW5kIGF0LXJ1bGVzKS5cbiAqXG4gKiBDb21tZW50cyBpbnNpZGUgc2VsZWN0b3JzLCBhdC1ydWxlIHBhcmFtZXRlcnMsIG9yIGRlY2xhcmF0aW9uIHZhbHVlc1xuICogd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGByYXdzYCBwcm9wZXJ0aWVzIGV4cGxhaW5lZCBhYm92ZS5cbiAqXG4gKiBAZXh0ZW5kcyBOb2RlXG4gKi9cbmNsYXNzIENvbW1lbnQgZXh0ZW5kcyBOb2RlIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2NvbW1lbnQnXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIENvbW1lbnQjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gdGV4dCBUaGUgY29tbWVudOKAmXMgdGV4dC5cbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBDb21tZW50I1xuICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLlxuICAgKiAqIGBsZWZ0YDogdGhlIHNwYWNlIHN5bWJvbHMgYmV0d2VlbiBgLypgIGFuZCB0aGUgY29tbWVudOKAmXMgdGV4dC5cbiAgICogKiBgcmlnaHRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIHRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tbWVudFxuIl0sImZpbGUiOiJjb21tZW50LmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents an at-rule.\n *\n * If it’s followed in the CSS by a {} block, this node will have\n * a nodes property representing its children.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('@charset \"UTF-8\"; @media print {}')\n *\n * const charset = root.first\n * charset.type  //=> 'atrule'\n * charset.nodes //=> undefined\n *\n * const media = root.last\n * media.nodes   //=> []\n */\nvar AtRule = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(AtRule, _Container);\n\n  function AtRule(defaults) {\n    var _this;\n\n    _this = _Container.call(this, defaults) || this;\n    _this.type = 'atrule';\n    return _this;\n  }\n\n  var _proto = AtRule.prototype;\n\n  _proto.append = function append() {\n    var _Container$prototype$;\n\n    if (!this.nodes) this.nodes = [];\n\n    for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {\n      children[_key] = arguments[_key];\n    }\n\n    return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children));\n  };\n\n  _proto.prepend = function prepend() {\n    var _Container$prototype$2;\n\n    if (!this.nodes) this.nodes = [];\n\n    for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      children[_key2] = arguments[_key2];\n    }\n\n    return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));\n  }\n  /**\n   * @memberof AtRule#\n   * @member {string} name The at-rule’s name immediately follows the `@`.\n   *\n   * @example\n   * const root  = postcss.parse('@media print {}')\n   * media.name //=> 'media'\n   * const media = root.first\n   */\n\n  /**\n   * @memberof AtRule#\n   * @member {string} params The at-rule’s parameters, the values\n   *                         that follow the at-rule’s name but precede\n   *                         any {} block.\n   *\n   * @example\n   * const root  = postcss.parse('@media print, screen {}')\n   * const media = root.first\n   * media.params //=> 'print, screen'\n   */\n\n  /**\n   * @memberof AtRule#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                        node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node. It also stores `*`\n   *   and `_` symbols before the declaration (IE hack).\n   * * `after`: the space symbols after the last child of the node\n   *   to the end of the node.\n   * * `between`: the symbols between the property and value\n   *   for declarations, selector and `{` for rules, or last parameter\n   *   and `{` for at-rules.\n   * * `semicolon`: contains true if the last child has\n   *   an (optional) semicolon.\n   * * `afterName`: the space between the at-rule name and its parameters.\n   *\n   * PostCSS cleans at-rule parameters from comments and extra spaces,\n   * but it stores origin content in raws properties.\n   * As such, if you don’t change a declaration’s value,\n   * PostCSS will use the raw value with comments.\n   *\n   * @example\n   * const root = postcss.parse('  @media\\nprint {\\n}')\n   * root.first.first.raws //=> { before: '  ',\n   *                       //     between: ' ',\n   *                       //     afterName: '\\n',\n   *                       //     after: '\\n' }\n   */\n  ;\n\n  return AtRule;\n}(_container.default);\n\nvar _default = AtRule;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0LXJ1bGUuZXM2Il0sIm5hbWVzIjpbIkF0UnVsZSIsImRlZmF1bHRzIiwidHlwZSIsImFwcGVuZCIsIm5vZGVzIiwiY2hpbGRyZW4iLCJwcmVwZW5kIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBa0JNQSxNOzs7QUFDSixrQkFBYUMsUUFBYixFQUF1QjtBQUFBOztBQUNyQixrQ0FBTUEsUUFBTjtBQUNBLFVBQUtDLElBQUwsR0FBWSxRQUFaO0FBRnFCO0FBR3RCOzs7O1NBRURDLE0sR0FBQSxrQkFBcUI7QUFBQTs7QUFDbkIsUUFBSSxDQUFDLEtBQUtDLEtBQVYsRUFBaUIsS0FBS0EsS0FBTCxHQUFhLEVBQWI7O0FBREUsc0NBQVZDLFFBQVU7QUFBVkEsTUFBQUEsUUFBVTtBQUFBOztBQUVuQix5REFBYUYsTUFBYixrREFBdUJFLFFBQXZCO0FBQ0QsRzs7U0FFREMsTyxHQUFBLG1CQUFzQjtBQUFBOztBQUNwQixRQUFJLENBQUMsS0FBS0YsS0FBVixFQUFpQixLQUFLQSxLQUFMLEdBQWEsRUFBYjs7QUFERyx1Q0FBVkMsUUFBVTtBQUFWQSxNQUFBQSxRQUFVO0FBQUE7O0FBRXBCLDBEQUFhQyxPQUFiLG1EQUF3QkQsUUFBeEI7QUFDRDtBQUVEOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7OztBQVlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdENtQkUsa0I7O2VBdUVOUCxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcidcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGF0LXJ1bGUuXG4gKlxuICogSWYgaXTigJlzIGZvbGxvd2VkIGluIHRoZSBDU1MgYnkgYSB7fSBibG9jaywgdGhpcyBub2RlIHdpbGwgaGF2ZVxuICogYSBub2RlcyBwcm9wZXJ0eSByZXByZXNlbnRpbmcgaXRzIGNoaWxkcmVuLlxuICpcbiAqIEBleHRlbmRzIENvbnRhaW5lclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnQGNoYXJzZXQgXCJVVEYtOFwiOyBAbWVkaWEgcHJpbnQge30nKVxuICpcbiAqIGNvbnN0IGNoYXJzZXQgPSByb290LmZpcnN0XG4gKiBjaGFyc2V0LnR5cGUgIC8vPT4gJ2F0cnVsZSdcbiAqIGNoYXJzZXQubm9kZXMgLy89PiB1bmRlZmluZWRcbiAqXG4gKiBjb25zdCBtZWRpYSA9IHJvb3QubGFzdFxuICogbWVkaWEubm9kZXMgICAvLz0+IFtdXG4gKi9cbmNsYXNzIEF0UnVsZSBleHRlbmRzIENvbnRhaW5lciB7XG4gIGNvbnN0cnVjdG9yIChkZWZhdWx0cykge1xuICAgIHN1cGVyKGRlZmF1bHRzKVxuICAgIHRoaXMudHlwZSA9ICdhdHJ1bGUnXG4gIH1cblxuICBhcHBlbmQgKC4uLmNoaWxkcmVuKSB7XG4gICAgaWYgKCF0aGlzLm5vZGVzKSB0aGlzLm5vZGVzID0gW11cbiAgICByZXR1cm4gc3VwZXIuYXBwZW5kKC4uLmNoaWxkcmVuKVxuICB9XG5cbiAgcHJlcGVuZCAoLi4uY2hpbGRyZW4pIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICAgIHJldHVybiBzdXBlci5wcmVwZW5kKC4uLmNoaWxkcmVuKVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gbmFtZSBUaGUgYXQtcnVsZeKAmXMgbmFtZSBpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBgQGAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgID0gcG9zdGNzcy5wYXJzZSgnQG1lZGlhIHByaW50IHt9JylcbiAgICogbWVkaWEubmFtZSAvLz0+ICdtZWRpYSdcbiAgICogY29uc3QgbWVkaWEgPSByb290LmZpcnN0XG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQXRSdWxlI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHBhcmFtcyBUaGUgYXQtcnVsZeKAmXMgcGFyYW1ldGVycywgdGhlIHZhbHVlc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGZvbGxvdyB0aGUgYXQtcnVsZeKAmXMgbmFtZSBidXQgcHJlY2VkZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBhbnkge30gYmxvY2suXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgID0gcG9zdGNzcy5wYXJzZSgnQG1lZGlhIHByaW50LCBzY3JlZW4ge30nKVxuICAgKiBjb25zdCBtZWRpYSA9IHJvb3QuZmlyc3RcbiAgICogbWVkaWEucGFyYW1zIC8vPT4gJ3ByaW50LCBzY3JlZW4nXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQXRSdWxlI1xuICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlXG4gICAqICAgdG8gdGhlIGVuZCBvZiB0aGUgbm9kZS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMsIHNlbGVjdG9yIGFuZCBge2AgZm9yIHJ1bGVzLCBvciBsYXN0IHBhcmFtZXRlclxuICAgKiAgIGFuZCBge2AgZm9yIGF0LXJ1bGVzLlxuICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyB0cnVlIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgKiAqIGBhZnRlck5hbWVgOiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgYXQtcnVsZSBuYW1lIGFuZCBpdHMgcGFyYW1ldGVycy5cbiAgICpcbiAgICogUG9zdENTUyBjbGVhbnMgYXQtcnVsZSBwYXJhbWV0ZXJzIGZyb20gY29tbWVudHMgYW5kIGV4dHJhIHNwYWNlcyxcbiAgICogYnV0IGl0IHN0b3JlcyBvcmlnaW4gY29udGVudCBpbiByYXdzIHByb3BlcnRpZXMuXG4gICAqIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICogUG9zdENTUyB3aWxsIHVzZSB0aGUgcmF3IHZhbHVlIHdpdGggY29tbWVudHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCcgIEBtZWRpYVxcbnByaW50IHtcXG59JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5yYXdzIC8vPT4geyBiZWZvcmU6ICcgICcsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYmV0d2VlbjogJyAnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGFmdGVyTmFtZTogJ1xcbicsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWZ0ZXI6ICdcXG4nIH1cbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IEF0UnVsZVxuIl0sImZpbGUiOiJhdC1ydWxlLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _declaration = _interopRequireDefault(require(\"./declaration\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction cleanSource(nodes) {\n  return nodes.map(function (i) {\n    if (i.nodes) i.nodes = cleanSource(i.nodes);\n    delete i.source;\n    return i;\n  });\n}\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\n\nvar Container = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Container, _Node);\n\n  function Container() {\n    return _Node.apply(this, arguments) || this;\n  }\n\n  var _proto = Container.prototype;\n\n  _proto.push = function push(child) {\n    child.parent = this;\n    this.nodes.push(child);\n    return this;\n  }\n  /**\n   * Iterates through the container’s immediate children,\n   * calling `callback` for each child.\n   *\n   * Returning `false` in the callback will break iteration.\n   *\n   * This method only iterates through the container’s immediate children.\n   * If you need to recursively iterate through all the container’s descendant\n   * nodes, use {@link Container#walk}.\n   *\n   * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n   * if you are mutating the array of child nodes during iteration.\n   * PostCSS will adjust the current index to match the mutations.\n   *\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black; z-index: 1 }')\n   * const rule = root.first\n   *\n   * for (const decl of rule.nodes) {\n   *   decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n   *   // Cycle will be infinite, because cloneBefore moves the current node\n   *   // to the next index\n   * }\n   *\n   * rule.each(decl => {\n   *   decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n   *   // Will be executed only for color and z-index\n   * })\n   */\n  ;\n\n  _proto.each = function each(callback) {\n    if (!this.lastEach) this.lastEach = 0;\n    if (!this.indexes) this.indexes = {};\n    this.lastEach += 1;\n    var id = this.lastEach;\n    this.indexes[id] = 0;\n    if (!this.nodes) return undefined;\n    var index, result;\n\n    while (this.indexes[id] < this.nodes.length) {\n      index = this.indexes[id];\n      result = callback(this.nodes[index], index);\n      if (result === false) break;\n      this.indexes[id] += 1;\n    }\n\n    delete this.indexes[id];\n    return result;\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each node.\n   *\n   * Like container.each(), this method is safe to use\n   * if you are mutating arrays during iteration.\n   *\n   * If you only need to iterate through the container’s immediate children,\n   * use {@link Container#each}.\n   *\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walk(node => {\n   *   // Traverses all descendant nodes.\n   * })\n   */\n  ;\n\n  _proto.walk = function walk(callback) {\n    return this.each(function (child, i) {\n      var result;\n\n      try {\n        result = callback(child, i);\n      } catch (e) {\n        e.postcssNode = child;\n\n        if (e.stack && child.source && /\\n\\s{4}at /.test(e.stack)) {\n          var s = child.source;\n          e.stack = e.stack.replace(/\\n\\s{4}at /, \"$&\" + s.input.from + \":\" + s.start.line + \":\" + s.start.column + \"$&\");\n        }\n\n        throw e;\n      }\n\n      if (result !== false && child.walk) {\n        result = child.walk(callback);\n      }\n\n      return result;\n    });\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each declaration node.\n   *\n   * If you pass a filter, iteration will only happen over declarations\n   * with matching properties.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {string|RegExp} [prop]   String or regular expression\n   *                                 to filter declarations by property name.\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walkDecls(decl => {\n   *   checkPropertySupport(decl.prop)\n   * })\n   *\n   * root.walkDecls('border-radius', decl => {\n   *   decl.remove()\n   * })\n   *\n   * root.walkDecls(/^background/, decl => {\n   *   decl.value = takeFirstColorFromGradient(decl.value)\n   * })\n   */\n  ;\n\n  _proto.walkDecls = function walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop;\n      return this.walk(function (child, i) {\n        if (child.type === 'decl') {\n          return callback(child, i);\n        }\n      });\n    }\n\n    if (prop instanceof RegExp) {\n      return this.walk(function (child, i) {\n        if (child.type === 'decl' && prop.test(child.prop)) {\n          return callback(child, i);\n        }\n      });\n    }\n\n    return this.walk(function (child, i) {\n      if (child.type === 'decl' && child.prop === prop) {\n        return callback(child, i);\n      }\n    });\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each rule node.\n   *\n   * If you pass a filter, iteration will only happen over rules\n   * with matching selectors.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {string|RegExp} [selector] String or regular expression\n   *                                   to filter rules by selector.\n   * @param {childIterator} callback   Iterator receives each node and index.\n   *\n   * @return {false|undefined} returns `false` if iteration was broke.\n   *\n   * @example\n   * const selectors = []\n   * root.walkRules(rule => {\n   *   selectors.push(rule.selector)\n   * })\n   * console.log(`Your CSS uses ${ selectors.length } selectors`)\n   */\n  ;\n\n  _proto.walkRules = function walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector;\n      return this.walk(function (child, i) {\n        if (child.type === 'rule') {\n          return callback(child, i);\n        }\n      });\n    }\n\n    if (selector instanceof RegExp) {\n      return this.walk(function (child, i) {\n        if (child.type === 'rule' && selector.test(child.selector)) {\n          return callback(child, i);\n        }\n      });\n    }\n\n    return this.walk(function (child, i) {\n      if (child.type === 'rule' && child.selector === selector) {\n        return callback(child, i);\n      }\n    });\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each at-rule node.\n   *\n   * If you pass a filter, iteration will only happen over at-rules\n   * that have matching names.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {string|RegExp} [name]   String or regular expression\n   *                                 to filter at-rules by name.\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walkAtRules(rule => {\n   *   if (isOld(rule.name)) rule.remove()\n   * })\n   *\n   * let first = false\n   * root.walkAtRules('charset', rule => {\n   *   if (!first) {\n   *     first = true\n   *   } else {\n   *     rule.remove()\n   *   }\n   * })\n   */\n  ;\n\n  _proto.walkAtRules = function walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name;\n      return this.walk(function (child, i) {\n        if (child.type === 'atrule') {\n          return callback(child, i);\n        }\n      });\n    }\n\n    if (name instanceof RegExp) {\n      return this.walk(function (child, i) {\n        if (child.type === 'atrule' && name.test(child.name)) {\n          return callback(child, i);\n        }\n      });\n    }\n\n    return this.walk(function (child, i) {\n      if (child.type === 'atrule' && child.name === name) {\n        return callback(child, i);\n      }\n    });\n  }\n  /**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each comment node.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walkComments(comment => {\n   *   comment.remove()\n   * })\n   */\n  ;\n\n  _proto.walkComments = function walkComments(callback) {\n    return this.walk(function (child, i) {\n      if (child.type === 'comment') {\n        return callback(child, i);\n      }\n    });\n  }\n  /**\n   * Inserts new nodes to the end of the container.\n   *\n   * @param {...(Node|object|string|Node[])} children New nodes.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n   * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n   * rule.append(decl1, decl2)\n   *\n   * root.append({ name: 'charset', params: '\"UTF-8\"' })  // at-rule\n   * root.append({ selector: 'a' })                       // rule\n   * rule.append({ prop: 'color', value: 'black' })       // declaration\n   * rule.append({ text: 'Comment' })                     // comment\n   *\n   * root.append('a {}')\n   * root.first.append('color: black; z-index: 1')\n   */\n  ;\n\n  _proto.append = function append() {\n    for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {\n      children[_key] = arguments[_key];\n    }\n\n    for (var _i = 0, _children = children; _i < _children.length; _i++) {\n      var child = _children[_i];\n      var nodes = this.normalize(child, this.last);\n\n      for (var _iterator = _createForOfIteratorHelperLoose(nodes), _step; !(_step = _iterator()).done;) {\n        var node = _step.value;\n        this.nodes.push(node);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Inserts new nodes to the start of the container.\n   *\n   * @param {...(Node|object|string|Node[])} children New nodes.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n   * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n   * rule.prepend(decl1, decl2)\n   *\n   * root.append({ name: 'charset', params: '\"UTF-8\"' })  // at-rule\n   * root.append({ selector: 'a' })                       // rule\n   * rule.append({ prop: 'color', value: 'black' })       // declaration\n   * rule.append({ text: 'Comment' })                     // comment\n   *\n   * root.append('a {}')\n   * root.first.append('color: black; z-index: 1')\n   */\n  ;\n\n  _proto.prepend = function prepend() {\n    for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      children[_key2] = arguments[_key2];\n    }\n\n    children = children.reverse();\n\n    for (var _iterator2 = _createForOfIteratorHelperLoose(children), _step2; !(_step2 = _iterator2()).done;) {\n      var child = _step2.value;\n      var nodes = this.normalize(child, this.first, 'prepend').reverse();\n\n      for (var _iterator3 = _createForOfIteratorHelperLoose(nodes), _step3; !(_step3 = _iterator3()).done;) {\n        var node = _step3.value;\n        this.nodes.unshift(node);\n      }\n\n      for (var id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length;\n      }\n    }\n\n    return this;\n  };\n\n  _proto.cleanRaws = function cleanRaws(keepBetween) {\n    _Node.prototype.cleanRaws.call(this, keepBetween);\n\n    if (this.nodes) {\n      for (var _iterator4 = _createForOfIteratorHelperLoose(this.nodes), _step4; !(_step4 = _iterator4()).done;) {\n        var node = _step4.value;\n        node.cleanRaws(keepBetween);\n      }\n    }\n  }\n  /**\n   * Insert new node before old node within the container.\n   *\n   * @param {Node|number} exist             Child or child’s index.\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))\n   */\n  ;\n\n  _proto.insertBefore = function insertBefore(exist, add) {\n    exist = this.index(exist);\n    var type = exist === 0 ? 'prepend' : false;\n    var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n\n    for (var _iterator5 = _createForOfIteratorHelperLoose(nodes), _step5; !(_step5 = _iterator5()).done;) {\n      var node = _step5.value;\n      this.nodes.splice(exist, 0, node);\n    }\n\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (exist <= index) {\n        this.indexes[id] = index + nodes.length;\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Insert new node after old node within the container.\n   *\n   * @param {Node|number} exist             Child or child’s index.\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   */\n  ;\n\n  _proto.insertAfter = function insertAfter(exist, add) {\n    exist = this.index(exist);\n    var nodes = this.normalize(add, this.nodes[exist]).reverse();\n\n    for (var _iterator6 = _createForOfIteratorHelperLoose(nodes), _step6; !(_step6 = _iterator6()).done;) {\n      var node = _step6.value;\n      this.nodes.splice(exist + 1, 0, node);\n    }\n\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (exist < index) {\n        this.indexes[id] = index + nodes.length;\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Removes node from the container and cleans the parent properties\n   * from the node and its children.\n   *\n   * @param {Node|number} child Child or child’s index.\n   *\n   * @return {Node} This node for methods chain\n   *\n   * @example\n   * rule.nodes.length  //=> 5\n   * rule.removeChild(decl)\n   * rule.nodes.length  //=> 4\n   * decl.parent        //=> undefined\n   */\n  ;\n\n  _proto.removeChild = function removeChild(child) {\n    child = this.index(child);\n    this.nodes[child].parent = undefined;\n    this.nodes.splice(child, 1);\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (index >= child) {\n        this.indexes[id] = index - 1;\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Removes all children from the container\n   * and cleans their parent properties.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * rule.removeAll()\n   * rule.nodes.length //=> 0\n   */\n  ;\n\n  _proto.removeAll = function removeAll() {\n    for (var _iterator7 = _createForOfIteratorHelperLoose(this.nodes), _step7; !(_step7 = _iterator7()).done;) {\n      var node = _step7.value;\n      node.parent = undefined;\n    }\n\n    this.nodes = [];\n    return this;\n  }\n  /**\n   * Passes all declaration values within the container that match pattern\n   * through callback, replacing those values with the returned result\n   * of callback.\n   *\n   * This method is useful if you are using a custom unit or function\n   * and need to iterate through all values.\n   *\n   * @param {string|RegExp} pattern      Replace pattern.\n   * @param {object} opts                Options to speed up the search.\n   * @param {string|string[]} opts.props An array of property names.\n   * @param {string} opts.fast           String that’s used to narrow down\n   *                                     values and speed up the regexp search.\n   * @param {function|string} callback   String to replace pattern or callback\n   *                                     that returns a new value. The callback\n   *                                     will receive the same arguments\n   *                                     as those passed to a function parameter\n   *                                     of `String#replace`.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n   *   return 15 * parseInt(string) + 'px'\n   * })\n   */\n  ;\n\n  _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts;\n      opts = {};\n    }\n\n    this.walkDecls(function (decl) {\n      if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n      if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n      decl.value = decl.value.replace(pattern, callback);\n    });\n    return this;\n  }\n  /**\n   * Returns `true` if callback returns `true`\n   * for all of the container’s children.\n   *\n   * @param {childCondition} condition Iterator returns true or false.\n   *\n   * @return {boolean} Is every child pass condition.\n   *\n   * @example\n   * const noPrefixes = rule.every(i => i.prop[0] !== '-')\n   */\n  ;\n\n  _proto.every = function every(condition) {\n    return this.nodes.every(condition);\n  }\n  /**\n   * Returns `true` if callback returns `true` for (at least) one\n   * of the container’s children.\n   *\n   * @param {childCondition} condition Iterator returns true or false.\n   *\n   * @return {boolean} Is some child pass condition.\n   *\n   * @example\n   * const hasPrefix = rule.some(i => i.prop[0] === '-')\n   */\n  ;\n\n  _proto.some = function some(condition) {\n    return this.nodes.some(condition);\n  }\n  /**\n   * Returns a `child`’s index within the {@link Container#nodes} array.\n   *\n   * @param {Node} child Child of the current container.\n   *\n   * @return {number} Child index.\n   *\n   * @example\n   * rule.index( rule.nodes[2] ) //=> 2\n   */\n  ;\n\n  _proto.index = function index(child) {\n    if (typeof child === 'number') {\n      return child;\n    }\n\n    return this.nodes.indexOf(child);\n  }\n  /**\n   * The container’s first child.\n   *\n   * @type {Node}\n   *\n   * @example\n   * rule.first === rules.nodes[0]\n   */\n  ;\n\n  _proto.normalize = function normalize(nodes, sample) {\n    var _this = this;\n\n    if (typeof nodes === 'string') {\n      var parse = require('./parse');\n\n      nodes = cleanSource(parse(nodes).nodes);\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0);\n\n      for (var _iterator8 = _createForOfIteratorHelperLoose(nodes), _step8; !(_step8 = _iterator8()).done;) {\n        var i = _step8.value;\n        if (i.parent) i.parent.removeChild(i, 'ignore');\n      }\n    } else if (nodes.type === 'root') {\n      nodes = nodes.nodes.slice(0);\n\n      for (var _iterator9 = _createForOfIteratorHelperLoose(nodes), _step9; !(_step9 = _iterator9()).done;) {\n        var _i2 = _step9.value;\n        if (_i2.parent) _i2.parent.removeChild(_i2, 'ignore');\n      }\n    } else if (nodes.type) {\n      nodes = [nodes];\n    } else if (nodes.prop) {\n      if (typeof nodes.value === 'undefined') {\n        throw new Error('Value field is missed in node creation');\n      } else if (typeof nodes.value !== 'string') {\n        nodes.value = String(nodes.value);\n      }\n\n      nodes = [new _declaration.default(nodes)];\n    } else if (nodes.selector) {\n      var Rule = require('./rule');\n\n      nodes = [new Rule(nodes)];\n    } else if (nodes.name) {\n      var AtRule = require('./at-rule');\n\n      nodes = [new AtRule(nodes)];\n    } else if (nodes.text) {\n      nodes = [new _comment.default(nodes)];\n    } else {\n      throw new Error('Unknown node type in node creation');\n    }\n\n    var processed = nodes.map(function (i) {\n      if (i.parent) i.parent.removeChild(i);\n\n      if (typeof i.raws.before === 'undefined') {\n        if (sample && typeof sample.raws.before !== 'undefined') {\n          i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n        }\n      }\n\n      i.parent = _this;\n      return i;\n    });\n    return processed;\n  }\n  /**\n   * @memberof Container#\n   * @member {Node[]} nodes An array containing the container’s children.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black }')\n   * root.nodes.length           //=> 1\n   * root.nodes[0].selector      //=> 'a'\n   * root.nodes[0].nodes[0].prop //=> 'color'\n   */\n  ;\n\n  _createClass(Container, [{\n    key: \"first\",\n    get: function get() {\n      if (!this.nodes) return undefined;\n      return this.nodes[0];\n    }\n    /**\n     * The container’s last child.\n     *\n     * @type {Node}\n     *\n     * @example\n     * rule.last === rule.nodes[rule.nodes.length - 1]\n     */\n\n  }, {\n    key: \"last\",\n    get: function get() {\n      if (!this.nodes) return undefined;\n      return this.nodes[this.nodes.length - 1];\n    }\n  }]);\n\n  return Container;\n}(_node.default);\n\nvar _default = Container;\n/**\n * @callback childCondition\n * @param {Node} node    Container child.\n * @param {number} index Child index.\n * @param {Node[]} nodes All container children.\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node    Container child.\n * @param {number} index Child index.\n * @return {false|undefined} Returning `false` will break iteration.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRhaW5lci5lczYiXSwibmFtZXMiOlsiY2xlYW5Tb3VyY2UiLCJub2RlcyIsIm1hcCIsImkiLCJzb3VyY2UiLCJDb250YWluZXIiLCJwdXNoIiwiY2hpbGQiLCJwYXJlbnQiLCJlYWNoIiwiY2FsbGJhY2siLCJsYXN0RWFjaCIsImluZGV4ZXMiLCJpZCIsInVuZGVmaW5lZCIsImluZGV4IiwicmVzdWx0IiwibGVuZ3RoIiwid2FsayIsImUiLCJwb3N0Y3NzTm9kZSIsInN0YWNrIiwidGVzdCIsInMiLCJyZXBsYWNlIiwiaW5wdXQiLCJmcm9tIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwid2Fsa0RlY2xzIiwicHJvcCIsInR5cGUiLCJSZWdFeHAiLCJ3YWxrUnVsZXMiLCJzZWxlY3RvciIsIndhbGtBdFJ1bGVzIiwibmFtZSIsIndhbGtDb21tZW50cyIsImFwcGVuZCIsImNoaWxkcmVuIiwibm9ybWFsaXplIiwibGFzdCIsIm5vZGUiLCJwcmVwZW5kIiwicmV2ZXJzZSIsImZpcnN0IiwidW5zaGlmdCIsImNsZWFuUmF3cyIsImtlZXBCZXR3ZWVuIiwiaW5zZXJ0QmVmb3JlIiwiZXhpc3QiLCJhZGQiLCJzcGxpY2UiLCJpbnNlcnRBZnRlciIsInJlbW92ZUNoaWxkIiwicmVtb3ZlQWxsIiwicmVwbGFjZVZhbHVlcyIsInBhdHRlcm4iLCJvcHRzIiwiZGVjbCIsInByb3BzIiwiaW5kZXhPZiIsImZhc3QiLCJ2YWx1ZSIsImV2ZXJ5IiwiY29uZGl0aW9uIiwic29tZSIsInNhbXBsZSIsInBhcnNlIiwicmVxdWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwiRXJyb3IiLCJTdHJpbmciLCJEZWNsYXJhdGlvbiIsIlJ1bGUiLCJBdFJ1bGUiLCJ0ZXh0IiwiQ29tbWVudCIsInByb2Nlc3NlZCIsInJhd3MiLCJiZWZvcmUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsV0FB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LE1BQU4sRUFBY0wsQ0FBQyxDQUFDSyxNQUFGLENBQVMrQyxXQUFULENBQXFCcEQsQ0FBckI7O0FBQ2QsVUFBSSxPQUFPQSxDQUFDLENBQUMrRSxJQUFGLENBQU9DLE1BQWQsS0FBeUIsV0FBN0IsRUFBMEM7QUFDeEMsWUFBSWYsTUFBTSxJQUFJLE9BQU9BLE1BQU0sQ0FBQ2MsSUFBUCxDQUFZQyxNQUFuQixLQUE4QixXQUE1QyxFQUF5RDtBQUN2RGhGLFVBQUFBLENBQUMsQ0FBQytFLElBQUYsQ0FBT0MsTUFBUCxHQUFnQmYsTUFBTSxDQUFDYyxJQUFQLENBQVlDLE1BQVosQ0FBbUIzRCxPQUFuQixDQUEyQixRQUEzQixFQUFxQyxFQUFyQyxDQUFoQjtBQUNEO0FBQ0Y7O0FBQ0RyQixNQUFBQSxDQUFDLENBQUNLLE1BQUYsR0FBVyxLQUFYO0FBQ0EsYUFBT0wsQ0FBUDtBQUNELEtBVGUsQ0FBaEI7QUFXQSxXQUFPOEUsU0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O3dCQW5FYTtBQUNYLFVBQUksQ0FBQyxLQUFLaEYsS0FBVixFQUFpQixPQUFPYSxTQUFQO0FBQ2pCLGFBQU8sS0FBS2IsS0FBTCxDQUFXLENBQVgsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7O3dCQVFZO0FBQ1YsVUFBSSxDQUFDLEtBQUtBLEtBQVYsRUFBaUIsT0FBT2EsU0FBUDtBQUNqQixhQUFPLEtBQUtiLEtBQUwsQ0FBVyxLQUFLQSxLQUFMLENBQVdnQixNQUFYLEdBQW9CLENBQS9CLENBQVA7QUFDRDs7OztFQWhqQnFCbUUsYTs7ZUErbUJUL0UsUztBQUVmOzs7Ozs7OztBQVFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gJy4vZGVjbGFyYXRpb24nXG5pbXBvcnQgQ29tbWVudCBmcm9tICcuL2NvbW1lbnQnXG5pbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnXG5cbmZ1bmN0aW9uIGNsZWFuU291cmNlIChub2Rlcykge1xuICByZXR1cm4gbm9kZXMubWFwKGkgPT4ge1xuICAgIGlmIChpLm5vZGVzKSBpLm5vZGVzID0gY2xlYW5Tb3VyY2UoaS5ub2RlcylcbiAgICBkZWxldGUgaS5zb3VyY2VcbiAgICByZXR1cm4gaVxuICB9KVxufVxuXG4vKipcbiAqIFRoZSB7QGxpbmsgUm9vdH0sIHtAbGluayBBdFJ1bGV9LCBhbmQge0BsaW5rIFJ1bGV9IGNvbnRhaW5lciBub2Rlc1xuICogaW5oZXJpdCBzb21lIGNvbW1vbiBtZXRob2RzIHRvIGhlbHAgd29yayB3aXRoIHRoZWlyIGNoaWxkcmVuLlxuICpcbiAqIE5vdGUgdGhhdCBhbGwgY29udGFpbmVycyBjYW4gc3RvcmUgYW55IGNvbnRlbnQuIElmIHlvdSB3cml0ZSBhIHJ1bGUgaW5zaWRlXG4gKiBhIHJ1bGUsIFBvc3RDU1Mgd2lsbCBwYXJzZSBpdC5cbiAqXG4gKiBAZXh0ZW5kcyBOb2RlXG4gKiBAYWJzdHJhY3RcbiAqL1xuY2xhc3MgQ29udGFpbmVyIGV4dGVuZHMgTm9kZSB7XG4gIHB1c2ggKGNoaWxkKSB7XG4gICAgY2hpbGQucGFyZW50ID0gdGhpc1xuICAgIHRoaXMubm9kZXMucHVzaChjaGlsZClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggdGhlIGNvbnRhaW5lcuKAmXMgaW1tZWRpYXRlIGNoaWxkcmVuLFxuICAgKiBjYWxsaW5nIGBjYWxsYmFja2AgZm9yIGVhY2ggY2hpbGQuXG4gICAqXG4gICAqIFJldHVybmluZyBgZmFsc2VgIGluIHRoZSBjYWxsYmFjayB3aWxsIGJyZWFrIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogVGhpcyBtZXRob2Qgb25seSBpdGVyYXRlcyB0aHJvdWdoIHRoZSBjb250YWluZXLigJlzIGltbWVkaWF0ZSBjaGlsZHJlbi5cbiAgICogSWYgeW91IG5lZWQgdG8gcmVjdXJzaXZlbHkgaXRlcmF0ZSB0aHJvdWdoIGFsbCB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50XG4gICAqIG5vZGVzLCB1c2Uge0BsaW5rIENvbnRhaW5lciN3YWxrfS5cbiAgICpcbiAgICogVW5saWtlIHRoZSBmb3IgYHt9YC1jeWNsZSBvciBgQXJyYXkjZm9yRWFjaGAgdGhpcyBpdGVyYXRvciBpcyBzYWZlXG4gICAqIGlmIHlvdSBhcmUgbXV0YXRpbmcgdGhlIGFycmF5IG9mIGNoaWxkIG5vZGVzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqIFBvc3RDU1Mgd2lsbCBhZGp1c3QgdGhlIGN1cnJlbnQgaW5kZXggdG8gbWF0Y2ggdGhlIG11dGF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjazsgei1pbmRleDogMSB9JylcbiAgICogY29uc3QgcnVsZSA9IHJvb3QuZmlyc3RcbiAgICpcbiAgICogZm9yIChjb25zdCBkZWNsIG9mIHJ1bGUubm9kZXMpIHtcbiAgICogICBkZWNsLmNsb25lQmVmb3JlKHsgcHJvcDogJy13ZWJraXQtJyArIGRlY2wucHJvcCB9KVxuICAgKiAgIC8vIEN5Y2xlIHdpbGwgYmUgaW5maW5pdGUsIGJlY2F1c2UgY2xvbmVCZWZvcmUgbW92ZXMgdGhlIGN1cnJlbnQgbm9kZVxuICAgKiAgIC8vIHRvIHRoZSBuZXh0IGluZGV4XG4gICAqIH1cbiAgICpcbiAgICogcnVsZS5lYWNoKGRlY2wgPT4ge1xuICAgKiAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pXG4gICAqICAgLy8gV2lsbCBiZSBleGVjdXRlZCBvbmx5IGZvciBjb2xvciBhbmQgei1pbmRleFxuICAgKiB9KVxuICAgKi9cbiAgZWFjaCAoY2FsbGJhY2spIHtcbiAgICBpZiAoIXRoaXMubGFzdEVhY2gpIHRoaXMubGFzdEVhY2ggPSAwXG4gICAgaWYgKCF0aGlzLmluZGV4ZXMpIHRoaXMuaW5kZXhlcyA9IHsgfVxuXG4gICAgdGhpcy5sYXN0RWFjaCArPSAxXG4gICAgbGV0IGlkID0gdGhpcy5sYXN0RWFjaFxuICAgIHRoaXMuaW5kZXhlc1tpZF0gPSAwXG5cbiAgICBpZiAoIXRoaXMubm9kZXMpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGxldCBpbmRleCwgcmVzdWx0XG4gICAgd2hpbGUgKHRoaXMuaW5kZXhlc1tpZF0gPCB0aGlzLm5vZGVzLmxlbmd0aCkge1xuICAgICAgaW5kZXggPSB0aGlzLmluZGV4ZXNbaWRdXG4gICAgICByZXN1bHQgPSBjYWxsYmFjayh0aGlzLm5vZGVzW2luZGV4XSwgaW5kZXgpXG4gICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkgYnJlYWtcblxuICAgICAgdGhpcy5pbmRleGVzW2lkXSArPSAxXG4gICAgfVxuXG4gICAgZGVsZXRlIHRoaXMuaW5kZXhlc1tpZF1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgKiBmb3IgZWFjaCBub2RlLlxuICAgKlxuICAgKiBMaWtlIGNvbnRhaW5lci5lYWNoKCksIHRoaXMgbWV0aG9kIGlzIHNhZmUgdG8gdXNlXG4gICAqIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqXG4gICAqIElmIHlvdSBvbmx5IG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZSBjb250YWluZXLigJlzIGltbWVkaWF0ZSBjaGlsZHJlbixcbiAgICogdXNlIHtAbGluayBDb250YWluZXIjZWFjaH0uXG4gICAqXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrKG5vZGUgPT4ge1xuICAgKiAgIC8vIFRyYXZlcnNlcyBhbGwgZGVzY2VuZGFudCBub2Rlcy5cbiAgICogfSlcbiAgICovXG4gIHdhbGsgKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaCgoY2hpbGQsIGkpID0+IHtcbiAgICAgIGxldCByZXN1bHRcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBlLnBvc3Rjc3NOb2RlID0gY2hpbGRcbiAgICAgICAgaWYgKGUuc3RhY2sgJiYgY2hpbGQuc291cmNlICYmIC9cXG5cXHN7NH1hdCAvLnRlc3QoZS5zdGFjaykpIHtcbiAgICAgICAgICBsZXQgcyA9IGNoaWxkLnNvdXJjZVxuICAgICAgICAgIGUuc3RhY2sgPSBlLnN0YWNrLnJlcGxhY2UoL1xcblxcc3s0fWF0IC8sXG4gICAgICAgICAgICBgJCYkeyBzLmlucHV0LmZyb20gfTokeyBzLnN0YXJ0LmxpbmUgfTokeyBzLnN0YXJ0LmNvbHVtbiB9JCZgKVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgIT09IGZhbHNlICYmIGNoaWxkLndhbGspIHtcbiAgICAgICAgcmVzdWx0ID0gY2hpbGQud2FsayhjYWxsYmFjaylcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIGRlY2xhcmF0aW9uIG5vZGUuXG4gICAqXG4gICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIGRlY2xhcmF0aW9uc1xuICAgKiB3aXRoIG1hdGNoaW5nIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbcHJvcF0gICBTdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIGRlY2xhcmF0aW9ucyBieSBwcm9wZXJ0eSBuYW1lLlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qud2Fsa0RlY2xzKGRlY2wgPT4ge1xuICAgKiAgIGNoZWNrUHJvcGVydHlTdXBwb3J0KGRlY2wucHJvcClcbiAgICogfSlcbiAgICpcbiAgICogcm9vdC53YWxrRGVjbHMoJ2JvcmRlci1yYWRpdXMnLCBkZWNsID0+IHtcbiAgICogICBkZWNsLnJlbW92ZSgpXG4gICAqIH0pXG4gICAqXG4gICAqIHJvb3Qud2Fsa0RlY2xzKC9eYmFja2dyb3VuZC8sIGRlY2wgPT4ge1xuICAgKiAgIGRlY2wudmFsdWUgPSB0YWtlRmlyc3RDb2xvckZyb21HcmFkaWVudChkZWNsLnZhbHVlKVxuICAgKiB9KVxuICAgKi9cbiAgd2Fsa0RlY2xzIChwcm9wLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gcHJvcFxuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdkZWNsJykge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHByb3AgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnZGVjbCcgJiYgcHJvcC50ZXN0KGNoaWxkLnByb3ApKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdkZWNsJyAmJiBjaGlsZC5wcm9wID09PSBwcm9wKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIHJ1bGUgbm9kZS5cbiAgICpcbiAgICogSWYgeW91IHBhc3MgYSBmaWx0ZXIsIGl0ZXJhdGlvbiB3aWxsIG9ubHkgaGFwcGVuIG92ZXIgcnVsZXNcbiAgICogd2l0aCBtYXRjaGluZyBzZWxlY3RvcnMuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbc2VsZWN0b3JdIFN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZpbHRlciBydWxlcyBieSBzZWxlY3Rvci5cbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayAgIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gcmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHNlbGVjdG9ycyA9IFtdXG4gICAqIHJvb3Qud2Fsa1J1bGVzKHJ1bGUgPT4ge1xuICAgKiAgIHNlbGVjdG9ycy5wdXNoKHJ1bGUuc2VsZWN0b3IpXG4gICAqIH0pXG4gICAqIGNvbnNvbGUubG9nKGBZb3VyIENTUyB1c2VzICR7IHNlbGVjdG9ycy5sZW5ndGggfSBzZWxlY3RvcnNgKVxuICAgKi9cbiAgd2Fsa1J1bGVzIChzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayA9IHNlbGVjdG9yXG5cbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAncnVsZScpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChzZWxlY3RvciBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdydWxlJyAmJiBzZWxlY3Rvci50ZXN0KGNoaWxkLnNlbGVjdG9yKSkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAncnVsZScgJiYgY2hpbGQuc2VsZWN0b3IgPT09IHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIGF0LXJ1bGUgbm9kZS5cbiAgICpcbiAgICogSWYgeW91IHBhc3MgYSBmaWx0ZXIsIGl0ZXJhdGlvbiB3aWxsIG9ubHkgaGFwcGVuIG92ZXIgYXQtcnVsZXNcbiAgICogdGhhdCBoYXZlIG1hdGNoaW5nIG5hbWVzLlxuICAgKlxuICAgKiBMaWtlIHtAbGluayBDb250YWluZXIjZWFjaH0sIHRoaXMgbWV0aG9kIGlzIHNhZmVcbiAgICogdG8gdXNlIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gW25hbWVdICAgU3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZpbHRlciBhdC1ydWxlcyBieSBuYW1lLlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qud2Fsa0F0UnVsZXMocnVsZSA9PiB7XG4gICAqICAgaWYgKGlzT2xkKHJ1bGUubmFtZSkpIHJ1bGUucmVtb3ZlKClcbiAgICogfSlcbiAgICpcbiAgICogbGV0IGZpcnN0ID0gZmFsc2VcbiAgICogcm9vdC53YWxrQXRSdWxlcygnY2hhcnNldCcsIHJ1bGUgPT4ge1xuICAgKiAgIGlmICghZmlyc3QpIHtcbiAgICogICAgIGZpcnN0ID0gdHJ1ZVxuICAgKiAgIH0gZWxzZSB7XG4gICAqICAgICBydWxlLnJlbW92ZSgpXG4gICAqICAgfVxuICAgKiB9KVxuICAgKi9cbiAgd2Fsa0F0UnVsZXMgKG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sgPSBuYW1lXG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2F0cnVsZScpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChuYW1lIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2F0cnVsZScgJiYgbmFtZS50ZXN0KGNoaWxkLm5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICYmIGNoaWxkLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggY29tbWVudCBub2RlLlxuICAgKlxuICAgKiBMaWtlIHtAbGluayBDb250YWluZXIjZWFjaH0sIHRoaXMgbWV0aG9kIGlzIHNhZmVcbiAgICogdG8gdXNlIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrQ29tbWVudHMoY29tbWVudCA9PiB7XG4gICAqICAgY29tbWVudC5yZW1vdmUoKVxuICAgKiB9KVxuICAgKi9cbiAgd2Fsa0NvbW1lbnRzIChjYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydHMgbmV3IG5vZGVzIHRvIHRoZSBlbmQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHsuLi4oTm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXSl9IGNoaWxkcmVuIE5ldyBub2Rlcy5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBkZWNsMSA9IHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pXG4gICAqIGNvbnN0IGRlY2wyID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2JhY2tncm91bmQtY29sb3InLCB2YWx1ZTogJ3doaXRlJyB9KVxuICAgKiBydWxlLmFwcGVuZChkZWNsMSwgZGVjbDIpXG4gICAqXG4gICAqIHJvb3QuYXBwZW5kKHsgbmFtZTogJ2NoYXJzZXQnLCBwYXJhbXM6ICdcIlVURi04XCInIH0pICAvLyBhdC1ydWxlXG4gICAqIHJvb3QuYXBwZW5kKHsgc2VsZWN0b3I6ICdhJyB9KSAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZVxuICAgKiBydWxlLmFwcGVuZCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pICAgICAgIC8vIGRlY2xhcmF0aW9uXG4gICAqIHJ1bGUuYXBwZW5kKHsgdGV4dDogJ0NvbW1lbnQnIH0pICAgICAgICAgICAgICAgICAgICAgLy8gY29tbWVudFxuICAgKlxuICAgKiByb290LmFwcGVuZCgnYSB7fScpXG4gICAqIHJvb3QuZmlyc3QuYXBwZW5kKCdjb2xvcjogYmxhY2s7IHotaW5kZXg6IDEnKVxuICAgKi9cbiAgYXBwZW5kICguLi5jaGlsZHJlbikge1xuICAgIGZvciAobGV0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShjaGlsZCwgdGhpcy5sYXN0KVxuICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2RlcykgdGhpcy5ub2Rlcy5wdXNoKG5vZGUpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0cyBuZXcgbm9kZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKE5vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW10pfSBjaGlsZHJlbiBOZXcgbm9kZXMuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgZGVjbDEgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KVxuICAgKiBjb25zdCBkZWNsMiA9IHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdiYWNrZ3JvdW5kLWNvbG9yJywgdmFsdWU6ICd3aGl0ZScgfSlcbiAgICogcnVsZS5wcmVwZW5kKGRlY2wxLCBkZWNsMilcbiAgICpcbiAgICogcm9vdC5hcHBlbmQoeyBuYW1lOiAnY2hhcnNldCcsIHBhcmFtczogJ1wiVVRGLThcIicgfSkgIC8vIGF0LXJ1bGVcbiAgICogcm9vdC5hcHBlbmQoeyBzZWxlY3RvcjogJ2EnIH0pICAgICAgICAgICAgICAgICAgICAgICAvLyBydWxlXG4gICAqIHJ1bGUuYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkgICAgICAgLy8gZGVjbGFyYXRpb25cbiAgICogcnVsZS5hcHBlbmQoeyB0ZXh0OiAnQ29tbWVudCcgfSkgICAgICAgICAgICAgICAgICAgICAvLyBjb21tZW50XG4gICAqXG4gICAqIHJvb3QuYXBwZW5kKCdhIHt9JylcbiAgICogcm9vdC5maXJzdC5hcHBlbmQoJ2NvbG9yOiBibGFjazsgei1pbmRleDogMScpXG4gICAqL1xuICBwcmVwZW5kICguLi5jaGlsZHJlbikge1xuICAgIGNoaWxkcmVuID0gY2hpbGRyZW4ucmV2ZXJzZSgpXG4gICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGxldCBub2RlcyA9IHRoaXMubm9ybWFsaXplKGNoaWxkLCB0aGlzLmZpcnN0LCAncHJlcGVuZCcpLnJldmVyc2UoKVxuICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2RlcykgdGhpcy5ub2Rlcy51bnNoaWZ0KG5vZGUpXG4gICAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmluZGV4ZXMpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IHRoaXMuaW5kZXhlc1tpZF0gKyBub2Rlcy5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGNsZWFuUmF3cyAoa2VlcEJldHdlZW4pIHtcbiAgICBzdXBlci5jbGVhblJhd3Moa2VlcEJldHdlZW4pXG4gICAgaWYgKHRoaXMubm9kZXMpIHtcbiAgICAgIGZvciAobGV0IG5vZGUgb2YgdGhpcy5ub2Rlcykgbm9kZS5jbGVhblJhd3Moa2VlcEJldHdlZW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBuZXcgbm9kZSBiZWZvcmUgb2xkIG5vZGUgd2l0aGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZXxudW1iZXJ9IGV4aXN0ICAgICAgICAgICAgIENoaWxkIG9yIGNoaWxk4oCZcyBpbmRleC5cbiAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgTmV3IG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5pbnNlcnRCZWZvcmUoZGVjbCwgZGVjbC5jbG9uZSh7IHByb3A6ICctd2Via2l0LScgKyBkZWNsLnByb3AgfSkpXG4gICAqL1xuICBpbnNlcnRCZWZvcmUgKGV4aXN0LCBhZGQpIHtcbiAgICBleGlzdCA9IHRoaXMuaW5kZXgoZXhpc3QpXG5cbiAgICBsZXQgdHlwZSA9IGV4aXN0ID09PSAwID8gJ3ByZXBlbmQnIDogZmFsc2VcbiAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShhZGQsIHRoaXMubm9kZXNbZXhpc3RdLCB0eXBlKS5yZXZlcnNlKClcbiAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnNwbGljZShleGlzdCwgMCwgbm9kZSlcblxuICAgIGxldCBpbmRleFxuICAgIGZvciAobGV0IGlkIGluIHRoaXMuaW5kZXhlcykge1xuICAgICAgaW5kZXggPSB0aGlzLmluZGV4ZXNbaWRdXG4gICAgICBpZiAoZXhpc3QgPD0gaW5kZXgpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IGluZGV4ICsgbm9kZXMubGVuZ3RoXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbmV3IG5vZGUgYWZ0ZXIgb2xkIG5vZGUgd2l0aGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZXxudW1iZXJ9IGV4aXN0ICAgICAgICAgICAgIENoaWxkIG9yIGNoaWxk4oCZcyBpbmRleC5cbiAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgTmV3IG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICovXG4gIGluc2VydEFmdGVyIChleGlzdCwgYWRkKSB7XG4gICAgZXhpc3QgPSB0aGlzLmluZGV4KGV4aXN0KVxuXG4gICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoYWRkLCB0aGlzLm5vZGVzW2V4aXN0XSkucmV2ZXJzZSgpXG4gICAgZm9yIChsZXQgbm9kZSBvZiBub2RlcykgdGhpcy5ub2Rlcy5zcGxpY2UoZXhpc3QgKyAxLCAwLCBub2RlKVxuXG4gICAgbGV0IGluZGV4XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5pbmRleGVzKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIGlmIChleGlzdCA8IGluZGV4KSB7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCArIG5vZGVzLmxlbmd0aFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBub2RlIGZyb20gdGhlIGNvbnRhaW5lciBhbmQgY2xlYW5zIHRoZSBwYXJlbnQgcHJvcGVydGllc1xuICAgKiBmcm9tIHRoZSBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZXxudW1iZXJ9IGNoaWxkIENoaWxkIG9yIGNoaWxk4oCZcyBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDVcbiAgICogcnVsZS5yZW1vdmVDaGlsZChkZWNsKVxuICAgKiBydWxlLm5vZGVzLmxlbmd0aCAgLy89PiA0XG4gICAqIGRlY2wucGFyZW50ICAgICAgICAvLz0+IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVtb3ZlQ2hpbGQgKGNoaWxkKSB7XG4gICAgY2hpbGQgPSB0aGlzLmluZGV4KGNoaWxkKVxuICAgIHRoaXMubm9kZXNbY2hpbGRdLnBhcmVudCA9IHVuZGVmaW5lZFxuICAgIHRoaXMubm9kZXMuc3BsaWNlKGNoaWxkLCAxKVxuXG4gICAgbGV0IGluZGV4XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5pbmRleGVzKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIGlmIChpbmRleCA+PSBjaGlsZCkge1xuICAgICAgICB0aGlzLmluZGV4ZXNbaWRdID0gaW5kZXggLSAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBjb250YWluZXJcbiAgICogYW5kIGNsZWFucyB0aGVpciBwYXJlbnQgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBydWxlLnJlbW92ZUFsbCgpXG4gICAqIHJ1bGUubm9kZXMubGVuZ3RoIC8vPT4gMFxuICAgKi9cbiAgcmVtb3ZlQWxsICgpIHtcbiAgICBmb3IgKGxldCBub2RlIG9mIHRoaXMubm9kZXMpIG5vZGUucGFyZW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5ub2RlcyA9IFtdXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXNzZXMgYWxsIGRlY2xhcmF0aW9uIHZhbHVlcyB3aXRoaW4gdGhlIGNvbnRhaW5lciB0aGF0IG1hdGNoIHBhdHRlcm5cbiAgICogdGhyb3VnaCBjYWxsYmFjaywgcmVwbGFjaW5nIHRob3NlIHZhbHVlcyB3aXRoIHRoZSByZXR1cm5lZCByZXN1bHRcbiAgICogb2YgY2FsbGJhY2suXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIHVuaXQgb3IgZnVuY3Rpb25cbiAgICogYW5kIG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoIGFsbCB2YWx1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gcGF0dGVybiAgICAgIFJlcGxhY2UgcGF0dGVybi5cbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdHMgICAgICAgICAgICAgICAgT3B0aW9ucyB0byBzcGVlZCB1cCB0aGUgc2VhcmNoLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0cy5wcm9wcyBBbiBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZmFzdCAgICAgICAgICAgU3RyaW5nIHRoYXTigJlzIHVzZWQgdG8gbmFycm93IGRvd25cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzIGFuZCBzcGVlZCB1cCB0aGUgcmVnZXhwIHNlYXJjaC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbnxzdHJpbmd9IGNhbGxiYWNrICAgU3RyaW5nIHRvIHJlcGxhY2UgcGF0dGVybiBvciBjYWxsYmFja1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHJldHVybnMgYSBuZXcgdmFsdWUuIFRoZSBjYWxsYmFja1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHJlY2VpdmUgdGhlIHNhbWUgYXJndW1lbnRzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRob3NlIHBhc3NlZCB0byBhIGZ1bmN0aW9uIHBhcmFtZXRlclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBgU3RyaW5nI3JlcGxhY2VgLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3QucmVwbGFjZVZhbHVlcygvXFxkK3JlbS8sIHsgZmFzdDogJ3JlbScgfSwgc3RyaW5nID0+IHtcbiAgICogICByZXR1cm4gMTUgKiBwYXJzZUludChzdHJpbmcpICsgJ3B4J1xuICAgKiB9KVxuICAgKi9cbiAgcmVwbGFjZVZhbHVlcyAocGF0dGVybiwgb3B0cywgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdHNcbiAgICAgIG9wdHMgPSB7IH1cbiAgICB9XG5cbiAgICB0aGlzLndhbGtEZWNscyhkZWNsID0+IHtcbiAgICAgIGlmIChvcHRzLnByb3BzICYmIG9wdHMucHJvcHMuaW5kZXhPZihkZWNsLnByb3ApID09PSAtMSkgcmV0dXJuXG4gICAgICBpZiAob3B0cy5mYXN0ICYmIGRlY2wudmFsdWUuaW5kZXhPZihvcHRzLmZhc3QpID09PSAtMSkgcmV0dXJuXG5cbiAgICAgIGRlY2wudmFsdWUgPSBkZWNsLnZhbHVlLnJlcGxhY2UocGF0dGVybiwgY2FsbGJhY2spXG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWBcbiAgICogZm9yIGFsbCBvZiB0aGUgY29udGFpbmVy4oCZcyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZENvbmRpdGlvbn0gY29uZGl0aW9uIEl0ZXJhdG9yIHJldHVybnMgdHJ1ZSBvciBmYWxzZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gSXMgZXZlcnkgY2hpbGQgcGFzcyBjb25kaXRpb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IG5vUHJlZml4ZXMgPSBydWxlLmV2ZXJ5KGkgPT4gaS5wcm9wWzBdICE9PSAnLScpXG4gICAqL1xuICBldmVyeSAoY29uZGl0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMuZXZlcnkoY29uZGl0aW9uKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIGNhbGxiYWNrIHJldHVybnMgYHRydWVgIGZvciAoYXQgbGVhc3QpIG9uZVxuICAgKiBvZiB0aGUgY29udGFpbmVy4oCZcyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZENvbmRpdGlvbn0gY29uZGl0aW9uIEl0ZXJhdG9yIHJldHVybnMgdHJ1ZSBvciBmYWxzZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gSXMgc29tZSBjaGlsZCBwYXNzIGNvbmRpdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgaGFzUHJlZml4ID0gcnVsZS5zb21lKGkgPT4gaS5wcm9wWzBdID09PSAnLScpXG4gICAqL1xuICBzb21lIChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5zb21lKGNvbmRpdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYGNoaWxkYOKAmXMgaW5kZXggd2l0aGluIHRoZSB7QGxpbmsgQ29udGFpbmVyI25vZGVzfSBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfSBjaGlsZCBDaGlsZCBvZiB0aGUgY3VycmVudCBjb250YWluZXIuXG4gICAqXG4gICAqIEByZXR1cm4ge251bWJlcn0gQ2hpbGQgaW5kZXguXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUuaW5kZXgoIHJ1bGUubm9kZXNbMl0gKSAvLz0+IDJcbiAgICovXG4gIGluZGV4IChjaGlsZCkge1xuICAgIGlmICh0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gY2hpbGRcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubm9kZXMuaW5kZXhPZihjaGlsZClcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVy4oCZcyBmaXJzdCBjaGlsZC5cbiAgICpcbiAgICogQHR5cGUge05vZGV9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUuZmlyc3QgPT09IHJ1bGVzLm5vZGVzWzBdXG4gICAqL1xuICBnZXQgZmlyc3QgKCkge1xuICAgIGlmICghdGhpcy5ub2RlcykgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLm5vZGVzWzBdXG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lcuKAmXMgbGFzdCBjaGlsZC5cbiAgICpcbiAgICogQHR5cGUge05vZGV9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUubGFzdCA9PT0gcnVsZS5ub2Rlc1tydWxlLm5vZGVzLmxlbmd0aCAtIDFdXG4gICAqL1xuICBnZXQgbGFzdCAoKSB7XG4gICAgaWYgKCF0aGlzLm5vZGVzKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMubm9kZXNbdGhpcy5ub2Rlcy5sZW5ndGggLSAxXVxuICB9XG5cbiAgbm9ybWFsaXplIChub2Rlcywgc2FtcGxlKSB7XG4gICAgaWYgKHR5cGVvZiBub2RlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuICAgICAgbm9kZXMgPSBjbGVhblNvdXJjZShwYXJzZShub2Rlcykubm9kZXMpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5vZGVzKSkge1xuICAgICAgbm9kZXMgPSBub2Rlcy5zbGljZSgwKVxuICAgICAgZm9yIChsZXQgaSBvZiBub2Rlcykge1xuICAgICAgICBpZiAoaS5wYXJlbnQpIGkucGFyZW50LnJlbW92ZUNoaWxkKGksICdpZ25vcmUnKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobm9kZXMudHlwZSA9PT0gJ3Jvb3QnKSB7XG4gICAgICBub2RlcyA9IG5vZGVzLm5vZGVzLnNsaWNlKDApXG4gICAgICBmb3IgKGxldCBpIG9mIG5vZGVzKSB7XG4gICAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSwgJ2lnbm9yZScpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2Rlcy50eXBlKSB7XG4gICAgICBub2RlcyA9IFtub2Rlc11cbiAgICB9IGVsc2UgaWYgKG5vZGVzLnByb3ApIHtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZXMudmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgZmllbGQgaXMgbWlzc2VkIGluIG5vZGUgY3JlYXRpb24nKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZXMudmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5vZGVzLnZhbHVlID0gU3RyaW5nKG5vZGVzLnZhbHVlKVxuICAgICAgfVxuICAgICAgbm9kZXMgPSBbbmV3IERlY2xhcmF0aW9uKG5vZGVzKV1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLnNlbGVjdG9yKSB7XG4gICAgICBsZXQgUnVsZSA9IHJlcXVpcmUoJy4vcnVsZScpXG4gICAgICBub2RlcyA9IFtuZXcgUnVsZShub2RlcyldXG4gICAgfSBlbHNlIGlmIChub2Rlcy5uYW1lKSB7XG4gICAgICBsZXQgQXRSdWxlID0gcmVxdWlyZSgnLi9hdC1ydWxlJylcbiAgICAgIG5vZGVzID0gW25ldyBBdFJ1bGUobm9kZXMpXVxuICAgIH0gZWxzZSBpZiAobm9kZXMudGV4dCkge1xuICAgICAgbm9kZXMgPSBbbmV3IENvbW1lbnQobm9kZXMpXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbm9kZSB0eXBlIGluIG5vZGUgY3JlYXRpb24nKVxuICAgIH1cblxuICAgIGxldCBwcm9jZXNzZWQgPSBub2Rlcy5tYXAoaSA9PiB7XG4gICAgICBpZiAoaS5wYXJlbnQpIGkucGFyZW50LnJlbW92ZUNoaWxkKGkpXG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmIChzYW1wbGUgJiYgdHlwZW9mIHNhbXBsZS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBpLnJhd3MuYmVmb3JlID0gc2FtcGxlLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaS5wYXJlbnQgPSB0aGlzXG4gICAgICByZXR1cm4gaVxuICAgIH0pXG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIENvbnRhaW5lciNcbiAgICogQG1lbWJlciB7Tm9kZVtdfSBub2RlcyBBbiBhcnJheSBjb250YWluaW5nIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9JylcbiAgICogcm9vdC5ub2Rlcy5sZW5ndGggICAgICAgICAgIC8vPT4gMVxuICAgKiByb290Lm5vZGVzWzBdLnNlbGVjdG9yICAgICAgLy89PiAnYSdcbiAgICogcm9vdC5ub2Rlc1swXS5ub2Rlc1swXS5wcm9wIC8vPT4gJ2NvbG9yJ1xuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29udGFpbmVyXG5cbi8qKlxuICogQGNhbGxiYWNrIGNoaWxkQ29uZGl0aW9uXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgICAgQ29udGFpbmVyIGNoaWxkLlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IENoaWxkIGluZGV4LlxuICogQHBhcmFtIHtOb2RlW119IG5vZGVzIEFsbCBjb250YWluZXIgY2hpbGRyZW4uXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIGNoaWxkSXRlcmF0b3JcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICBDb250YWluZXIgY2hpbGQuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggQ2hpbGQgaW5kZXguXG4gKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybmluZyBgZmFsc2VgIHdpbGwgYnJlYWsgaXRlcmF0aW9uLlxuICovXG4iXSwiZmlsZSI6ImNvbnRhaW5lci5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _list = _interopRequireDefault(require(\"./list\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS rule: a selector followed by a declaration block.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{}')\n * const rule = root.first\n * rule.type       //=> 'rule'\n * rule.toString() //=> 'a{}'\n */\nvar Rule = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Rule, _Container);\n\n  function Rule(defaults) {\n    var _this;\n\n    _this = _Container.call(this, defaults) || this;\n    _this.type = 'rule';\n    if (!_this.nodes) _this.nodes = [];\n    return _this;\n  }\n  /**\n   * An array containing the rule’s individual selectors.\n   * Groups of selectors are split at commas.\n   *\n   * @type {string[]}\n   *\n   * @example\n   * const root = postcss.parse('a, b { }')\n   * const rule = root.first\n   *\n   * rule.selector  //=> 'a, b'\n   * rule.selectors //=> ['a', 'b']\n   *\n   * rule.selectors = ['a', 'strong']\n   * rule.selector //=> 'a, strong'\n   */\n\n\n  _createClass(Rule, [{\n    key: \"selectors\",\n    get: function get() {\n      return _list.default.comma(this.selector);\n    },\n    set: function set(values) {\n      var match = this.selector ? this.selector.match(/,\\s*/) : null;\n      var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');\n      this.selector = values.join(sep);\n    }\n    /**\n     * @memberof Rule#\n     * @member {string} selector The rule’s full selector represented\n     *                           as a string.\n     *\n     * @example\n     * const root = postcss.parse('a, b { }')\n     * const rule = root.first\n     * rule.selector //=> 'a, b'\n     */\n\n    /**\n     * @memberof Rule#\n     * @member {object} raws Information to generate byte-to-byte equal\n     *                       node string as it was in the origin input.\n     *\n     * Every parser saves its own properties,\n     * but the default CSS parser uses:\n     *\n     * * `before`: the space symbols before the node. It also stores `*`\n     *   and `_` symbols before the declaration (IE hack).\n     * * `after`: the space symbols after the last child of the node\n     *   to the end of the node.\n     * * `between`: the symbols between the property and value\n     *   for declarations, selector and `{` for rules, or last parameter\n     *   and `{` for at-rules.\n     * * `semicolon`: contains `true` if the last child has\n     *   an (optional) semicolon.\n     * * `ownSemicolon`: contains `true` if there is semicolon after rule.\n     *\n     * PostCSS cleans selectors from comments and extra spaces,\n     * but it stores origin content in raws properties.\n     * As such, if you don’t change a declaration’s value,\n     * PostCSS will use the raw value with comments.\n     *\n     * @example\n     * const root = postcss.parse('a {\\n  color:black\\n}')\n     * root.first.first.raws //=> { before: '', between: ' ', after: '\\n' }\n     */\n\n  }]);\n\n  return Rule;\n}(_container.default);\n\nvar _default = Rule;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGUuZXM2Il0sIm5hbWVzIjpbIlJ1bGUiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsImxpc3QiLCJjb21tYSIsInNlbGVjdG9yIiwidmFsdWVzIiwibWF0Y2giLCJzZXAiLCJyYXciLCJqb2luIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7O0lBV01BLEk7OztBQUNKLGdCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLGtDQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLE1BQVo7QUFDQSxRQUFJLENBQUMsTUFBS0MsS0FBVixFQUFpQixNQUFLQSxLQUFMLEdBQWEsRUFBYjtBQUhJO0FBSXRCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCQWdCaUI7QUFDZixhQUFPQyxjQUFLQyxLQUFMLENBQVcsS0FBS0MsUUFBaEIsQ0FBUDtBQUNELEs7c0JBRWNDLE0sRUFBUTtBQUNyQixVQUFJQyxLQUFLLEdBQUcsS0FBS0YsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNFLEtBQWQsQ0FBb0IsTUFBcEIsQ0FBaEIsR0FBOEMsSUFBMUQ7QUFDQSxVQUFJQyxHQUFHLEdBQUdELEtBQUssR0FBR0EsS0FBSyxDQUFDLENBQUQsQ0FBUixHQUFjLE1BQU0sS0FBS0UsR0FBTCxDQUFTLFNBQVQsRUFBb0IsWUFBcEIsQ0FBbkM7QUFDQSxXQUFLSixRQUFMLEdBQWdCQyxNQUFNLENBQUNJLElBQVAsQ0FBWUYsR0FBWixDQUFoQjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNUNpQkcsa0I7O2VBMEVKWixJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcidcbmltcG9ydCBsaXN0IGZyb20gJy4vbGlzdCdcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIHJ1bGU6IGEgc2VsZWN0b3IgZm9sbG93ZWQgYnkgYSBkZWNsYXJhdGlvbiBibG9jay5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7fScpXG4gKiBjb25zdCBydWxlID0gcm9vdC5maXJzdFxuICogcnVsZS50eXBlICAgICAgIC8vPT4gJ3J1bGUnXG4gKiBydWxlLnRvU3RyaW5nKCkgLy89PiAnYXt9J1xuICovXG5jbGFzcyBSdWxlIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ3J1bGUnXG4gICAgaWYgKCF0aGlzLm5vZGVzKSB0aGlzLm5vZGVzID0gW11cbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBydWxl4oCZcyBpbmRpdmlkdWFsIHNlbGVjdG9ycy5cbiAgICogR3JvdXBzIG9mIHNlbGVjdG9ycyBhcmUgc3BsaXQgYXQgY29tbWFzLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhLCBiIHsgfScpXG4gICAqIGNvbnN0IHJ1bGUgPSByb290LmZpcnN0XG4gICAqXG4gICAqIHJ1bGUuc2VsZWN0b3IgIC8vPT4gJ2EsIGInXG4gICAqIHJ1bGUuc2VsZWN0b3JzIC8vPT4gWydhJywgJ2InXVxuICAgKlxuICAgKiBydWxlLnNlbGVjdG9ycyA9IFsnYScsICdzdHJvbmcnXVxuICAgKiBydWxlLnNlbGVjdG9yIC8vPT4gJ2EsIHN0cm9uZydcbiAgICovXG4gIGdldCBzZWxlY3RvcnMgKCkge1xuICAgIHJldHVybiBsaXN0LmNvbW1hKHRoaXMuc2VsZWN0b3IpXG4gIH1cblxuICBzZXQgc2VsZWN0b3JzICh2YWx1ZXMpIHtcbiAgICBsZXQgbWF0Y2ggPSB0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3Rvci5tYXRjaCgvLFxccyovKSA6IG51bGxcbiAgICBsZXQgc2VwID0gbWF0Y2ggPyBtYXRjaFswXSA6ICcsJyArIHRoaXMucmF3KCdiZXR3ZWVuJywgJ2JlZm9yZU9wZW4nKVxuICAgIHRoaXMuc2VsZWN0b3IgPSB2YWx1ZXMuam9pbihzZXApXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gc2VsZWN0b3IgVGhlIHJ1bGXigJlzIGZ1bGwgc2VsZWN0b3IgcmVwcmVzZW50ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHN0cmluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EsIGIgeyB9JylcbiAgICogY29uc3QgcnVsZSA9IHJvb3QuZmlyc3RcbiAgICogcnVsZS5zZWxlY3RvciAvLz0+ICdhLCBiJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFJ1bGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgbm9kZVxuICAgKiAgIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGUuXG4gICAqICogYGJldHdlZW5gOiB0aGUgc3ltYm9scyBiZXR3ZWVuIHRoZSBwcm9wZXJ0eSBhbmQgdmFsdWVcbiAgICogICBmb3IgZGVjbGFyYXRpb25zLCBzZWxlY3RvciBhbmQgYHtgIGZvciBydWxlcywgb3IgbGFzdCBwYXJhbWV0ZXJcbiAgICogICBhbmQgYHtgIGZvciBhdC1ydWxlcy5cbiAgICogKiBgc2VtaWNvbG9uYDogY29udGFpbnMgYHRydWVgIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgKiAqIGBvd25TZW1pY29sb25gOiBjb250YWlucyBgdHJ1ZWAgaWYgdGhlcmUgaXMgc2VtaWNvbG9uIGFmdGVyIHJ1bGUuXG4gICAqXG4gICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycyBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsXG4gICAqIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3cyBwcm9wZXJ0aWVzLlxuICAgKiBBcyBzdWNoLCBpZiB5b3UgZG9u4oCZdCBjaGFuZ2UgYSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUsXG4gICAqIFBvc3RDU1Mgd2lsbCB1c2UgdGhlIHJhdyB2YWx1ZSB3aXRoIGNvbW1lbnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7XFxuICBjb2xvcjpibGFja1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJycsIGJldHdlZW46ICcgJywgYWZ0ZXI6ICdcXG4nIH1cbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJ1bGVcbiJdLCJmaWxlIjoicnVsZS5qcyJ9\n","var baseGetTag = require('./_baseGetTag'),\n    isArray = require('./isArray'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\t_createClass(AutosizeInput, null, [{\n\t\tkey: 'getDerivedStateFromProps',\n\t\tvalue: function getDerivedStateFromProps(props, state) {\n\t\t\tvar id = props.id;\n\n\t\t\treturn id !== state.prevId ? { inputId: id || generateId(), prevId: id } : null;\n\t\t}\n\t}]);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId(),\n\t\t\tprevId: props.id\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"CellMeasurer\", {\n  enumerable: true,\n  get: function get() {\n    return _CellMeasurer[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"CellMeasurerCache\", {\n  enumerable: true,\n  get: function get() {\n    return _CellMeasurerCache[\"default\"];\n  }\n});\nexports[\"default\"] = void 0;\n\nvar _CellMeasurer = _interopRequireDefault(require(\"./CellMeasurer\"));\n\nvar _CellMeasurerCache = _interopRequireDefault(require(\"./CellMeasurerCache\"));\n\nvar _default = _CellMeasurer[\"default\"];\nexports[\"default\"] = _default;","/* 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 global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.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 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 DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var 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 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 getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\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 NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\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\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es-x/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = lengthOfArrayLike(O);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else delete O[to];\n    to += inc;\n    from += inc;\n  } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar bind = require('../internals/function-bind-context');\n\nvar TypeError = global.TypeError;\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        if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\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 global = require('../internals/global');\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 = global.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 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 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","'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","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.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","'use strict';\n/* eslint-disable es-x/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n  // convert -0 to +0\n  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n  var O = toIndexedObject(this);\n  var length = lengthOfArrayLike(O);\n  var index = length - 1;\n  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n  if (index < 0) index = length + index;\n  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n  return -1;\n} : $lastIndexOf;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar RangeError = global.RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw RangeError('Wrong length or index');\n  return length;\n};\n","'use strict';\nvar global = require('../internals/global');\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 = global.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","'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","var log = Math.log;\n\n// `Math.log1p` method implementation\n// https://tc39.es/ecma262/#sec-math.log1p\n// eslint-disable-next-line es-x/no-math-log1p -- safe\nmodule.exports = Math.log1p || function log1p(x) {\n  return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x);\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar n$ParseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / n$ParseFloat(whitespaces + '-0') !== -Infinity\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { n$ParseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(toString(string));\n  var result = n$ParseFloat(trimmedString);\n  return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\n} : n$ParseFloat;\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\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","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","// `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","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\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 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 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 hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n  return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\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('.', '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('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\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 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","'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","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","'use strict';\nvar $trimEnd = require('../internals/string-trim').end;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimEnd, trimRight }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\n  return $trimEnd(this);\n// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n","'use strict';\nvar $trimStart = require('../internals/string-trim').start;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimStart, trimLeft }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// https://tc39.es/ecma262/#String.prototype.trimleft\nmodule.exports = forcedStringTrimMethod('trimStart') ? function trimStart() {\n  return $trimStart(this);\n// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimStart;\n","var global = require('../internals/global');\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw RangeError('Wrong offset');\n  return offset;\n};\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var C = aConstructor(this);\n  var O = toObject(source);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var i, length, result, step, iterator, next;\n  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    O = [];\n    while (!(step = call(next, iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2]);\n  }\n  length = lengthOfArrayLike(O);\n  result = new (aTypedArrayConstructor(C))(length);\n  for (i = 0; length > i; i++) {\n    result[i] = mapping ? mapfn(O[i], i) : O[i];\n  }\n  return result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar hasOwn = require('../internals/has-own-property');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n  return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n  this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n  return find(store.entries, function (it) {\n    return it[0] === key;\n  });\n};\n\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.entries.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = findIndex(this.entries, function (it) {\n      return it[0] === key;\n    });\n    if (~index) splice(this.entries, index, 1);\n    return !!~index;\n  }\n};\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        id: id++,\n        frozen: undefined\n      });\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 data = getWeakData(anObject(key), true);\n      if (data === true) uncaughtFrozenStore(state).set(key, value);\n      else data[state.id] = value;\n      return that;\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n      // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n      'delete': function (key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n        return data && hasOwn(data, state.id) && delete data[state.id];\n      },\n      // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n      // https://tc39.es/ecma262/#sec-weakset.prototype.has\n      has: function has(key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state).has(key);\n        return data && hasOwn(data, state.id);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `WeakMap.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n      get: function get(key) {\n        var state = getInternalState(this);\n        if (isObject(key)) {\n          var data = getWeakData(key);\n          if (data === true) return uncaughtFrozenStore(state).get(key);\n          return data ? data[state.id] : undefined;\n        }\n      },\n      // `WeakMap.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n      set: function set(key, value) {\n        return define(this, key, value);\n      }\n    } : {\n      // `WeakSet.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-weakset.prototype.add\n      add: function add(value) {\n        return define(this, value, true);\n      }\n    });\n\n    return Constructor;\n  }\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 global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar userAgent = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar Function = global.Function;\n\nvar wrap = function (scheduler) {\n  return MSIE ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > 2;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = boundArgs ? arraySlice(arguments, 2) : undefined;\n    return scheduler(boundArgs ? function () {\n      apply(fn, this, args);\n    } : fn, timeout);\n  } : scheduler;\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\nmodule.exports = {\n  // `setTimeout` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n  setTimeout: wrap(global.setTimeout),\n  // `setInterval` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n  setInterval: wrap(global.setInterval)\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","'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, noTargetGet: 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, noTargetGet: true, forced: true }, {\n      Request: RequestConstructor\n    });\n  }\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n","var map = {\n\t\"./calibrate.svg\": 590,\n\t\"./cancel-24px.svg\": 591,\n\t\"./digital_signature_error.svg\": 592,\n\t\"./digital_signature_valid.svg\": 593,\n\t\"./digital_signature_warning.svg\": 594,\n\t\"./edit-24px.svg\": 595,\n\t\"./ic-audio-redact.svg\": 596,\n\t\"./ic-calibrate.svg\": 597,\n\t\"./ic-full-frame-video-and-audio-redact.svg\": 598,\n\t\"./ic-full-frame-video-redact.svg\": 599,\n\t\"./ic-operation-export-line.svg\": 600,\n\t\"./ic-triangle.svg\": 601,\n\t\"./ic_align_bottom.svg\": 602,\n\t\"./ic_align_left.svg\": 603,\n\t\"./ic_align_right.svg\": 604,\n\t\"./ic_align_top.svg\": 605,\n\t\"./ic_annotation_add_redact_black_24px.svg\": 606,\n\t\"./ic_annotation_apply_redact_black_24px.svg\": 607,\n\t\"./ic_annotation_area_black_24px.svg\": 608,\n\t\"./ic_annotation_arrow_black_24px.svg\": 609,\n\t\"./ic_annotation_callout_black_24px.svg\": 610,\n\t\"./ic_annotation_circle_black_24px.svg\": 611,\n\t\"./ic_annotation_cloud_black_24px.svg\": 612,\n\t\"./ic_annotation_cloudy_rectangular_area_black_24px.svg\": 613,\n\t\"./ic_annotation_distance_black_24px.svg\": 614,\n\t\"./ic_annotation_ellipse_area_black.svg\": 615,\n\t\"./ic_annotation_eraser_black_24px.svg\": 616,\n\t\"./ic_annotation_free_highlight_black_24px.svg\": 617,\n\t\"./ic_annotation_freehand_black_24px.svg\": 618,\n\t\"./ic_annotation_freetext_black_24px.svg\": 619,\n\t\"./ic_annotation_highlight_black_24px.svg\": 620,\n\t\"./ic_annotation_image_black_24px.svg\": 621,\n\t\"./ic_annotation_line_black_24px.svg\": 622,\n\t\"./ic_annotation_perimeter_black_24px.svg\": 623,\n\t\"./ic_annotation_polygon_black_24px.svg\": 624,\n\t\"./ic_annotation_polyline_black_24px.svg\": 625,\n\t\"./ic_annotation_rectangular_area_black_24px.svg\": 626,\n\t\"./ic_annotation_redact_black_24px.svg\": 627,\n\t\"./ic_annotation_ruler_black_24px.svg\": 628,\n\t\"./ic_annotation_signature_black_24px.svg\": 629,\n\t\"./ic_annotation_square_black_24px.svg\": 630,\n\t\"./ic_annotation_squiggly_black_24px.svg\": 631,\n\t\"./ic_annotation_stamp_black_24px.svg\": 632,\n\t\"./ic_annotation_sticky_note_black_24px.svg\": 633,\n\t\"./ic_annotation_strikeout_black_24px.svg\": 634,\n\t\"./ic_annotation_underline_black_24px.svg\": 635,\n\t\"./ic_annotations_black_24px.svg\": 636,\n\t\"./ic_arrow_down_black_24px.svg\": 637,\n\t\"./ic_arrow_drop_down_black_24px.svg\": 638,\n\t\"./ic_arrow_up_black_24px.svg\": 639,\n\t\"./ic_bookmarks_black_24px.svg\": 640,\n\t\"./ic_check_black_24px.svg\": 641,\n\t\"./ic_chevron_down_black_24px.svg\": 642,\n\t\"./ic_chevron_left_black_24px.svg\": 643,\n\t\"./ic_chevron_right_black_24px.svg\": 644,\n\t\"./ic_chevron_up_black_24px.svg\": 645,\n\t\"./ic_close_black_24px.svg\": 646,\n\t\"./ic_comment_black_24px.svg\": 647,\n\t\"./ic_copy_black_24px.svg\": 648,\n\t\"./ic_crop_black_24px.svg\": 649,\n\t\"./ic_delete_black_24px.svg\": 650,\n\t\"./ic_edit_black_24px.svg\": 651,\n\t\"./ic_edit_page_24px.svg\": 652,\n\t\"./ic_extract_black_24px.svg\": 653,\n\t\"./ic_fileattachment_24px.svg\": 654,\n\t\"./ic_fit_page_black_24px.svg\": 655,\n\t\"./ic_fit_width_black_24px.svg\": 656,\n\t\"./ic_font_size_black_24px.svg\": 657,\n\t\"./ic_group_24px.svg\": 658,\n\t\"./ic_group_button_24px.svg\": 659,\n\t\"./ic_layers_24px.svg\": 660,\n\t\"./ic_left_sidebar_black_24px.svg\": 661,\n\t\"./ic_list_black_24px.svg\": 662,\n\t\"./ic_menu_black_24px.svg\": 663,\n\t\"./ic_microphone_24px.svg\": 664,\n\t\"./ic_mode_day_black_24px.svg\": 665,\n\t\"./ic_mode_night_black_24px.svg\": 666,\n\t\"./ic_more_black_24px.svg\": 667,\n\t\"./ic_music_24px.svg\": 668,\n\t\"./ic_outline_black_24px.svg\": 669,\n\t\"./ic_overflow_black_24px.svg\": 670,\n\t\"./ic_palette_black_24px.svg\": 671,\n\t\"./ic_pan_black_24px.svg\": 672,\n\t\"./ic_pause_24px.svg\": 673,\n\t\"./ic_placeholder_black_24px.svg\": 674,\n\t\"./ic_play_24px.svg\": 675,\n\t\"./ic_playcircle_24px.svg\": 676,\n\t\"./ic_rotate_left_black_24px.svg\": 677,\n\t\"./ic_rotate_right_black_24px.svg\": 678,\n\t\"./ic_search_black_24px.svg\": 679,\n\t\"./ic_select_black_24px.svg\": 680,\n\t\"./ic_select_rectangular_black_24px.svg\": 681,\n\t\"./ic_sound_24px.svg\": 682,\n\t\"./ic_thumbnails_black_24px.svg\": 683,\n\t\"./ic_thumbnails_grid_black_24px.svg\": 684,\n\t\"./ic_ungroup_24px.svg\": 685,\n\t\"./ic_view_mode_continuous_black_24px.svg\": 686,\n\t\"./ic_view_mode_cover_black_24px.svg\": 687,\n\t\"./ic_view_mode_facing_black_24px.svg\": 688,\n\t\"./ic_view_mode_reflow_black_24px.svg\": 689,\n\t\"./ic_view_mode_single_black_24px.svg\": 690,\n\t\"./ic_viewer_settings_black_24px.svg\": 691,\n\t\"./ic_volume_24px.svg\": 692,\n\t\"./ic_zoom_in_black_24px.svg\": 693,\n\t\"./ic_zoom_out_black_24px.svg\": 694,\n\t\"./icon - header - mode - day.svg\": 695,\n\t\"./icon - header - mode - night.svg\": 696,\n\t\"./icon - header - select - line.svg\": 697,\n\t\"./icon - tool - pen and shape - phone - line.svg\": 698,\n\t\"./icon - tool - redaction - full page.svg\": 699,\n\t\"./icon - tool - redaction - text.svg\": 700,\n\t\"./icon - tools - more - vertical.svg\": 701,\n\t\"./icon-annotation-status-accepted.svg\": 702,\n\t\"./icon-annotation-status-cancelled.svg\": 703,\n\t\"./icon-annotation-status-completed.svg\": 704,\n\t\"./icon-annotation-status-marked.svg\": 705,\n\t\"./icon-annotation-status-none.svg\": 706,\n\t\"./icon-annotation-status-rejected.svg\": 707,\n\t\"./icon-annotation-status-unmarked.svg\": 708,\n\t\"./icon-arrow-down.svg\": 709,\n\t\"./icon-arrow-left.svg\": 710,\n\t\"./icon-arrow-right.svg\": 711,\n\t\"./icon-arrow-to-bottom.svg\": 712,\n\t\"./icon-arrow-to-middle.svg\": 713,\n\t\"./icon-arrow-to-top.svg\": 714,\n\t\"./icon-arrow-up.svg\": 715,\n\t\"./icon-chat-bubble.svg\": 716,\n\t\"./icon-chevron-down-bold.svg\": 717,\n\t\"./icon-chevron-down.svg\": 718,\n\t\"./icon-chevron-left.svg\": 719,\n\t\"./icon-chevron-right.svg\": 720,\n\t\"./icon-chevron-up.svg\": 721,\n\t\"./icon-close.svg\": 722,\n\t\"./icon-colour-none.svg\": 723,\n\t\"./icon-comments-filter.svg\": 724,\n\t\"./icon-delete-fill.svg\": 725,\n\t\"./icon-delete-line.svg\": 726,\n\t\"./icon-detach-horizontal.svg\": 727,\n\t\"./icon-detach-toolbar.svg\": 728,\n\t\"./icon-download.svg\": 729,\n\t\"./icon-drag-handle.svg\": 730,\n\t\"./icon-edit-form-field.svg\": 731,\n\t\"./icon-form-field-checkbox.svg\": 732,\n\t\"./icon-form-field-combobox.svg\": 733,\n\t\"./icon-form-field-listbox.svg\": 734,\n\t\"./icon-form-field-radiobutton.svg\": 735,\n\t\"./icon-form-field-signature.svg\": 736,\n\t\"./icon-form-field-text.svg\": 737,\n\t\"./icon-header-annotation-fill.svg\": 738,\n\t\"./icon-header-annotation-line.svg\": 739,\n\t\"./icon-header-annotations-line.svg\": 740,\n\t\"./icon-header-chat-fill.svg\": 741,\n\t\"./icon-header-chat-line.svg\": 742,\n\t\"./icon-header-clear-search.svg\": 743,\n\t\"./icon-header-download.svg\": 744,\n\t\"./icon-header-file-picker-line.svg\": 745,\n\t\"./icon-header-full screen-exit.svg\": 746,\n\t\"./icon-header-full-screen-exit.svg\": 747,\n\t\"./icon-header-full-screen.svg\": 748,\n\t\"./icon-header-language.svg\": 749,\n\t\"./icon-header-page manipulation-line.svg\": 750,\n\t\"./icon-header-page-manipulation-fill.svg\": 751,\n\t\"./icon-header-page-manipulation-insert-above.svg\": 752,\n\t\"./icon-header-page-manipulation-insert-below.svg\": 753,\n\t\"./icon-header-page-manipulation-line.svg\": 754,\n\t\"./icon-header-page-manipulation-page- layout-single-page-line.svg\": 755,\n\t\"./icon-header-page-manipulation-page-layout-cover-fill.svg\": 756,\n\t\"./icon-header-page-manipulation-page-layout-cover-line.svg\": 757,\n\t\"./icon-header-page-manipulation-page-layout-cover-page-line.svg\": 758,\n\t\"./icon-header-page-manipulation-page-layout-double-page-fill.svg\": 759,\n\t\"./icon-header-page-manipulation-page-layout-double-page-line.svg\": 760,\n\t\"./icon-header-page-manipulation-page-layout-single-page-fill.svg\": 761,\n\t\"./icon-header-page-manipulation-page-layout-single-page-line.svg\": 762,\n\t\"./icon-header-page-manipulation-page-rotation-clockwise-fill.svg\": 763,\n\t\"./icon-header-page-manipulation-page-rotation-clockwise-line.svg\": 764,\n\t\"./icon-header-page-manipulation-page-rotation-counterclockwise-fill.svg\": 765,\n\t\"./icon-header-page-manipulation-page-rotation-counterclockwise-line.svg\": 766,\n\t\"./icon-header-page-manipulation-page-transition-continuous-page-fill.svg\": 767,\n\t\"./icon-header-page-manipulation-page-transition-continuous-page-line.svg\": 768,\n\t\"./icon-header-page-manipulation-page-transition-page-by-page-fill.svg\": 769,\n\t\"./icon-header-page-manipulation-page-transition-page-by-page-line.svg\": 770,\n\t\"./icon-header-page-manipulation-page-transition-reader.svg\": 771,\n\t\"./icon-header-pan.svg\": 772,\n\t\"./icon-header-print-fill.svg\": 773,\n\t\"./icon-header-print-line.svg\": 774,\n\t\"./icon-header-search.svg\": 775,\n\t\"./icon-header-select-fill.svg\": 776,\n\t\"./icon-header-select-line.svg\": 777,\n\t\"./icon-header-settings-fill.svg\": 778,\n\t\"./icon-header-settings-line.svg\": 779,\n\t\"./icon-header-sidebar-fill.svg\": 780,\n\t\"./icon-header-sidebar-line-selected.svg\": 781,\n\t\"./icon-header-sidebar-line.svg\": 782,\n\t\"./icon-header-zoom-fit-to-page.svg\": 783,\n\t\"./icon-header-zoom-fit-to-width.svg\": 784,\n\t\"./icon-header-zoom-in-fill.svg\": 785,\n\t\"./icon-header-zoom-in-line.svg\": 786,\n\t\"./icon-header-zoom-marquee.svg\": 787,\n\t\"./icon-header-zoom-out-fill.svg\": 788,\n\t\"./icon-header-zoom-out-line.svg\": 789,\n\t\"./icon-info.svg\": 790,\n\t\"./icon-keyboard.svg\": 791,\n\t\"./icon-linestyle-end-arrow-closed-reverse.svg\": 792,\n\t\"./icon-linestyle-end-arrow-closed.svg\": 793,\n\t\"./icon-linestyle-end-arrow-open-reverse.svg\": 794,\n\t\"./icon-linestyle-end-arrow-open.svg\": 795,\n\t\"./icon-linestyle-end-butt.svg\": 796,\n\t\"./icon-linestyle-end-circle.svg\": 797,\n\t\"./icon-linestyle-end-diamond.svg\": 798,\n\t\"./icon-linestyle-end-slash.svg\": 799,\n\t\"./icon-linestyle-end-square.svg\": 800,\n\t\"./icon-linestyle-none.svg\": 801,\n\t\"./icon-linestyle-start-arrow-closed-reverse.svg\": 802,\n\t\"./icon-linestyle-start-arrow-closed.svg\": 803,\n\t\"./icon-linestyle-start-arrow-open-reverse.svg\": 804,\n\t\"./icon-linestyle-start-arrow-open.svg\": 805,\n\t\"./icon-linestyle-start-arrow-reverse.svg\": 806,\n\t\"./icon-linestyle-start-butt.svg\": 807,\n\t\"./icon-linestyle-start-circle.svg\": 808,\n\t\"./icon-linestyle-start-diamond.svg\": 809,\n\t\"./icon-linestyle-start-slash.svg\": 810,\n\t\"./icon-linestyle-start-square.svg\": 811,\n\t\"./icon-lock.svg\": 812,\n\t\"./icon-menu-add-style-fill.svg\": 813,\n\t\"./icon-menu-add-style-line.svg\": 814,\n\t\"./icon-menu-add.svg\": 815,\n\t\"./icon-menu-align-centre.svg\": 816,\n\t\"./icon-menu-align-left.svg\": 817,\n\t\"./icon-menu-align-right.svg\": 818,\n\t\"./icon-menu-bold.svg\": 819,\n\t\"./icon-menu-centre-align.svg\": 820,\n\t\"./icon-menu-checkmark.svg\": 821,\n\t\"./icon-menu-italic.svg\": 822,\n\t\"./icon-menu-left-align.svg\": 823,\n\t\"./icon-menu-no-colour.svg\": 824,\n\t\"./icon-menu-right-align.svg\": 825,\n\t\"./icon-menu-style-line.svg\": 826,\n\t\"./icon-menu-text-underline.svg\": 827,\n\t\"./icon-no-marked-redactions.svg\": 828,\n\t\"./icon-operation-eraser.svg\": 829,\n\t\"./icon-operation-redo.svg\": 830,\n\t\"./icon-operation-undo.svg\": 831,\n\t\"./icon-page-insertion-insert-above.svg\": 832,\n\t\"./icon-page-insertion-insert-below.svg\": 833,\n\t\"./icon-page-manipulation-delete.svg\": 834,\n\t\"./icon-page-manipulation-extract.svg\": 835,\n\t\"./icon-page-move-down.svg\": 836,\n\t\"./icon-page-move-up.svg\": 837,\n\t\"./icon-page-replacement.svg\": 838,\n\t\"./icon-panel-bookmark-fill.svg\": 839,\n\t\"./icon-panel-bookmark-line.svg\": 840,\n\t\"./icon-panel-outlines.svg\": 841,\n\t\"./icon-panel-thumbnail-fill.svg\": 842,\n\t\"./icon-panel-thumbnail-line.svg\": 843,\n\t\"./icon-pencil-line.svg\": 844,\n\t\"./icon-plus-sign.svg\": 845,\n\t\"./icon-post-reply.svg\": 846,\n\t\"./icon-redact-panel.svg\": 847,\n\t\"./icon-save.svg\": 848,\n\t\"./icon-text-bold.svg\": 849,\n\t\"./icon-text-italic.svg\": 850,\n\t\"./icon-text-justify-center.svg\": 851,\n\t\"./icon-text-underline.svg\": 852,\n\t\"./icon-thumbtack.svg\": 853,\n\t\"./icon-tool-arc.svg\": 854,\n\t\"./icon-tool-callout-fill.svg\": 855,\n\t\"./icon-tool-callout-line.svg\": 856,\n\t\"./icon-tool-changeview.svg\": 857,\n\t\"./icon-tool-check-stamp.svg\": 858,\n\t\"./icon-tool-comment-fill.svg\": 859,\n\t\"./icon-tool-comment-line.svg\": 860,\n\t\"./icon-tool-cross-stamp.svg\": 861,\n\t\"./icon-tool-dot-stamp.svg\": 862,\n\t\"./icon-tool-fill-and-sign-calendar.svg\": 863,\n\t\"./icon-tool-free-highlight-fill.svg\": 864,\n\t\"./icon-tool-free-highlight-line.svg\": 865,\n\t\"./icon-tool-free-text.svg\": 866,\n\t\"./icon-tool-highlight.svg\": 867,\n\t\"./icon-tool-image-fill.svg\": 868,\n\t\"./icon-tool-image-line.svg\": 869,\n\t\"./icon-tool-link.svg\": 870,\n\t\"./icon-tool-measurement-arc.svg\": 871,\n\t\"./icon-tool-measurement-area-ellipse-line.svg\": 872,\n\t\"./icon-tool-measurement-area-fill.svg\": 873,\n\t\"./icon-tool-measurement-area-line.svg\": 874,\n\t\"./icon-tool-measurement-area-polygon-line.svg\": 875,\n\t\"./icon-tool-measurement-cloud-area-line.svg\": 876,\n\t\"./icon-tool-measurement-distance-fill.svg\": 877,\n\t\"./icon-tool-measurement-distance-line.svg\": 878,\n\t\"./icon-tool-measurement-perimeter.svg\": 879,\n\t\"./icon-tool-modal-close.svg\": 880,\n\t\"./icon-tool-model3d.svg\": 881,\n\t\"./icon-tool-more.svg\": 882,\n\t\"./icon-tool-page-redact.svg\": 883,\n\t\"./icon-tool-paste-line.svg\": 884,\n\t\"./icon-tool-pen-fill.svg\": 885,\n\t\"./icon-tool-pen-highlight.svg\": 886,\n\t\"./icon-tool-pen-line.svg\": 887,\n\t\"./icon-tool-redaction-area.svg\": 888,\n\t\"./icon-tool-redaction-full-page.svg\": 889,\n\t\"./icon-tool-redaction-inline.svg\": 890,\n\t\"./icon-tool-select-area-redaction.svg\": 891,\n\t\"./icon-tool-select-pages.svg\": 892,\n\t\"./icon-tool-shape-arrow.svg\": 893,\n\t\"./icon-tool-shape-cloud.svg\": 894,\n\t\"./icon-tool-shape-line.svg\": 895,\n\t\"./icon-tool-shape-oval.svg\": 896,\n\t\"./icon-tool-shape-polygon.svg\": 897,\n\t\"./icon-tool-shape-polyline.svg\": 898,\n\t\"./icon-tool-shape-rectangle.svg\": 899,\n\t\"./icon-tool-signature.svg\": 900,\n\t\"./icon-tool-stamp-fill.svg\": 901,\n\t\"./icon-tool-stamp-line.svg\": 902,\n\t\"./icon-tool-text-free-text.svg\": 903,\n\t\"./icon-tool-text-manipulation-free-highlight-line.svg\": 904,\n\t\"./icon-tool-text-manipulation-highlight.svg\": 905,\n\t\"./icon-tool-text-manipulation-squiggly.svg\": 906,\n\t\"./icon-tool-text-manipulation-strikethrough.svg\": 907,\n\t\"./icon-tool-text-manipulation-underline.svg\": 908,\n\t\"./icon-tool-unlink.svg\": 909,\n\t\"./icon-tools-more.svg\": 910,\n\t\"./icon-transparent-colour.svg\": 911,\n\t\"./icon-unposted-comment.svg\": 912,\n\t\"./icon-view.svg\": 913,\n\t\"./icon-widget-editing.svg\": 914,\n\t\"./icon-zoom-thumb-in.svg\": 915,\n\t\"./icon-zoom-thumb-out.svg\": 916,\n\t\"./illustration - empty state - outlines.svg\": 917,\n\t\"./multi select.svg\": 918,\n\t\"./redact-icons-credit-card.svg\": 919,\n\t\"./redact-icons-email.svg\": 920,\n\t\"./redact-icons-image.svg\": 921,\n\t\"./redact-icons-phone-number.svg\": 922,\n\t\"./textselect_cursor.svg\": 923\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 266;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\n\nvar _shims = require(\"./shims\");\n\nvar _domFns = require(\"./domFns\");\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n  // If no bounds, short-circuit and move on\n  if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n  var bounds = draggable.props.bounds;\n  bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n  var node = findDOMNode(draggable);\n\n  if (typeof bounds === 'string') {\n    var ownerDocument = node.ownerDocument;\n    var ownerWindow = ownerDocument.defaultView;\n    var boundNode;\n\n    if (bounds === 'parent') {\n      boundNode = node.parentNode;\n    } else {\n      boundNode = ownerDocument.querySelector(bounds);\n    }\n\n    if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n      throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n    }\n\n    var boundNodeEl\n    /*: HTMLElement*/\n    = boundNode; // for Flow, can't seem to refine correctly\n\n    var nodeStyle = ownerWindow.getComputedStyle(node);\n    var boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n    bounds = {\n      left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n      top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n      right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n      bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n    };\n  } // Keep x and y below right and bottom limits...\n\n\n  if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n  if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n  if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n  if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n  return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n  var x = Math.round(pendingX / grid[0]) * grid[0];\n  var y = Math.round(pendingY / grid[1]) * grid[1];\n  return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n  var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n  if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n  var node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n  var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n  return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n} // Create an data object exposed by <DraggableCore>'s events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n  var state = draggable.state;\n  var isStart = !(0, _shims.isNum)(state.lastX);\n  var node = findDOMNode(draggable);\n\n  if (isStart) {\n    // If this is our first move, use the x and y as last coords.\n    return {\n      node: node,\n      deltaX: 0,\n      deltaY: 0,\n      lastX: x,\n      lastY: y,\n      x: x,\n      y: y\n    };\n  } else {\n    // Otherwise calculate proper values.\n    return {\n      node: node,\n      deltaX: x - state.lastX,\n      deltaY: y - state.lastY,\n      lastX: state.lastX,\n      lastY: state.lastY,\n      x: x,\n      y: y\n    };\n  }\n} // Create an data exposed by <Draggable>'s events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n  var scale = draggable.props.scale;\n  return {\n    node: coreData.node,\n    x: draggable.state.x + coreData.deltaX / scale,\n    y: draggable.state.y + coreData.deltaY / scale,\n    deltaX: coreData.deltaX / scale,\n    deltaY: coreData.deltaY / scale,\n    lastX: draggable.state.x,\n    lastY: draggable.state.y\n  };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n  return {\n    left: bounds.left,\n    top: bounds.top,\n    right: bounds.right,\n    bottom: bounds.bottom\n  };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n  var node = draggable.findDOMNode();\n\n  if (!node) {\n    throw new Error('<DraggableCore>: Unmounted during event!');\n  } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n  return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log() {\n  var _console;\n\n  if (undefined) (_console = console).log.apply(_console, arguments);\n}","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var isArray = require('./isArray');\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n  if (!arguments.length) {\n    return [];\n  }\n  var value = arguments[0];\n  return isArray(value) ? value : [value];\n}\n\nmodule.exports = castArray;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport type { Task } from './types.js'\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n//     var channel = new MessageChannel();\n//     channel.port1.onmessage = callback;\n//     return function requestCall() {\n//         channel.port2.postMessage(0);\n//     };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n//     return function requestCall() {\n//         setImmediate(callback);\n//     };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","import type { Task } from './types.js'\nimport { RawTask } from './RawTask.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = defaultOverscanIndicesGetter;\nexports.SCROLL_DIRECTION_VERTICAL = exports.SCROLL_DIRECTION_HORIZONTAL = exports.SCROLL_DIRECTION_FORWARD = exports.SCROLL_DIRECTION_BACKWARD = void 0;\n\nvar _types = require(\"./types\");\n\nvar SCROLL_DIRECTION_BACKWARD = -1;\nexports.SCROLL_DIRECTION_BACKWARD = SCROLL_DIRECTION_BACKWARD;\nvar SCROLL_DIRECTION_FORWARD = 1;\nexports.SCROLL_DIRECTION_FORWARD = SCROLL_DIRECTION_FORWARD;\nvar SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexports.SCROLL_DIRECTION_HORIZONTAL = SCROLL_DIRECTION_HORIZONTAL;\nvar SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexports.SCROLL_DIRECTION_VERTICAL = SCROLL_DIRECTION_VERTICAL;\n\nfunction defaultOverscanIndicesGetter(_ref) {\n  var cellCount = _ref.cellCount,\n      overscanCellsCount = _ref.overscanCellsCount,\n      scrollDirection = _ref.scrollDirection,\n      startIndex = _ref.startIndex,\n      stopIndex = _ref.stopIndex;\n\n  if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n    return {\n      overscanStartIndex: Math.max(0, startIndex),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n    };\n  } else {\n    return {\n      overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex)\n    };\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = defaultCellRangeRenderer;\n\nvar _types = require(\"./types\");\n\n/**\n * Default implementation of cellRangeRenderer used by Grid.\n * This renderer supports cell-caching while the user is scrolling.\n */\nfunction defaultCellRangeRenderer(_ref) {\n  var cellCache = _ref.cellCache,\n      cellRenderer = _ref.cellRenderer,\n      columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,\n      columnStartIndex = _ref.columnStartIndex,\n      columnStopIndex = _ref.columnStopIndex,\n      deferredMeasurementCache = _ref.deferredMeasurementCache,\n      horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,\n      isScrolling = _ref.isScrolling,\n      isScrollingOptOut = _ref.isScrollingOptOut,\n      parent = _ref.parent,\n      rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,\n      rowStartIndex = _ref.rowStartIndex,\n      rowStopIndex = _ref.rowStopIndex,\n      styleCache = _ref.styleCache,\n      verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,\n      visibleColumnIndices = _ref.visibleColumnIndices,\n      visibleRowIndices = _ref.visibleRowIndices;\n  var renderedCells = []; // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).\n  // User cannot scroll beyond these size limitations.\n  // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.\n  // We should never cache styles for compressed offsets though as this can lead to bugs.\n  // See issue #576 for more.\n\n  var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();\n  var canCacheStyle = !isScrolling && !areOffsetsAdjusted;\n\n  for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n    var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);\n\n    for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n      var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);\n      var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;\n      var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n      var style = void 0; // Cache style objects so shallow-compare doesn't re-render unnecessarily.\n\n      if (canCacheStyle && styleCache[key]) {\n        style = styleCache[key];\n      } else {\n        // In deferred mode, cells will be initially rendered before we know their size.\n        // Don't interfere with CellMeasurer's measurements by setting an invalid size.\n        if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {\n          // Position not-yet-measured cells at top/left 0,0,\n          // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.\n          // Positioning them further to the right/bottom influences their measured size.\n          style = {\n            height: 'auto',\n            left: 0,\n            position: 'absolute',\n            top: 0,\n            width: 'auto'\n          };\n        } else {\n          style = {\n            height: rowDatum.size,\n            left: columnDatum.offset + horizontalOffsetAdjustment,\n            position: 'absolute',\n            top: rowDatum.offset + verticalOffsetAdjustment,\n            width: columnDatum.size\n          };\n          styleCache[key] = style;\n        }\n      }\n\n      var cellRendererParams = {\n        columnIndex: columnIndex,\n        isScrolling: isScrolling,\n        isVisible: isVisible,\n        key: key,\n        parent: parent,\n        rowIndex: rowIndex,\n        style: style\n      };\n      var renderedCell = void 0; // Avoid re-creating cells while scrolling.\n      // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n      // If a scroll is in progress- cache and reuse cells.\n      // This cache will be thrown away once scrolling completes.\n      // However if we are scaling scroll positions and sizes, we should also avoid caching.\n      // This is because the offset changes slightly as scroll position changes and caching leads to stale values.\n      // For more info refer to issue #395\n      //\n      // If isScrollingOptOut is specified, we always cache cells.\n      // For more info refer to issue #1028\n\n      if ((isScrollingOptOut || isScrolling) && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {\n        if (!cellCache[key]) {\n          cellCache[key] = cellRenderer(cellRendererParams);\n        }\n\n        renderedCell = cellCache[key]; // If the user is no longer scrolling, don't cache cells.\n        // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.\n      } else {\n        renderedCell = cellRenderer(cellRendererParams);\n      }\n\n      if (renderedCell == null || renderedCell === false) {\n        continue;\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        warnAboutMissingStyle(parent, renderedCell);\n      }\n\n      renderedCells.push(renderedCell);\n    }\n  }\n\n  return renderedCells;\n}\n\nfunction warnAboutMissingStyle(parent, renderedCell) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderedCell) {\n      // If the direct child is a CellMeasurer, then we should check its child\n      // See issue #611\n      if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {\n        renderedCell = renderedCell.props.children;\n      }\n\n      if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {\n        parent.__warnedAboutMissingStyle = true;\n        console.warn('Rendered cell should include style property for positioning.');\n      }\n    }\n  }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.bpfrpt_proptype_Scroll = exports.bpfrpt_proptype_RenderedRows = exports.bpfrpt_proptype_RowRenderer = exports.bpfrpt_proptype_RowRendererParams = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar bpfrpt_proptype_RowRendererParams = process.env.NODE_ENV === 'production' ? null : {\n  \"index\": _propTypes[\"default\"].number.isRequired,\n  \"isScrolling\": _propTypes[\"default\"].bool.isRequired,\n  \"isVisible\": _propTypes[\"default\"].bool.isRequired,\n  \"key\": _propTypes[\"default\"].string.isRequired,\n  \"parent\": _propTypes[\"default\"].object.isRequired,\n  \"style\": _propTypes[\"default\"].object.isRequired\n};\nexports.bpfrpt_proptype_RowRendererParams = bpfrpt_proptype_RowRendererParams;\nvar bpfrpt_proptype_RowRenderer = process.env.NODE_ENV === 'production' ? null : _propTypes[\"default\"].func;\nexports.bpfrpt_proptype_RowRenderer = bpfrpt_proptype_RowRenderer;\nvar bpfrpt_proptype_RenderedRows = process.env.NODE_ENV === 'production' ? null : {\n  \"overscanStartIndex\": _propTypes[\"default\"].number.isRequired,\n  \"overscanStopIndex\": _propTypes[\"default\"].number.isRequired,\n  \"startIndex\": _propTypes[\"default\"].number.isRequired,\n  \"stopIndex\": _propTypes[\"default\"].number.isRequired\n};\nexports.bpfrpt_proptype_RenderedRows = bpfrpt_proptype_RenderedRows;\nvar bpfrpt_proptype_Scroll = process.env.NODE_ENV === 'production' ? null : {\n  \"clientHeight\": _propTypes[\"default\"].number.isRequired,\n  \"scrollHeight\": _propTypes[\"default\"].number.isRequired,\n  \"scrollTop\": _propTypes[\"default\"].number.isRequired\n};\nexports.bpfrpt_proptype_Scroll = bpfrpt_proptype_Scroll;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.bpfrpt_proptype_CellMeasureCache = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar bpfrpt_proptype_CellMeasureCache = process.env.NODE_ENV === 'production' ? null : {\n  \"hasFixedWidth\": _propTypes[\"default\"].func.isRequired,\n  \"hasFixedHeight\": _propTypes[\"default\"].func.isRequired,\n  \"has\": _propTypes[\"default\"].func.isRequired,\n  \"set\": _propTypes[\"default\"].func.isRequired,\n  \"getHeight\": _propTypes[\"default\"].func.isRequired,\n  \"getWidth\": _propTypes[\"default\"].func.isRequired\n};\nexports.bpfrpt_proptype_CellMeasureCache = bpfrpt_proptype_CellMeasureCache;","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _picocolors = _interopRequireDefault(require(\"picocolors\"));\n\nvar _terminalHighlight = _interopRequireDefault(require(\"./terminal-highlight\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n *   postcss.parse('a{')\n * } catch (error) {\n *   if (error.name === 'CssSyntaxError') {\n *     error //=> CssSyntaxError\n *   }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' })\n */\nvar CssSyntaxError = /*#__PURE__*/function (_Error) {\n  _inheritsLoose(CssSyntaxError, _Error);\n\n  /**\n   * @param {string} message  Error message.\n   * @param {number} [line]   Source line of the error.\n   * @param {number} [column] Source column of the error.\n   * @param {string} [source] Source code of the broken file.\n   * @param {string} [file]   Absolute path to the broken file.\n   * @param {string} [plugin] PostCSS plugin name, if error came from plugin.\n   */\n  function CssSyntaxError(message, line, column, source, file, plugin) {\n    var _this;\n\n    _this = _Error.call(this, message) || this;\n    /**\n     * Always equal to `'CssSyntaxError'`. You should always check error type\n     * by `error.name === 'CssSyntaxError'`\n     * instead of `error instanceof CssSyntaxError`,\n     * because npm could have several PostCSS versions.\n     *\n     * @type {string}\n     *\n     * @example\n     * if (error.name === 'CssSyntaxError') {\n     *   error //=> CssSyntaxError\n     * }\n     */\n\n    _this.name = 'CssSyntaxError';\n    /**\n     * Error message.\n     *\n     * @type {string}\n     *\n     * @example\n     * error.message //=> 'Unclosed block'\n     */\n\n    _this.reason = message;\n\n    if (file) {\n      /**\n       * Absolute path to the broken file.\n       *\n       * @type {string}\n       *\n       * @example\n       * error.file       //=> 'a.sass'\n       * error.input.file //=> 'a.css'\n       */\n      _this.file = file;\n    }\n\n    if (source) {\n      /**\n       * Source code of the broken file.\n       *\n       * @type {string}\n       *\n       * @example\n       * error.source       //=> 'a { b {} }'\n       * error.input.column //=> 'a b { }'\n       */\n      _this.source = source;\n    }\n\n    if (plugin) {\n      /**\n       * Plugin name, if error came from plugin.\n       *\n       * @type {string}\n       *\n       * @example\n       * error.plugin //=> 'postcss-vars'\n       */\n      _this.plugin = plugin;\n    }\n\n    if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n      /**\n       * Source line of the error.\n       *\n       * @type {number}\n       *\n       * @example\n       * error.line       //=> 2\n       * error.input.line //=> 4\n       */\n      _this.line = line;\n      /**\n       * Source column of the error.\n       *\n       * @type {number}\n       *\n       * @example\n       * error.column       //=> 1\n       * error.input.column //=> 4\n       */\n\n      _this.column = column;\n    }\n\n    _this.setMessage();\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(_assertThisInitialized(_this), CssSyntaxError);\n    }\n\n    return _this;\n  }\n\n  var _proto = CssSyntaxError.prototype;\n\n  _proto.setMessage = function setMessage() {\n    /**\n     * Full error text in the GNU error format\n     * with plugin, file, line and column.\n     *\n     * @type {string}\n     *\n     * @example\n     * error.message //=> 'a.css:1:1: Unclosed block'\n     */\n    this.message = this.plugin ? this.plugin + ': ' : '';\n    this.message += this.file ? this.file : '<css input>';\n\n    if (typeof this.line !== 'undefined') {\n      this.message += ':' + this.line + ':' + this.column;\n    }\n\n    this.message += ': ' + this.reason;\n  }\n  /**\n   * Returns a few lines of CSS source that caused the error.\n   *\n   * If the CSS has an input source map without `sourceContent`,\n   * this method will return an empty string.\n   *\n   * @param {boolean} [color] Whether arrow will be colored red by terminal\n   *                          color codes. By default, PostCSS will detect\n   *                          color support by `process.stdout.isTTY`\n   *                          and `process.env.NODE_DISABLE_COLORS`.\n   *\n   * @example\n   * error.showSourceCode() //=> \"  4 | }\n   *                        //      5 | a {\n   *                        //    > 6 |   bad\n   *                        //        |   ^\n   *                        //      7 | }\n   *                        //      8 | b {\"\n   *\n   * @return {string} Few lines of CSS source that caused the error.\n   */\n  ;\n\n  _proto.showSourceCode = function showSourceCode(color) {\n    var _this2 = this;\n\n    if (!this.source) return '';\n    var css = this.source;\n\n    if (_terminalHighlight.default) {\n      if (typeof color === 'undefined') color = _picocolors.default.isColorSupported;\n      if (color) css = (0, _terminalHighlight.default)(css);\n    }\n\n    var lines = css.split(/\\r?\\n/);\n    var start = Math.max(this.line - 3, 0);\n    var end = Math.min(this.line + 2, lines.length);\n    var maxWidth = String(end).length;\n\n    function mark(text) {\n      if (color && _picocolors.default.red) {\n        return _picocolors.default.red(_picocolors.default.bold(text));\n      }\n\n      return text;\n    }\n\n    function aside(text) {\n      if (color && _picocolors.default.gray) {\n        return _picocolors.default.gray(text);\n      }\n\n      return text;\n    }\n\n    return lines.slice(start, end).map(function (line, index) {\n      var number = start + 1 + index;\n      var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';\n\n      if (number === _this2.line) {\n        var spacing = aside(gutter.replace(/\\d/g, ' ')) + line.slice(0, _this2.column - 1).replace(/[^\\t]/g, ' ');\n        return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^');\n      }\n\n      return ' ' + aside(gutter) + line;\n    }).join('\\n');\n  }\n  /**\n   * Returns error position, message and source code of the broken part.\n   *\n   * @example\n   * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n   *                  //    > 1 | a {\n   *                  //        | ^\"\n   *\n   * @return {string} Error position, message and source code.\n   */\n  ;\n\n  _proto.toString = function toString() {\n    var code = this.showSourceCode();\n\n    if (code) {\n      code = '\\n\\n' + code + '\\n';\n    }\n\n    return this.name + ': ' + this.message + code;\n  }\n  /**\n   * @memberof CssSyntaxError#\n   * @member {Input} input Input object with PostCSS internal information\n   *                       about input file. If input has source map\n   *                       from previous tool, PostCSS will use origin\n   *                       (for example, Sass) source. You can use this\n   *                       object to get PostCSS input source.\n   *\n   * @example\n   * error.input.file //=> 'a.css'\n   * error.file       //=> 'a.sass'\n   */\n  ;\n\n  return CssSyntaxError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar _default = CssSyntaxError;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInRlcm1pbmFsSGlnaGxpZ2h0IiwicGljbyIsImlzQ29sb3JTdXBwb3J0ZWQiLCJsaW5lcyIsInNwbGl0Iiwic3RhcnQiLCJNYXRoIiwibWF4IiwiZW5kIiwibWluIiwibGVuZ3RoIiwibWF4V2lkdGgiLCJTdHJpbmciLCJtYXJrIiwidGV4dCIsInJlZCIsImJvbGQiLCJhc2lkZSIsImdyYXkiLCJzbGljZSIsIm1hcCIsImluZGV4IiwibnVtYmVyIiwiZ3V0dGVyIiwic3BhY2luZyIsInJlcGxhY2UiLCJqb2luIiwidG9TdHJpbmciLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEyQk1BLGM7OztBQUNKOzs7Ozs7OztBQVFBLDBCQUFhQyxPQUFiLEVBQXNCQyxJQUF0QixFQUE0QkMsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDQyxJQUE1QyxFQUFrREMsTUFBbEQsRUFBMEQ7QUFBQTs7QUFDeEQsOEJBQU1MLE9BQU47QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFhQSxVQUFLTSxJQUFMLEdBQVksZ0JBQVo7QUFDQTs7Ozs7Ozs7O0FBUUEsVUFBS0MsTUFBTCxHQUFjUCxPQUFkOztBQUVBLFFBQUlJLElBQUosRUFBVTtBQUNSOzs7Ozs7Ozs7QUFTQSxZQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDRDs7QUFDRCxRQUFJRCxNQUFKLEVBQVk7QUFDVjs7Ozs7Ozs7O0FBU0EsWUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7O0FB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QUNBLFVBQUlXLE1BQU0sS0FBSyxNQUFJLENBQUNuQyxJQUFwQixFQUEwQjtBQUN4QixZQUFJcUMsT0FBTyxHQUNUUCxLQUFLLENBQUNNLE1BQU0sQ0FBQ0UsT0FBUCxDQUFlLEtBQWYsRUFBc0IsR0FBdEIsQ0FBRCxDQUFMLEdBQ0F0QyxJQUFJLENBQUNnQyxLQUFMLENBQVcsQ0FBWCxFQUFjLE1BQUksQ0FBQy9CLE1BQUwsR0FBYyxDQUE1QixFQUErQnFDLE9BQS9CLENBQXVDLFFBQXZDLEVBQWlELEdBQWpELENBRkY7QUFHQSxlQUFPWixJQUFJLENBQUMsR0FBRCxDQUFKLEdBQVlJLEtBQUssQ0FBQ00sTUFBRCxDQUFqQixHQUE0QnBDLElBQTVCLEdBQW1DLEtBQW5DLEdBQTJDcUMsT0FBM0MsR0FBcURYLElBQUksQ0FBQyxHQUFELENBQWhFO0FBQ0Q7O0FBQ0QsYUFBTyxNQUFNSSxLQUFLLENBQUNNLE1BQUQsQ0FBWCxHQUFzQnBDLElBQTdCO0FBQ0QsS0FaSSxFQWFKdUMsSUFiSSxDQWFDLElBYkQsQ0FBUDtBQWNEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVVBQyxRLEdBQUEsb0JBQVk7QUFDVixRQUFJQyxJQUFJLEdBQUcsS0FBSy9CLGNBQUwsRUFBWDs7QUFDQSxRQUFJK0IsSUFBSixFQUFVO0FBQ1JBLE1BQUFBLElBQUksR0FBRyxTQUFTQSxJQUFULEdBQWdCLElBQXZCO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFLcEMsSUFBTCxHQUFZLElBQVosR0FBbUIsS0FBS04sT0FBeEIsR0FBa0MwQyxJQUF6QztBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztpQ0ExTTJCakMsSzs7ZUF3TmRWLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJ1xuXG5pbXBvcnQgdGVybWluYWxIaWdobGlnaHQgZnJvbSAnLi90ZXJtaW5hbC1oaWdobGlnaHQnXG5cbi8qKlxuICogVGhlIENTUyBwYXJzZXIgdGhyb3dzIHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBDU1MuXG4gKlxuICogQ3VzdG9tIHBhcnNlcnMgY2FuIHRocm93IHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBjdXN0b20gc3ludGF4IHVzaW5nXG4gKiB0aGUge0BsaW5rIE5vZGUjZXJyb3J9IG1ldGhvZC5cbiAqXG4gKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSBpbnB1dCBzb3VyY2UgbWFwIHRvIGRldGVjdCB0aGUgb3JpZ2luYWwgZXJyb3IgbG9jYXRpb24uXG4gKiBJZiB5b3Ugd3JvdGUgYSBTYXNzIGZpbGUsIGNvbXBpbGVkIGl0IHRvIENTUyBhbmQgdGhlbiBwYXJzZWQgaXQgd2l0aCBQb3N0Q1NTLFxuICogUG9zdENTUyB3aWxsIHNob3cgdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGluIHRoZSBTYXNzIGZpbGUuXG4gKlxuICogSWYgeW91IG5lZWQgdGhlIHBvc2l0aW9uIGluIHRoZSBQb3N0Q1NTIGlucHV0XG4gKiAoZS5nLiwgdG8gZGVidWcgdGhlIHByZXZpb3VzIGNvbXBpbGVyKSwgdXNlIGBlcnJvci5pbnB1dC5maWxlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2F0Y2hpbmcgYW5kIGNoZWNraW5nIHN5bnRheCBlcnJvclxuICogdHJ5IHtcbiAqICAgcG9zdGNzcy5wYXJzZSgnYXsnKVxuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicpIHtcbiAqICAgICBlcnJvciAvLz0+IENzc1N5bnRheEVycm9yXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmFpc2luZyBlcnJvciBmcm9tIHBsdWdpblxuICogdGhyb3cgbm9kZS5lcnJvcignVW5rbm93biB2YXJpYWJsZScsIHsgcGx1Z2luOiAncG9zdGNzcy12YXJzJyB9KVxuICovXG5jbGFzcyBDc3NTeW50YXhFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlICBFcnJvciBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpbmVdICAgU291cmNlIGxpbmUgb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2NvbHVtbl0gU291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3IuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc291cmNlXSBTb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZmlsZV0gICBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBicm9rZW4gZmlsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtwbHVnaW5dIFBvc3RDU1MgcGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW4uXG4gICAqL1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSwgbGluZSwgY29sdW1uLCBzb3VyY2UsIGZpbGUsIHBsdWdpbikge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG5cbiAgICAvKipcbiAgICAgKiBBbHdheXMgZXF1YWwgdG8gYCdDc3NTeW50YXhFcnJvcidgLiBZb3Ugc2hvdWxkIGFsd2F5cyBjaGVjayBlcnJvciB0eXBlXG4gICAgICogYnkgYGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcidgXG4gICAgICogaW5zdGVhZCBvZiBgZXJyb3IgaW5zdGFuY2VvZiBDc3NTeW50YXhFcnJvcmAsXG4gICAgICogYmVjYXVzZSBucG0gY291bGQgaGF2ZSBzZXZlcmFsIFBvc3RDU1MgdmVyc2lvbnMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAoZXJyb3IubmFtZSA9PT0gJ0Nzc1N5bnRheEVycm9yJykge1xuICAgICAqICAgZXJyb3IgLy89PiBDc3NTeW50YXhFcnJvclxuICAgICAqIH1cbiAgICAgKi9cbiAgICB0aGlzLm5hbWUgPSAnQ3NzU3ludGF4RXJyb3InXG4gICAgLyoqXG4gICAgICogRXJyb3IgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLm1lc3NhZ2UgLy89PiAnVW5jbG9zZWQgYmxvY2snXG4gICAgICovXG4gICAgdGhpcy5yZWFzb24gPSBtZXNzYWdlXG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgLyoqXG4gICAgICAgKiBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBicm9rZW4gZmlsZS5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICAgICAqIGVycm9yLmlucHV0LmZpbGUgLy89PiAnYS5jc3MnXG4gICAgICAgKi9cbiAgICAgIHRoaXMuZmlsZSA9IGZpbGVcbiAgICB9XG4gICAgaWYgKHNvdXJjZSkge1xuICAgICAgLyoqXG4gICAgICAgKiBTb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGUuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3Iuc291cmNlICAgICAgIC8vPT4gJ2EgeyBiIHt9IH0nXG4gICAgICAgKiBlcnJvci5pbnB1dC5jb2x1bW4gLy89PiAnYSBiIHsgfSdcbiAgICAgICAqL1xuICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2VcbiAgICB9XG4gICAgaWYgKHBsdWdpbikge1xuICAgICAgLyoqXG4gICAgICAgKiBQbHVnaW4gbmFtZSwgaWYgZXJyb3IgY2FtZSBmcm9tIHBsdWdpbi5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5wbHVnaW4gLy89PiAncG9zdGNzcy12YXJzJ1xuICAgICAgICovXG4gICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpblxuICAgIH1cbiAgICBpZiAodHlwZW9mIGxpbmUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb2x1bW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvKipcbiAgICAgICAqIFNvdXJjZSBsaW5lIG9mIHRoZSBlcnJvci5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5saW5lICAgICAgIC8vPT4gMlxuICAgICAgICogZXJyb3IuaW5wdXQubGluZSAvLz0+IDRcbiAgICAgICAqL1xuICAgICAgdGhpcy5saW5lID0gbGluZVxuICAgICAgLyoqXG4gICAgICAgKiBTb3VyY2UgY29sdW1uIG9mIHRoZSBlcnJvci5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5jb2x1bW4gICAgICAgLy89PiAxXG4gICAgICAgKiBlcnJvci5pbnB1dC5jb2x1bW4gLy89PiA0XG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uXG4gICAgfVxuXG4gICAgdGhpcy5zZXRNZXNzYWdlKClcblxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgQ3NzU3ludGF4RXJyb3IpXG4gICAgfVxuICB9XG5cbiAgc2V0TWVzc2FnZSAoKSB7XG4gICAgLyoqXG4gICAgICogRnVsbCBlcnJvciB0ZXh0IGluIHRoZSBHTlUgZXJyb3IgZm9ybWF0XG4gICAgICogd2l0aCBwbHVnaW4sIGZpbGUsIGxpbmUgYW5kIGNvbHVtbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLm1lc3NhZ2UgLy89PiAnYS5jc3M6MToxOiBVbmNsb3NlZCBibG9jaydcbiAgICAgKi9cbiAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLnBsdWdpbiA/IHRoaXMucGx1Z2luICsgJzogJyA6ICcnXG4gICAgdGhpcy5tZXNzYWdlICs9IHRoaXMuZmlsZSA/IHRoaXMuZmlsZSA6ICc8Y3NzIGlucHV0PidcbiAgICBpZiAodHlwZW9mIHRoaXMubGluZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMubWVzc2FnZSArPSAnOicgKyB0aGlzLmxpbmUgKyAnOicgKyB0aGlzLmNvbHVtblxuICAgIH1cbiAgICB0aGlzLm1lc3NhZ2UgKz0gJzogJyArIHRoaXMucmVhc29uXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGZldyBsaW5lcyBvZiBDU1Mgc291cmNlIHRoYXQgY2F1c2VkIHRoZSBlcnJvci5cbiAgICpcbiAgICogSWYgdGhlIENTUyBoYXMgYW4gaW5wdXQgc291cmNlIG1hcCB3aXRob3V0IGBzb3VyY2VDb250ZW50YCxcbiAgICogdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjb2xvcl0gV2hldGhlciBhcnJvdyB3aWxsIGJlIGNvbG9yZWQgcmVkIGJ5IHRlcm1pbmFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciBjb2Rlcy4gQnkgZGVmYXVsdCwgUG9zdENTUyB3aWxsIGRldGVjdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Igc3VwcG9ydCBieSBgcHJvY2Vzcy5zdGRvdXQuaXNUVFlgXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYHByb2Nlc3MuZW52Lk5PREVfRElTQUJMRV9DT0xPUlNgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBlcnJvci5zaG93U291cmNlQ29kZSgpIC8vPT4gXCIgIDQgfCB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA1IHwgYSB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgPiA2IHwgICBiYWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgfCAgIF5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIDcgfCB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA4IHwgYiB7XCJcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBGZXcgbGluZXMgb2YgQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuXG4gICAqL1xuICBzaG93U291cmNlQ29kZSAoY29sb3IpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlKSByZXR1cm4gJydcblxuICAgIGxldCBjc3MgPSB0aGlzLnNvdXJjZVxuICAgIGlmICh0ZXJtaW5hbEhpZ2hsaWdodCkge1xuICAgICAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ3VuZGVmaW5lZCcpIGNvbG9yID0gcGljby5pc0NvbG9yU3VwcG9ydGVkXG4gICAgICBpZiAoY29sb3IpIGNzcyA9IHRlcm1pbmFsSGlnaGxpZ2h0KGNzcylcbiAgICB9XG5cbiAgICBsZXQgbGluZXMgPSBjc3Muc3BsaXQoL1xccj9cXG4vKVxuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KHRoaXMubGluZSAtIDMsIDApXG4gICAgbGV0IGVuZCA9IE1hdGgubWluKHRoaXMubGluZSArIDIsIGxpbmVzLmxlbmd0aClcblxuICAgIGxldCBtYXhXaWR0aCA9IFN0cmluZyhlbmQpLmxlbmd0aFxuXG4gICAgZnVuY3Rpb24gbWFyayAodGV4dCkge1xuICAgICAgaWYgKGNvbG9yICYmIHBpY28ucmVkKSB7XG4gICAgICAgIHJldHVybiBwaWNvLnJlZChwaWNvLmJvbGQodGV4dCkpXG4gICAgICB9XG4gICAgICByZXR1cm4gdGV4dFxuICAgIH1cbiAgICBmdW5jdGlvbiBhc2lkZSAodGV4dCkge1xuICAgICAgaWYgKGNvbG9yICYmIHBpY28uZ3JheSkge1xuICAgICAgICByZXR1cm4gcGljby5ncmF5KHRleHQpXG4gICAgICB9XG4gICAgICByZXR1cm4gdGV4dFxuICAgIH1cblxuICAgIHJldHVybiBsaW5lc1xuICAgICAgLnNsaWNlKHN0YXJ0LCBlbmQpXG4gICAgICAubWFwKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgbnVtYmVyID0gc3RhcnQgKyAxICsgaW5kZXhcbiAgICAgICAgbGV0IGd1dHRlciA9ICcgJyArICgnICcgKyBudW1iZXIpLnNsaWNlKC1tYXhXaWR0aCkgKyAnIHwgJ1xuICAgICAgICBpZiAobnVtYmVyID09PSB0aGlzLmxpbmUpIHtcbiAgICAgICAgICBsZXQgc3BhY2luZyA9XG4gICAgICAgICAgICBhc2lkZShndXR0ZXIucmVwbGFjZSgvXFxkL2csICcgJykpICtcbiAgICAgICAgICAgIGxpbmUuc2xpY2UoMCwgdGhpcy5jb2x1bW4gLSAxKS5yZXBsYWNlKC9bXlxcdF0vZywgJyAnKVxuICAgICAgICAgIHJldHVybiBtYXJrKCc+JykgKyBhc2lkZShndXR0ZXIpICsgbGluZSArICdcXG4gJyArIHNwYWNpbmcgKyBtYXJrKCdeJylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyAnICsgYXNpZGUoZ3V0dGVyKSArIGxpbmVcbiAgICAgIH0pXG4gICAgICAuam9pbignXFxuJylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIHBhcnQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGVycm9yLnRvU3RyaW5nKCkgLy89PiBcIkNzc1N5bnRheEVycm9yOiBhcHAuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2tcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICA+IDEgfCBhIHtcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICAgICAgfCBeXCJcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBFcnJvciBwb3NpdGlvbiwgbWVzc2FnZSBhbmQgc291cmNlIGNvZGUuXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgbGV0IGNvZGUgPSB0aGlzLnNob3dTb3VyY2VDb2RlKClcbiAgICBpZiAoY29kZSkge1xuICAgICAgY29kZSA9ICdcXG5cXG4nICsgY29kZSArICdcXG4nXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5tZXNzYWdlICsgY29kZVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBDc3NTeW50YXhFcnJvciNcbiAgICogQG1lbWJlciB7SW5wdXR9IGlucHV0IElucHV0IG9iamVjdCB3aXRoIFBvc3RDU1MgaW50ZXJuYWwgaW5mb3JtYXRpb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgIGFib3V0IGlucHV0IGZpbGUuIElmIGlucHV0IGhhcyBzb3VyY2UgbWFwXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHByZXZpb3VzIHRvb2wsIFBvc3RDU1Mgd2lsbCB1c2Ugb3JpZ2luXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAoZm9yIGV4YW1wbGUsIFNhc3MpIHNvdXJjZS4gWW91IGNhbiB1c2UgdGhpc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IHRvIGdldCBQb3N0Q1NTIGlucHV0IHNvdXJjZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZXJyb3IuaW5wdXQuZmlsZSAvLz0+ICdhLmNzcydcbiAgICogZXJyb3IuZmlsZSAgICAgICAvLz0+ICdhLnNhc3MnXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NTeW50YXhFcnJvclxuIl0sImZpbGUiOiJjc3Mtc3ludGF4LWVycm9yLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar DEFAULT_RAW = {\n  colon: ': ',\n  indent: '    ',\n  beforeDecl: '\\n',\n  beforeRule: '\\n',\n  beforeOpen: ' ',\n  beforeClose: '\\n',\n  beforeComment: '\\n',\n  after: '\\n',\n  emptyBody: '',\n  commentLeft: ' ',\n  commentRight: ' ',\n  semicolon: false\n};\n\nfunction capitalize(str) {\n  return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier = /*#__PURE__*/function () {\n  function Stringifier(builder) {\n    this.builder = builder;\n  }\n\n  var _proto = Stringifier.prototype;\n\n  _proto.stringify = function stringify(node, semicolon) {\n    this[node.type](node, semicolon);\n  };\n\n  _proto.root = function root(node) {\n    this.body(node);\n    if (node.raws.after) this.builder(node.raws.after);\n  };\n\n  _proto.comment = function comment(node) {\n    var left = this.raw(node, 'left', 'commentLeft');\n    var right = this.raw(node, 'right', 'commentRight');\n    this.builder('/*' + left + node.text + right + '*/', node);\n  };\n\n  _proto.decl = function decl(node, semicolon) {\n    var between = this.raw(node, 'between', 'colon');\n    var string = node.prop + between + this.rawValue(node, 'value');\n\n    if (node.important) {\n      string += node.raws.important || ' !important';\n    }\n\n    if (semicolon) string += ';';\n    this.builder(string, node);\n  };\n\n  _proto.rule = function rule(node) {\n    this.block(node, this.rawValue(node, 'selector'));\n\n    if (node.raws.ownSemicolon) {\n      this.builder(node.raws.ownSemicolon, node, 'end');\n    }\n  };\n\n  _proto.atrule = function atrule(node, semicolon) {\n    var name = '@' + node.name;\n    var params = node.params ? this.rawValue(node, 'params') : '';\n\n    if (typeof node.raws.afterName !== 'undefined') {\n      name += node.raws.afterName;\n    } else if (params) {\n      name += ' ';\n    }\n\n    if (node.nodes) {\n      this.block(node, name + params);\n    } else {\n      var end = (node.raws.between || '') + (semicolon ? ';' : '');\n      this.builder(name + params + end, node);\n    }\n  };\n\n  _proto.body = function body(node) {\n    var last = node.nodes.length - 1;\n\n    while (last > 0) {\n      if (node.nodes[last].type !== 'comment') break;\n      last -= 1;\n    }\n\n    var semicolon = this.raw(node, 'semicolon');\n\n    for (var i = 0; i < node.nodes.length; i++) {\n      var child = node.nodes[i];\n      var before = this.raw(child, 'before');\n      if (before) this.builder(before);\n      this.stringify(child, last !== i || semicolon);\n    }\n  };\n\n  _proto.block = function block(node, start) {\n    var between = this.raw(node, 'between', 'beforeOpen');\n    this.builder(start + between + '{', node, 'start');\n    var after;\n\n    if (node.nodes && node.nodes.length) {\n      this.body(node);\n      after = this.raw(node, 'after');\n    } else {\n      after = this.raw(node, 'after', 'emptyBody');\n    }\n\n    if (after) this.builder(after);\n    this.builder('}', node, 'end');\n  };\n\n  _proto.raw = function raw(node, own, detect) {\n    var value;\n    if (!detect) detect = own; // Already had\n\n    if (own) {\n      value = node.raws[own];\n      if (typeof value !== 'undefined') return value;\n    }\n\n    var parent = node.parent; // Hack for first rule in CSS\n\n    if (detect === 'before') {\n      if (!parent || parent.type === 'root' && parent.first === node) {\n        return '';\n      }\n    } // Floating child without parent\n\n\n    if (!parent) return DEFAULT_RAW[detect]; // Detect style by other nodes\n\n    var root = node.root();\n    if (!root.rawCache) root.rawCache = {};\n\n    if (typeof root.rawCache[detect] !== 'undefined') {\n      return root.rawCache[detect];\n    }\n\n    if (detect === 'before' || detect === 'after') {\n      return this.beforeAfter(node, detect);\n    } else {\n      var method = 'raw' + capitalize(detect);\n\n      if (this[method]) {\n        value = this[method](root, node);\n      } else {\n        root.walk(function (i) {\n          value = i.raws[own];\n          if (typeof value !== 'undefined') return false;\n        });\n      }\n    }\n\n    if (typeof value === 'undefined') value = DEFAULT_RAW[detect];\n    root.rawCache[detect] = value;\n    return value;\n  };\n\n  _proto.rawSemicolon = function rawSemicolon(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n        value = i.raws.semicolon;\n        if (typeof value !== 'undefined') return false;\n      }\n    });\n    return value;\n  };\n\n  _proto.rawEmptyBody = function rawEmptyBody(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.nodes && i.nodes.length === 0) {\n        value = i.raws.after;\n        if (typeof value !== 'undefined') return false;\n      }\n    });\n    return value;\n  };\n\n  _proto.rawIndent = function rawIndent(root) {\n    if (root.raws.indent) return root.raws.indent;\n    var value;\n    root.walk(function (i) {\n      var p = i.parent;\n\n      if (p && p !== root && p.parent && p.parent === root) {\n        if (typeof i.raws.before !== 'undefined') {\n          var parts = i.raws.before.split('\\n');\n          value = parts[parts.length - 1];\n          value = value.replace(/[^\\s]/g, '');\n          return false;\n        }\n      }\n    });\n    return value;\n  };\n\n  _proto.rawBeforeComment = function rawBeforeComment(root, node) {\n    var value;\n    root.walkComments(function (i) {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before;\n\n        if (value.indexOf('\\n') !== -1) {\n          value = value.replace(/[^\\n]+$/, '');\n        }\n\n        return false;\n      }\n    });\n\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeDecl');\n    } else if (value) {\n      value = value.replace(/[^\\s]/g, '');\n    }\n\n    return value;\n  };\n\n  _proto.rawBeforeDecl = function rawBeforeDecl(root, node) {\n    var value;\n    root.walkDecls(function (i) {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before;\n\n        if (value.indexOf('\\n') !== -1) {\n          value = value.replace(/[^\\n]+$/, '');\n        }\n\n        return false;\n      }\n    });\n\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeRule');\n    } else if (value) {\n      value = value.replace(/[^\\s]/g, '');\n    }\n\n    return value;\n  };\n\n  _proto.rawBeforeRule = function rawBeforeRule(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.nodes && (i.parent !== root || root.first !== i)) {\n        if (typeof i.raws.before !== 'undefined') {\n          value = i.raws.before;\n\n          if (value.indexOf('\\n') !== -1) {\n            value = value.replace(/[^\\n]+$/, '');\n          }\n\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/[^\\s]/g, '');\n    return value;\n  };\n\n  _proto.rawBeforeClose = function rawBeforeClose(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.nodes && i.nodes.length > 0) {\n        if (typeof i.raws.after !== 'undefined') {\n          value = i.raws.after;\n\n          if (value.indexOf('\\n') !== -1) {\n            value = value.replace(/[^\\n]+$/, '');\n          }\n\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/[^\\s]/g, '');\n    return value;\n  };\n\n  _proto.rawBeforeOpen = function rawBeforeOpen(root) {\n    var value;\n    root.walk(function (i) {\n      if (i.type !== 'decl') {\n        value = i.raws.between;\n        if (typeof value !== 'undefined') return false;\n      }\n    });\n    return value;\n  };\n\n  _proto.rawColon = function rawColon(root) {\n    var value;\n    root.walkDecls(function (i) {\n      if (typeof i.raws.between !== 'undefined') {\n        value = i.raws.between.replace(/[^\\s:]/g, '');\n        return false;\n      }\n    });\n    return value;\n  };\n\n  _proto.beforeAfter = function beforeAfter(node, detect) {\n    var value;\n\n    if (node.type === 'decl') {\n      value = this.raw(node, null, 'beforeDecl');\n    } else if (node.type === 'comment') {\n      value = this.raw(node, null, 'beforeComment');\n    } else if (detect === 'before') {\n      value = this.raw(node, null, 'beforeRule');\n    } else {\n      value = this.raw(node, null, 'beforeClose');\n    }\n\n    var buf = node.parent;\n    var depth = 0;\n\n    while (buf && buf.type !== 'root') {\n      depth += 1;\n      buf = buf.parent;\n    }\n\n    if (value.indexOf('\\n') !== -1) {\n      var indent = this.raw(node, null, 'indent');\n\n      if (indent.length) {\n        for (var step = 0; step < depth; step++) {\n          value += indent;\n        }\n      }\n    }\n\n    return value;\n  };\n\n  _proto.rawValue = function rawValue(node, prop) {\n    var value = node[prop];\n    var raw = node.raws[prop];\n\n    if (raw && raw.value === value) {\n      return raw.raw;\n    }\n\n    return value;\n  };\n\n  return Stringifier;\n}();\n\nvar _default = Stringifier;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJERUZBVUxUX1JBVyIsImNvbG9uIiwiaW5kZW50IiwiYmVmb3JlRGVjbCIsImJlZm9yZVJ1bGUiLCJiZWZvcmVPcGVuIiwiYmVmb3JlQ2xvc2UiLCJiZWZvcmVDb21tZW50IiwiYWZ0ZXIiLCJlbXB0eUJvZHkiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsInNlbWljb2xvbiIsImNhcGl0YWxpemUiLCJzdHIiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiU3RyaW5naWZpZXIiLCJidWlsZGVyIiwic3RyaW5naWZ5Iiwibm9kZSIsInR5cGUiLCJyb290IiwiYm9keSIsInJhd3MiLCJjb21tZW50IiwibGVmdCIsInJhdyIsInJpZ2h0IiwidGV4dCIsImRlY2wiLCJiZXR3ZWVuIiwic3RyaW5nIiwicHJvcCIsInJhd1ZhbHVlIiwiaW1wb3J0YW50IiwicnVsZSIsImJsb2NrIiwib3duU2VtaWNvbG9uIiwiYXRydWxlIiwibmFtZSIsInBhcmFtcyIsImFmdGVyTmFtZSIsIm5vZGVzIiwiZW5kIiwibGFzdCIsImxlbmd0aCIsImkiLCJjaGlsZCIsImJlZm9yZSIsInN0YXJ0Iiwib3duIiwiZGV0ZWN0IiwidmFsdWUiLCJwYXJlbnQiLCJmaXJzdCIsInJhd0NhY2hlIiwiYmVmb3JlQWZ0ZXIiLCJtZXRob2QiLCJ3YWxrIiwicmF3U2VtaWNvbG9uIiwicmF3RW1wdHlCb2R5IiwicmF3SW5kZW50IiwicCIsInBhcnRzIiwic3BsaXQiLCJyZXBsYWNlIiwicmF3QmVmb3JlQ29tbWVudCIsIndhbGtDb21tZW50cyIsImluZGV4T2YiLCJyYXdCZWZvcmVEZWNsIiwid2Fsa0RlY2xzIiwicmF3QmVmb3JlUnVsZSIsInJhd0JlZm9yZUNsb3NlIiwicmF3QmVmb3JlT3BlbiIsInJhd0NvbG9uIiwiYnVmIiwiZGVwdGgiLCJzdGVwIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBTUEsV0FBVyxHQUFHO0FBQ2xCQyxFQUFB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QUFDRDs7QUFFRCxRQUFJd0QsR0FBRyxHQUFHeEQsSUFBSSxDQUFDa0MsTUFBZjtBQUNBLFFBQUl1QixLQUFLLEdBQUcsQ0FBWjs7QUFDQSxXQUFPRCxHQUFHLElBQUlBLEdBQUcsQ0FBQ3ZELElBQUosS0FBYSxNQUEzQixFQUFtQztBQUNqQ3dELE1BQUFBLEtBQUssSUFBSSxDQUFUO0FBQ0FELE1BQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDdEIsTUFBVjtBQUNEOztBQUVELFFBQUlELEtBQUssQ0FBQ2dCLE9BQU4sQ0FBYyxJQUFkLE1BQXdCLENBQUMsQ0FBN0IsRUFBZ0M7QUFDOUIsVUFBSW5FLE1BQU0sR0FBRyxLQUFLeUIsR0FBTCxDQUFTUCxJQUFULEVBQWUsSUFBZixFQUFxQixRQUFyQixDQUFiOztBQUNBLFVBQUlsQixNQUFNLENBQUM0QyxNQUFYLEVBQW1CO0FBQ2pCLGFBQUssSUFBSWdDLElBQUksR0FBRyxDQUFoQixFQUFtQkEsSUFBSSxHQUFHRCxLQUExQixFQUFpQ0MsSUFBSSxFQUFyQztBQUF5Q3pCLFVBQUFBLEtBQUssSUFBSW5ELE1BQVQ7QUFBekM7QUFDRDtBQUNGOztBQUVELFdBQU9tRCxLQUFQO0FBQ0QsRzs7U0FFRG5CLFEsR0FBQSxrQkFBVWQsSUFBVixFQUFnQmEsSUFBaEIsRUFBc0I7QUFDcEIsUUFBSW9CLEtBQUssR0FBR2pDLElBQUksQ0FBQ2EsSUFBRCxDQUFoQjtBQUNBLFFBQUlOLEdBQUcsR0FBR1AsSUFBSSxDQUFDSSxJQUFMLENBQVVTLElBQVYsQ0FBVjs7QUFDQSxRQUFJTixHQUFHLElBQUlBLEdBQUcsQ0FBQzBCLEtBQUosS0FBY0EsS0FBekIsRUFBZ0M7QUFDOUIsYUFBTzFCLEdBQUcsQ0FBQ0EsR0FBWDtBQUNEOztBQUVELFdBQU8wQixLQUFQO0FBQ0QsRzs7Ozs7ZUFHWXBDLFciLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBERUZBVUxUX1JBVyA9IHtcbiAgY29sb246ICc6ICcsXG4gIGluZGVudDogJyAgICAnLFxuICBiZWZvcmVEZWNsOiAnXFxuJyxcbiAgYmVmb3JlUnVsZTogJ1xcbicsXG4gIGJlZm9yZU9wZW46ICcgJyxcbiAgYmVmb3JlQ2xvc2U6ICdcXG4nLFxuICBiZWZvcmVDb21tZW50OiAnXFxuJyxcbiAgYWZ0ZXI6ICdcXG4nLFxuICBlbXB0eUJvZHk6ICcnLFxuICBjb21tZW50TGVmdDogJyAnLFxuICBjb21tZW50UmlnaHQ6ICcgJyxcbiAgc2VtaWNvbG9uOiBmYWxzZVxufVxuXG5mdW5jdGlvbiBjYXBpdGFsaXplIChzdHIpIHtcbiAgcmV0dXJuIHN0clswXS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpXG59XG5cbmNsYXNzIFN0cmluZ2lmaWVyIHtcbiAgY29uc3RydWN0b3IgKGJ1aWxkZXIpIHtcbiAgICB0aGlzLmJ1aWxkZXIgPSBidWlsZGVyXG4gIH1cblxuICBzdHJpbmdpZnkgKG5vZGUsIHNlbWljb2xvbikge1xuICAgIHRoaXNbbm9kZS50eXBlXShub2RlLCBzZW1pY29sb24pXG4gIH1cblxuICByb290IChub2RlKSB7XG4gICAgdGhpcy5ib2R5KG5vZGUpXG4gICAgaWYgKG5vZGUucmF3cy5hZnRlcikgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5hZnRlcilcbiAgfVxuXG4gIGNvbW1lbnQgKG5vZGUpIHtcbiAgICBsZXQgbGVmdCA9IHRoaXMucmF3KG5vZGUsICdsZWZ0JywgJ2NvbW1lbnRMZWZ0JylcbiAgICBsZXQgcmlnaHQgPSB0aGlzLnJhdyhub2RlLCAncmlnaHQnLCAnY29tbWVudFJpZ2h0JylcbiAgICB0aGlzLmJ1aWxkZXIoJy8qJyArIGxlZnQgKyBub2RlLnRleHQgKyByaWdodCArICcqLycsIG5vZGUpXG4gIH1cblxuICBkZWNsIChub2RlLCBzZW1pY29sb24pIHtcbiAgICBsZXQgYmV0d2VlbiA9IHRoaXMucmF3KG5vZGUsICdiZXR3ZWVuJywgJ2NvbG9uJylcbiAgICBsZXQgc3RyaW5nID0gbm9kZS5wcm9wICsgYmV0d2VlbiArIHRoaXMucmF3VmFsdWUobm9kZSwgJ3ZhbHVlJylcblxuICAgIGlmIChub2RlLmltcG9ydGFudCkge1xuICAgICAgc3RyaW5nICs9IG5vZGUucmF3cy5pbXBvcnRhbnQgfHwgJyAhaW1wb3J0YW50J1xuICAgIH1cblxuICAgIGlmIChzZW1pY29sb24pIHN0cmluZyArPSAnOydcbiAgICB0aGlzLmJ1aWxkZXIoc3RyaW5nLCBub2RlKVxuICB9XG5cbiAgcnVsZSAobm9kZSkge1xuICAgIHRoaXMuYmxvY2sobm9kZSwgdGhpcy5yYXdWYWx1ZShub2RlLCAnc2VsZWN0b3InKSlcbiAgICBpZiAobm9kZS5yYXdzLm93blNlbWljb2xvbikge1xuICAgICAgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5vd25TZW1pY29sb24sIG5vZGUsICdlbmQnKVxuICAgIH1cbiAgfVxuXG4gIGF0cnVsZSAobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgbGV0IG5hbWUgPSAnQCcgKyBub2RlLm5hbWVcbiAgICBsZXQgcGFyYW1zID0gbm9kZS5wYXJhbXMgPyB0aGlzLnJhd1ZhbHVlKG5vZGUsICdwYXJhbXMnKSA6ICcnXG5cbiAgICBpZiAodHlwZW9mIG5vZGUucmF3cy5hZnRlck5hbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBuYW1lICs9IG5vZGUucmF3cy5hZnRlck5hbWVcbiAgICB9IGVsc2UgaWYgKHBhcmFtcykge1xuICAgICAgbmFtZSArPSAnICdcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2Rlcykge1xuICAgICAgdGhpcy5ibG9jayhub2RlLCBuYW1lICsgcGFyYW1zKVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZW5kID0gKG5vZGUucmF3cy5iZXR3ZWVuIHx8ICcnKSArIChzZW1pY29sb24gPyAnOycgOiAnJylcbiAgICAgIHRoaXMuYnVpbGRlcihuYW1lICsgcGFyYW1zICsgZW5kLCBub2RlKVxuICAgIH1cbiAgfVxuXG4gIGJvZHkgKG5vZGUpIHtcbiAgICBsZXQgbGFzdCA9IG5vZGUubm9kZXMubGVuZ3RoIC0gMVxuICAgIHdoaWxlIChsYXN0ID4gMCkge1xuICAgICAgaWYgKG5vZGUubm9kZXNbbGFzdF0udHlwZSAhPT0gJ2NvbW1lbnQnKSBicmVha1xuICAgICAgbGFzdCAtPSAxXG4gICAgfVxuXG4gICAgbGV0IHNlbWljb2xvbiA9IHRoaXMucmF3KG5vZGUsICdzZW1pY29sb24nKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5ub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNoaWxkID0gbm9kZS5ub2Rlc1tpXVxuICAgICAgbGV0IGJlZm9yZSA9IHRoaXMucmF3KGNoaWxkLCAnYmVmb3JlJylcbiAgICAgIGlmIChiZWZvcmUpIHRoaXMuYnVpbGRlcihiZWZvcmUpXG4gICAgICB0aGlzLnN0cmluZ2lmeShjaGlsZCwgbGFzdCAhPT0gaSB8fCBzZW1pY29sb24pXG4gICAgfVxuICB9XG5cbiAgYmxvY2sgKG5vZGUsIHN0YXJ0KSB7XG4gICAgbGV0IGJldHdlZW4gPSB0aGlzLnJhdyhub2RlLCAnYmV0d2VlbicsICdiZWZvcmVPcGVuJylcbiAgICB0aGlzLmJ1aWxkZXIoc3RhcnQgKyBiZXR3ZWVuICsgJ3snLCBub2RlLCAnc3RhcnQnKVxuXG4gICAgbGV0IGFmdGVyXG4gICAgaWYgKG5vZGUubm9kZXMgJiYgbm9kZS5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYm9keShub2RlKVxuICAgICAgYWZ0ZXIgPSB0aGlzLnJhdyhub2RlLCAnYWZ0ZXInKVxuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicsICdlbXB0eUJvZHknKVxuICAgIH1cblxuICAgIGlmIChhZnRlcikgdGhpcy5idWlsZGVyKGFmdGVyKVxuICAgIHRoaXMuYnVpbGRlcignfScsIG5vZGUsICdlbmQnKVxuICB9XG5cbiAgcmF3IChub2RlLCBvd24sIGRldGVjdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIGlmICghZGV0ZWN0KSBkZXRlY3QgPSBvd25cblxuICAgIC8vIEFscmVhZHkgaGFkXG4gICAgaWYgKG93bikge1xuICAgICAgdmFsdWUgPSBub2RlLnJhd3Nbb3duXVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudFxuXG4gICAgLy8gSGFjayBmb3IgZmlyc3QgcnVsZSBpbiBDU1NcbiAgICBpZiAoZGV0ZWN0ID09PSAnYmVmb3JlJykge1xuICAgICAgaWYgKCFwYXJlbnQgfHwgKHBhcmVudC50eXBlID09PSAncm9vdCcgJiYgcGFyZW50LmZpcnN0ID09PSBub2RlKSkge1xuICAgICAgICByZXR1cm4gJydcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGbG9hdGluZyBjaGlsZCB3aXRob3V0IHBhcmVudFxuICAgIGlmICghcGFyZW50KSByZXR1cm4gREVGQVVMVF9SQVdbZGV0ZWN0XVxuXG4gICAgLy8gRGV0ZWN0IHN0eWxlIGJ5IG90aGVyIG5vZGVzXG4gICAgbGV0IHJvb3QgPSBub2RlLnJvb3QoKVxuICAgIGlmICghcm9vdC5yYXdDYWNoZSkgcm9vdC5yYXdDYWNoZSA9IHsgfVxuICAgIGlmICh0eXBlb2Ygcm9vdC5yYXdDYWNoZVtkZXRlY3RdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHJvb3QucmF3Q2FjaGVbZGV0ZWN0XVxuICAgIH1cblxuICAgIGlmIChkZXRlY3QgPT09ICdiZWZvcmUnIHx8IGRldGVjdCA9PT0gJ2FmdGVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuYmVmb3JlQWZ0ZXIobm9kZSwgZGV0ZWN0KVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWV0aG9kID0gJ3JhdycgKyBjYXBpdGFsaXplKGRldGVjdClcbiAgICAgIGlmICh0aGlzW21ldGhvZF0pIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzW21ldGhvZF0ocm9vdCwgbm9kZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgICAgICB2YWx1ZSA9IGkucmF3c1tvd25dXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB2YWx1ZSA9IERFRkFVTFRfUkFXW2RldGVjdF1cblxuICAgIHJvb3QucmF3Q2FjaGVbZGV0ZWN0XSA9IHZhbHVlXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdTZW1pY29sb24gKHJvb3QpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBpZiAoaS5ub2RlcyAmJiBpLm5vZGVzLmxlbmd0aCAmJiBpLmxhc3QudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLnNlbWljb2xvblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0VtcHR5Qm9keSAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIGkubm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmFmdGVyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3SW5kZW50IChyb290KSB7XG4gICAgaWYgKHJvb3QucmF3cy5pbmRlbnQpIHJldHVybiByb290LnJhd3MuaW5kZW50XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgbGV0IHAgPSBpLnBhcmVudFxuICAgICAgaWYgKHAgJiYgcCAhPT0gcm9vdCAmJiBwLnBhcmVudCAmJiBwLnBhcmVudCA9PT0gcm9vdCkge1xuICAgICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgbGV0IHBhcnRzID0gaS5yYXdzLmJlZm9yZS5zcGxpdCgnXFxuJylcbiAgICAgICAgICB2YWx1ZSA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3QmVmb3JlQ29tbWVudCAocm9vdCwgbm9kZSkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2Fsa0NvbW1lbnRzKGkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZWZvcmVcbiAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVEZWNsJylcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVEZWNsIChyb290LCBub2RlKSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrRGVjbHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZVxuICAgICAgICBpZiAodmFsdWUuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZVJ1bGUnKVxuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZVJ1bGUgKHJvb3QpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBpZiAoaS5ub2RlcyAmJiAoaS5wYXJlbnQgIT09IHJvb3QgfHwgcm9vdC5maXJzdCAhPT0gaSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZVxuICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIGlmICh2YWx1ZSkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVDbG9zZSAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIGkubm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAodHlwZW9mIGkucmF3cy5hZnRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5hZnRlclxuICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIGlmICh2YWx1ZSkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVPcGVuIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkudHlwZSAhPT0gJ2RlY2wnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmJldHdlZW5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdDb2xvbiAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2Fsa0RlY2xzKGkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpLnJhd3MuYmV0d2VlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmV0d2Vlbi5yZXBsYWNlKC9bXlxcczpdL2csICcnKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgYmVmb3JlQWZ0ZXIgKG5vZGUsIGRldGVjdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIGlmIChub2RlLnR5cGUgPT09ICdkZWNsJykge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlRGVjbCcpXG4gICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdjb21tZW50Jykge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ29tbWVudCcpXG4gICAgfSBlbHNlIGlmIChkZXRlY3QgPT09ICdiZWZvcmUnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVSdWxlJylcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ2xvc2UnKVxuICAgIH1cblxuICAgIGxldCBidWYgPSBub2RlLnBhcmVudFxuICAgIGxldCBkZXB0aCA9IDBcbiAgICB3aGlsZSAoYnVmICYmIGJ1Zi50eXBlICE9PSAncm9vdCcpIHtcbiAgICAgIGRlcHRoICs9IDFcbiAgICAgIGJ1ZiA9IGJ1Zi5wYXJlbnRcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICBsZXQgaW5kZW50ID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2luZGVudCcpXG4gICAgICBpZiAoaW5kZW50Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBzdGVwID0gMDsgc3RlcCA8IGRlcHRoOyBzdGVwKyspIHZhbHVlICs9IGluZGVudFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3VmFsdWUgKG5vZGUsIHByb3ApIHtcbiAgICBsZXQgdmFsdWUgPSBub2RlW3Byb3BdXG4gICAgbGV0IHJhdyA9IG5vZGUucmF3c1twcm9wXVxuICAgIGlmIChyYXcgJiYgcmF3LnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHJhdy5yYXdcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdpZmllclxuIl0sImZpbGUiOiJzdHJpbmdpZmllci5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _lazyResult = _interopRequireDefault(require(\"./lazy-result\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss])\n * processor.process(css1).then(result => console.log(result.css))\n * processor.process(css2).then(result => console.log(result.css))\n */\nvar Processor = /*#__PURE__*/function () {\n  /**\n   * @param {Array.<Plugin|pluginFunction>|Processor} plugins PostCSS plugins.\n   *        See {@link Processor#use} for plugin format.\n   */\n  function Processor(plugins) {\n    if (plugins === void 0) {\n      plugins = [];\n    }\n\n    /**\n     * Current PostCSS version.\n     *\n     * @type {string}\n     *\n     * @example\n     * if (result.processor.version.split('.')[0] !== '6') {\n     *   throw new Error('This plugin works only with PostCSS 6')\n     * }\n     */\n    this.version = '7.0.39';\n    /**\n     * Plugins added to this processor.\n     *\n     * @type {pluginFunction[]}\n     *\n     * @example\n     * const processor = postcss([autoprefixer, precss])\n     * processor.plugins.length //=> 2\n     */\n\n    this.plugins = this.normalize(plugins);\n  }\n  /**\n   * Adds a plugin to be used as a CSS processor.\n   *\n   * PostCSS plugin can be in 4 formats:\n   * * A plugin created by {@link postcss.plugin} method.\n   * * A function. PostCSS will pass the function a @{link Root}\n   *   as the first argument and current {@link Result} instance\n   *   as the second.\n   * * An object with a `postcss` method. PostCSS will use that method\n   *   as described in #2.\n   * * Another {@link Processor} instance. PostCSS will copy plugins\n   *   from that instance into this one.\n   *\n   * Plugins can also be added by passing them as arguments when creating\n   * a `postcss` instance (see [`postcss(plugins)`]).\n   *\n   * Asynchronous plugins should return a `Promise` instance.\n   *\n   * @param {Plugin|pluginFunction|Processor} plugin PostCSS plugin\n   *                                                 or {@link Processor}\n   *                                                 with plugins.\n   *\n   * @example\n   * const processor = postcss()\n   *   .use(autoprefixer)\n   *   .use(precss)\n   *\n   * @return {Processes} Current processor to make methods chain.\n   */\n\n\n  var _proto = Processor.prototype;\n\n  _proto.use = function use(plugin) {\n    this.plugins = this.plugins.concat(this.normalize([plugin]));\n    return this;\n  }\n  /**\n   * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n   * Because some plugins can be asynchronous it doesn’t make\n   * any transformations. Transformations will be applied\n   * in the {@link LazyResult} methods.\n   *\n   * @param {string|toString|Result} css String with input CSS or any object\n   *                                     with a `toString()` method,\n   *                                     like a Buffer. Optionally, send\n   *                                     a {@link Result} instance\n   *                                     and the processor will take\n   *                                     the {@link Root} from it.\n   * @param {processOptions} [opts]      Options.\n   *\n   * @return {LazyResult} Promise proxy.\n   *\n   * @example\n   * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n   *   .then(result => {\n   *      console.log(result.css)\n   *   })\n   */\n  ;\n\n  _proto.process = function (_process) {\n    function process(_x) {\n      return _process.apply(this, arguments);\n    }\n\n    process.toString = function () {\n      return _process.toString();\n    };\n\n    return process;\n  }(function (css, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    if (this.plugins.length === 0 && opts.parser === opts.stringifier) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn('You did not set any plugins, parser, or stringifier. ' + 'Right now, PostCSS does nothing. Pick plugins for your case ' + 'on https://www.postcss.parts/ and use them in postcss.config.js.');\n        }\n      }\n    }\n\n    return new _lazyResult.default(this, css, opts);\n  });\n\n  _proto.normalize = function normalize(plugins) {\n    var normalized = [];\n\n    for (var _iterator = _createForOfIteratorHelperLoose(plugins), _step; !(_step = _iterator()).done;) {\n      var i = _step.value;\n\n      if (i.postcss === true) {\n        var plugin = i();\n        throw new Error('PostCSS plugin ' + plugin.postcssPlugin + ' requires PostCSS 8.\\n' + 'Migration guide for end-users:\\n' + 'https://github.com/postcss/postcss/wiki/PostCSS-8-for-end-users');\n      }\n\n      if (i.postcss) i = i.postcss;\n\n      if (typeof i === 'object' && Array.isArray(i.plugins)) {\n        normalized = normalized.concat(i.plugins);\n      } else if (typeof i === 'function') {\n        normalized.push(i);\n      } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n        if (process.env.NODE_ENV !== 'production') {\n          throw new Error('PostCSS syntaxes cannot be used as plugins. Instead, please use ' + 'one of the syntax/parser/stringifier options as outlined ' + 'in your PostCSS runner documentation.');\n        }\n      } else if (typeof i === 'object' && i.postcssPlugin) {\n        throw new Error('PostCSS plugin ' + i.postcssPlugin + ' requires PostCSS 8.\\n' + 'Migration guide for end-users:\\n' + 'https://github.com/postcss/postcss/wiki/PostCSS-8-for-end-users');\n      } else {\n        throw new Error(i + ' is not a PostCSS plugin');\n      }\n    }\n\n    return normalized;\n  };\n\n  return Processor;\n}();\n\nvar _default = Processor;\n/**\n * @callback builder\n * @param {string} part          Part of generated CSS connected to this node.\n * @param {Node}   node          AST node.\n * @param {\"start\"|\"end\"} [type] Node’s part type.\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css   String with input CSS or any object\n *                                with toString() method, like a Buffer.\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node       Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n *                          or generate string and source map.\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse          Function to generate AST by string.\n * @property {stringifier} stringify Function to generate string by AST.\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root     Parsed input CSS.\n * @param {Result} result Result to set warnings or check other plugins.\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss PostCSS plugin function.\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from             The path of the CSS source file.\n *                                     You should always set `from`,\n *                                     because it is used in source map\n *                                     generation and syntax error messages.\n * @property {string} to               The path where you’ll put the output\n *                                     CSS file. You should always set `to`\n *                                     to generate correct source maps.\n * @property {parser} parser           Function to generate AST by string.\n * @property {stringifier} stringifier Class to generate string by AST.\n * @property {syntax} syntax           Object with `parse` and `stringify`.\n * @property {object} map              Source map options.\n * @property {boolean} map.inline                    Does source map should\n *                                                   be embedded in the output\n *                                                   CSS as a base64-encoded\n *                                                   comment.\n * @property {string|object|false|function} map.prev Source map content\n *                                                   from a previous\n *                                                   processing step\n *                                                   (for example, Sass).\n *                                                   PostCSS will try to find\n *                                                   previous map automatically,\n *                                                   so you could disable it by\n *                                                   `false` value.\n * @property {boolean} map.sourcesContent            Does PostCSS should set\n *                                                   the origin content to map.\n * @property {string|false} map.annotation           Does PostCSS should set\n *                                                   annotation comment to map.\n * @property {string} map.from                       Override `from` in map’s\n *                                                   sources`.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2Nlc3Nvci5lczYiXSwibmFtZXMiOlsiUHJvY2Vzc29yIiwicGx1Z2lucyIsInZlcnNpb24iLCJub3JtYWxpemUiLCJ1c2UiLCJwbHVnaW4iLCJjb25jYXQiLCJwcm9jZXNzIiwiY3NzIiwib3B0cyIsImxlbmd0aCIsInBhcnNlciIsInN0cmluZ2lmaWVyIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIkxhenlSZXN1bHQiLCJub3JtYWxpemVkIiwiaSIsInBvc3Rjc3MiLCJFcnJvciIsInBvc3Rjc3NQbHVnaW4iLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwicGFyc2UiLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7O0lBU01BLFM7QUFDSjs7OztBQUlBLHFCQUFhQyxPQUFiLEVBQTJCO0FBQUEsUUFBZEEsT0FBYztBQUFkQSxNQUFBQSxPQUFjLEdBQUosRUFBSTtBQUFBOztBQUN6Qjs7Ozs7Ozs7OztBQVVBLFNBQUtDLE9BQUwsR0FBZSxRQUFmO0FBQ0E7Ozs7Ozs7Ozs7QUFTQSxTQUFLRCxPQUFMLEdBQWUsS0FBS0UsU0FBTCxDQUFlRixPQUFmLENBQWY7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0E2QkFHLEcsR0FBQSxhQUFLQyxNQUFMLEVBQWE7QUFDWCxTQUFLSixPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhSyxNQUFiLENBQW9CLEtBQUtILFNBQUwsQ0FBZSxDQUFDRSxNQUFELENBQWYsQ0FBcEIsQ0FBZjtBQUNBLFdBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQXNCQUUsTzs7Ozs7Ozs7OztJQUFBLFVBQVNDLEdBQVQsRUFBY0MsSUFBZCxFQUEwQjtBQUFBLFFBQVpBLElBQVk7QUFBWkEsTUFBQUEsSUFBWSxHQUFMLEVBQUs7QUFBQTs7QUFDeEIsUUFBSSxLQUFLUixPQUFMLENBQWFTLE1BQWIsS0FBd0IsQ0FBeEIsSUFBNkJELElBQUksQ0FBQ0UsTUFBTCxLQUFnQkYsSUFBSSxDQUFDRyxXQUF0RCxFQUFtRTtBQUNqRSxVQUFJTCxPQUFPLENBQUNNLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUE3QixFQUEyQztBQUN6QyxZQUFJLE9BQU9DLE9BQVAsS0FBbUIsV0FBbkIsSUFBa0NBLE9BQU8sQ0FBQ0MsSUFBOUMsRUFBb0Q7QUFDbERELFVBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUNFLDBEQUNBLDhEQURBLEdBRUEsa0VBSEY7QUFLRDtBQUNGO0FBQ0Y7O0FBQ0QsV0FBTyxJQUFJQyxtQkFBSixDQUFlLElBQWYsRUFBcUJULEdBQXJCLEVBQTBCQyxJQUExQixDQUFQO0FBQ0QsRzs7U0FFRE4sUyxHQUFBLG1CQUFXRixPQUFYLEVBQW9CO0FBQ2xCLFFBQUlpQixVQUFVLEdBQUcsRUFBakI7O0FBQ0EseURBQWNqQixPQUFkLHdDQUF1QjtBQUFBLFVBQWRrQixDQUFjOztBQUNyQixVQUFJQSxDQUFDLENBQUNDLE9BQUYsS0FBYyxJQUFsQixFQUF3QjtBQUN0QixZQUFJZixNQUFNLEdBQUdjLENBQUMsRUFBZDtBQUNBLGNBQU0sSUFBSUUsS0FBSixDQUNKLG9CQUFvQmhCLE1BQU0sQ0FBQ2lCLGFBQTNCLEdBQTJDLHdCQUEzQyxHQUNBLGtDQURBLEdBRUEsaUVBSEksQ0FBTjtBQUtEOztBQUVELFVBQUlILENBQUMsQ0FBQ0MsT0FBTixFQUFlRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ0MsT0FBTjs7QUFFZixVQUFJLE9BQU9ELENBQVAsS0FBYSxRQUFiLElBQXlCSSxLQUFLLENBQUNDLE9BQU4sQ0FBY0wsQ0FBQyxDQUFDbEIsT0FBaEIsQ0FBN0IsRUFBdUQ7QUFDckRpQixRQUFBQSxVQUFVLEdBQUdBLFVBQVUsQ0FBQ1osTUFBWCxDQUFrQmEsQ0FBQyxDQUFDbEIsT0FBcEIsQ0FBYjtBQUNELE9BRkQsTUFFTyxJQUFJLE9BQU9rQixDQUFQLEtBQWEsVUFBakIsRUFBNkI7QUFDbENELFFBQUFBLFVBQVUsQ0FBQ08sSUFBWCxDQUFnQk4sQ0FBaEI7QUFDRCxPQUZNLE1BRUEsSUFBSSxPQUFPQSxDQUFQLEtBQWEsUUFBYixLQUEwQkEsQ0FBQyxDQUFDTyxLQUFGLElBQVdQLENBQUMsQ0FBQ1EsU0FBdkMsQ0FBSixFQUF1RDtBQUM1RCxZQUFJcEIsT0FBTyxDQUFDTSxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsZ0JBQU0sSUFBSU8sS0FBSixDQUNKLHFFQUNBLDJEQURBLEdBRUEsdUNBSEksQ0FBTjtBQUtEO0FBQ0YsT0FSTSxNQVFBLElBQUksT0FBT0YsQ0FBUCxLQUFhLFFBQWIsSUFBeUJBLENBQUMsQ0FBQ0csYUFBL0IsRUFBOEM7QUFDbkQsY0FBTSxJQUFJRCxLQUFKLENBQ0osb0JBQW9CRixDQUFDLENBQUNHLGFBQXRCLEdBQXNDLHdCQUF0QyxHQUNBLGtDQURBLEdBRUEsaUVBSEksQ0FBTjtBQUtELE9BTk0sTUFNQTtBQUNMLGNBQU0sSUFBSUQsS0FBSixDQUFVRixDQUFDLEdBQUcsMEJBQWQsQ0FBTjtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT0QsVUFBUDtBQUNELEc7Ozs7O2VBR1lsQixTO0FBRWY7Ozs7Ozs7QUFPQTs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7OztBQU1BOzs7OztBQUtBOzs7Ozs7QUFNQTs7Ozs7QUFLQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMYXp5UmVzdWx0IGZyb20gJy4vbGF6eS1yZXN1bHQnXG5cbi8qKlxuICogQ29udGFpbnMgcGx1Z2lucyB0byBwcm9jZXNzIENTUy4gQ3JlYXRlIG9uZSBgUHJvY2Vzc29yYCBpbnN0YW5jZSxcbiAqIGluaXRpYWxpemUgaXRzIHBsdWdpbnMsIGFuZCB0aGVuIHVzZSB0aGF0IGluc3RhbmNlIG9uIG51bWVyb3VzIENTUyBmaWxlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcHJvY2Vzc29yID0gcG9zdGNzcyhbYXV0b3ByZWZpeGVyLCBwcmVjc3NdKVxuICogcHJvY2Vzc29yLnByb2Nlc3MoY3NzMSkudGhlbihyZXN1bHQgPT4gY29uc29sZS5sb2cocmVzdWx0LmNzcykpXG4gKiBwcm9jZXNzb3IucHJvY2Vzcyhjc3MyKS50aGVuKHJlc3VsdCA9PiBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKSlcbiAqL1xuY2xhc3MgUHJvY2Vzc29yIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7QXJyYXkuPFBsdWdpbnxwbHVnaW5GdW5jdGlvbj58UHJvY2Vzc29yfSBwbHVnaW5zIFBvc3RDU1MgcGx1Z2lucy5cbiAgICogICAgICAgIFNlZSB7QGxpbmsgUHJvY2Vzc29yI3VzZX0gZm9yIHBsdWdpbiBmb3JtYXQuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAocGx1Z2lucyA9IFtdKSB7XG4gICAgLyoqXG4gICAgICogQ3VycmVudCBQb3N0Q1NTIHZlcnNpb24uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAocmVzdWx0LnByb2Nlc3Nvci52ZXJzaW9uLnNwbGl0KCcuJylbMF0gIT09ICc2Jykge1xuICAgICAqICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIHBsdWdpbiB3b3JrcyBvbmx5IHdpdGggUG9zdENTUyA2JylcbiAgICAgKiB9XG4gICAgICovXG4gICAgdGhpcy52ZXJzaW9uID0gJzcuMC4zOSdcbiAgICAvKipcbiAgICAgKiBQbHVnaW5zIGFkZGVkIHRvIHRoaXMgcHJvY2Vzc29yLlxuICAgICAqXG4gICAgICogQHR5cGUge3BsdWdpbkZ1bmN0aW9uW119XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW2F1dG9wcmVmaXhlciwgcHJlY3NzXSlcbiAgICAgKiBwcm9jZXNzb3IucGx1Z2lucy5sZW5ndGggLy89PiAyXG4gICAgICovXG4gICAgdGhpcy5wbHVnaW5zID0gdGhpcy5ub3JtYWxpemUocGx1Z2lucylcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcGx1Z2luIHRvIGJlIHVzZWQgYXMgYSBDU1MgcHJvY2Vzc29yLlxuICAgKlxuICAgKiBQb3N0Q1NTIHBsdWdpbiBjYW4gYmUgaW4gNCBmb3JtYXRzOlxuICAgKiAqIEEgcGx1Z2luIGNyZWF0ZWQgYnkge0BsaW5rIHBvc3Rjc3MucGx1Z2lufSBtZXRob2QuXG4gICAqICogQSBmdW5jdGlvbi4gUG9zdENTUyB3aWxsIHBhc3MgdGhlIGZ1bmN0aW9uIGEgQHtsaW5rIFJvb3R9XG4gICAqICAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBjdXJyZW50IHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAqICAgYXMgdGhlIHNlY29uZC5cbiAgICogKiBBbiBvYmplY3Qgd2l0aCBhIGBwb3N0Y3NzYCBtZXRob2QuIFBvc3RDU1Mgd2lsbCB1c2UgdGhhdCBtZXRob2RcbiAgICogICBhcyBkZXNjcmliZWQgaW4gIzIuXG4gICAqICogQW5vdGhlciB7QGxpbmsgUHJvY2Vzc29yfSBpbnN0YW5jZS4gUG9zdENTUyB3aWxsIGNvcHkgcGx1Z2luc1xuICAgKiAgIGZyb20gdGhhdCBpbnN0YW5jZSBpbnRvIHRoaXMgb25lLlxuICAgKlxuICAgKiBQbHVnaW5zIGNhbiBhbHNvIGJlIGFkZGVkIGJ5IHBhc3NpbmcgdGhlbSBhcyBhcmd1bWVudHMgd2hlbiBjcmVhdGluZ1xuICAgKiBhIGBwb3N0Y3NzYCBpbnN0YW5jZSAoc2VlIFtgcG9zdGNzcyhwbHVnaW5zKWBdKS5cbiAgICpcbiAgICogQXN5bmNocm9ub3VzIHBsdWdpbnMgc2hvdWxkIHJldHVybiBhIGBQcm9taXNlYCBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtQbHVnaW58cGx1Z2luRnVuY3Rpb258UHJvY2Vzc29yfSBwbHVnaW4gUG9zdENTUyBwbHVnaW5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ige0BsaW5rIFByb2Nlc3Nvcn1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwbHVnaW5zLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKClcbiAgICogICAudXNlKGF1dG9wcmVmaXhlcilcbiAgICogICAudXNlKHByZWNzcylcbiAgICpcbiAgICogQHJldHVybiB7UHJvY2Vzc2VzfSBDdXJyZW50IHByb2Nlc3NvciB0byBtYWtlIG1ldGhvZHMgY2hhaW4uXG4gICAqL1xuICB1c2UgKHBsdWdpbikge1xuICAgIHRoaXMucGx1Z2lucyA9IHRoaXMucGx1Z2lucy5jb25jYXQodGhpcy5ub3JtYWxpemUoW3BsdWdpbl0pKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIHNvdXJjZSBDU1MgYW5kIHJldHVybnMgYSB7QGxpbmsgTGF6eVJlc3VsdH0gUHJvbWlzZSBwcm94eS5cbiAgICogQmVjYXVzZSBzb21lIHBsdWdpbnMgY2FuIGJlIGFzeW5jaHJvbm91cyBpdCBkb2VzbuKAmXQgbWFrZVxuICAgKiBhbnkgdHJhbnNmb3JtYXRpb25zLiBUcmFuc2Zvcm1hdGlvbnMgd2lsbCBiZSBhcHBsaWVkXG4gICAqIGluIHRoZSB7QGxpbmsgTGF6eVJlc3VsdH0gbWV0aG9kcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8dG9TdHJpbmd8UmVzdWx0fSBjc3MgU3RyaW5nIHdpdGggaW5wdXQgQ1NTIG9yIGFueSBvYmplY3RcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIGB0b1N0cmluZygpYCBtZXRob2QsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpa2UgYSBCdWZmZXIuIE9wdGlvbmFsbHksIHNlbmRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSB7QGxpbmsgUmVzdWx0fSBpbnN0YW5jZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHByb2Nlc3NvciB3aWxsIHRha2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHtAbGluayBSb290fSBmcm9tIGl0LlxuICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gICAgICBPcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtMYXp5UmVzdWx0fSBQcm9taXNlIHByb3h5LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwcm9jZXNzb3IucHJvY2Vzcyhjc3MsIHsgZnJvbTogJ2EuY3NzJywgdG86ICdhLm91dC5jc3MnIH0pXG4gICAqICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiAgIH0pXG4gICAqL1xuICBwcm9jZXNzIChjc3MsIG9wdHMgPSB7IH0pIHtcbiAgICBpZiAodGhpcy5wbHVnaW5zLmxlbmd0aCA9PT0gMCAmJiBvcHRzLnBhcnNlciA9PT0gb3B0cy5zdHJpbmdpZmllcikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAnWW91IGRpZCBub3Qgc2V0IGFueSBwbHVnaW5zLCBwYXJzZXIsIG9yIHN0cmluZ2lmaWVyLiAnICtcbiAgICAgICAgICAgICdSaWdodCBub3csIFBvc3RDU1MgZG9lcyBub3RoaW5nLiBQaWNrIHBsdWdpbnMgZm9yIHlvdXIgY2FzZSAnICtcbiAgICAgICAgICAgICdvbiBodHRwczovL3d3dy5wb3N0Y3NzLnBhcnRzLyBhbmQgdXNlIHRoZW0gaW4gcG9zdGNzcy5jb25maWcuanMuJ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IExhenlSZXN1bHQodGhpcywgY3NzLCBvcHRzKVxuICB9XG5cbiAgbm9ybWFsaXplIChwbHVnaW5zKSB7XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSBbXVxuICAgIGZvciAobGV0IGkgb2YgcGx1Z2lucykge1xuICAgICAgaWYgKGkucG9zdGNzcyA9PT0gdHJ1ZSkge1xuICAgICAgICBsZXQgcGx1Z2luID0gaSgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnUG9zdENTUyBwbHVnaW4gJyArIHBsdWdpbi5wb3N0Y3NzUGx1Z2luICsgJyByZXF1aXJlcyBQb3N0Q1NTIDguXFxuJyArXG4gICAgICAgICAgJ01pZ3JhdGlvbiBndWlkZSBmb3IgZW5kLXVzZXJzOlxcbicgK1xuICAgICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vcG9zdGNzcy9wb3N0Y3NzL3dpa2kvUG9zdENTUy04LWZvci1lbmQtdXNlcnMnXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgaWYgKGkucG9zdGNzcykgaSA9IGkucG9zdGNzc1xuXG4gICAgICBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoaS5wbHVnaW5zKSkge1xuICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5jb25jYXQoaS5wbHVnaW5zKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBub3JtYWxpemVkLnB1c2goaSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIChpLnBhcnNlIHx8IGkuc3RyaW5naWZ5KSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdQb3N0Q1NTIHN5bnRheGVzIGNhbm5vdCBiZSB1c2VkIGFzIHBsdWdpbnMuIEluc3RlYWQsIHBsZWFzZSB1c2UgJyArXG4gICAgICAgICAgICAnb25lIG9mIHRoZSBzeW50YXgvcGFyc2VyL3N0cmluZ2lmaWVyIG9wdGlvbnMgYXMgb3V0bGluZWQgJyArXG4gICAgICAgICAgICAnaW4geW91ciBQb3N0Q1NTIHJ1bm5lciBkb2N1bWVudGF0aW9uLidcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIGkucG9zdGNzc1BsdWdpbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1Bvc3RDU1MgcGx1Z2luICcgKyBpLnBvc3Rjc3NQbHVnaW4gKyAnIHJlcXVpcmVzIFBvc3RDU1MgOC5cXG4nICtcbiAgICAgICAgICAnTWlncmF0aW9uIGd1aWRlIGZvciBlbmQtdXNlcnM6XFxuJyArXG4gICAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9wb3N0Y3NzL3Bvc3Rjc3Mvd2lraS9Qb3N0Q1NTLTgtZm9yLWVuZC11c2VycydcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkgKyAnIGlzIG5vdCBhIFBvc3RDU1MgcGx1Z2luJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9jZXNzb3JcblxuLyoqXG4gKiBAY2FsbGJhY2sgYnVpbGRlclxuICogQHBhcmFtIHtzdHJpbmd9IHBhcnQgICAgICAgICAgUGFydCBvZiBnZW5lcmF0ZWQgQ1NTIGNvbm5lY3RlZCB0byB0aGlzIG5vZGUuXG4gKiBAcGFyYW0ge05vZGV9ICAgbm9kZSAgICAgICAgICBBU1Qgbm9kZS5cbiAqIEBwYXJhbSB7XCJzdGFydFwifFwiZW5kXCJ9IFt0eXBlXSBOb2Rl4oCZcyBwYXJ0IHR5cGUuXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgcGFyc2VyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8dG9TdHJpbmd9IGNzcyAgIFN0cmluZyB3aXRoIGlucHV0IENTUyBvciBhbnkgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0b1N0cmluZygpIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlci5cbiAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXMuXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1RcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBzdHJpbmdpZmllclxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAgICBTdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgRnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBnZW5lcmF0ZSBzdHJpbmcgYW5kIHNvdXJjZSBtYXAuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHN5bnRheFxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlICAgICAgICAgIEZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmcuXG4gKiBAcHJvcGVydHkge3N0cmluZ2lmaWVyfSBzdHJpbmdpZnkgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgc3RyaW5nIGJ5IEFTVC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSB0b1N0cmluZ1xuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBsdWdpbkZ1bmN0aW9uXG4gKiBAcGFyYW0ge1Jvb3R9IHJvb3QgICAgIFBhcnNlZCBpbnB1dCBDU1MuXG4gKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0IFJlc3VsdCB0byBzZXQgd2FybmluZ3Mgb3IgY2hlY2sgb3RoZXIgcGx1Z2lucy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFBsdWdpblxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcG9zdGNzcyBQb3N0Q1NTIHBsdWdpbiBmdW5jdGlvbi5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAgICAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgQ1NTIHNvdXJjZSBmaWxlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgc2V0IGBmcm9tYCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBzb3VyY2UgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uIGFuZCBzeW50YXggZXJyb3IgbWVzc2FnZXMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdG8gICAgICAgICAgICAgICBUaGUgcGF0aCB3aGVyZSB5b3XigJlsbCBwdXQgdGhlIG91dHB1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTIGZpbGUuIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgdG9gXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBjb3JyZWN0IHNvdXJjZSBtYXBzLlxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlciAgICAgICAgICAgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgQVNUIGJ5IHN0cmluZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmaWVyIENsYXNzIHRvIGdlbmVyYXRlIHN0cmluZyBieSBBU1QuXG4gKiBAcHJvcGVydHkge3N5bnRheH0gc3ludGF4ICAgICAgICAgICBPYmplY3Qgd2l0aCBgcGFyc2VgIGFuZCBgc3RyaW5naWZ5YC5cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBtYXAgICAgICAgICAgICAgIFNvdXJjZSBtYXAgb3B0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLmlubGluZSAgICAgICAgICAgICAgICAgICAgRG9lcyBzb3VyY2UgbWFwIHNob3VsZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBlbWJlZGRlZCBpbiB0aGUgb3V0cHV0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyBhcyBhIGJhc2U2NC1lbmNvZGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuXG4gKiBAcHJvcGVydHkge3N0cmluZ3xvYmplY3R8ZmFsc2V8ZnVuY3Rpb259IG1hcC5wcmV2IFNvdXJjZSBtYXAgY29udGVudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGEgcHJldmlvdXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyBzdGVwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2FzcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCB0cnkgdG8gZmluZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBtYXAgYXV0b21hdGljYWxseSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc28geW91IGNvdWxkIGRpc2FibGUgaXQgYnlcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZhbHNlYCB2YWx1ZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLnNvdXJjZXNDb250ZW50ICAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9yaWdpbiBjb250ZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfGZhbHNlfSBtYXAuYW5ub3RhdGlvbiAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbiBjb21tZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtYXAuZnJvbSAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGUgYGZyb21gIGluIG1hcOKAmXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlc2AuXG4gKi9cbiJdLCJmaWxlIjoicHJvY2Vzc29yLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _mapGenerator = _interopRequireDefault(require(\"./map-generator\"));\n\nvar _stringify2 = _interopRequireDefault(require(\"./stringify\"));\n\nvar _warnOnce = _interopRequireDefault(require(\"./warn-once\"));\n\nvar _result = _interopRequireDefault(require(\"./result\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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\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 isPromise(obj) {\n  return typeof obj === 'object' && typeof obj.then === 'function';\n}\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([autoprefixer]).process(css)\n */\n\n\nvar LazyResult = /*#__PURE__*/function () {\n  function LazyResult(processor, css, opts) {\n    this.stringified = false;\n    this.processed = false;\n    var root;\n\n    if (typeof css === 'object' && css !== null && css.type === 'root') {\n      root = css;\n    } else if (css instanceof LazyResult || css instanceof _result.default) {\n      root = css.root;\n\n      if (css.map) {\n        if (typeof opts.map === 'undefined') opts.map = {};\n        if (!opts.map.inline) opts.map.inline = false;\n        opts.map.prev = css.map;\n      }\n    } else {\n      var parser = _parse.default;\n      if (opts.syntax) parser = opts.syntax.parse;\n      if (opts.parser) parser = opts.parser;\n      if (parser.parse) parser = parser.parse;\n\n      try {\n        root = parser(css, opts);\n      } catch (error) {\n        this.error = error;\n      }\n    }\n\n    this.result = new _result.default(processor, root, opts);\n  }\n  /**\n   * Returns a {@link Processor} instance, which will be used\n   * for CSS transformations.\n   *\n   * @type {Processor}\n   */\n\n\n  var _proto = LazyResult.prototype;\n\n  /**\n   * Processes input CSS through synchronous plugins\n   * and calls {@link Result#warnings()}.\n   *\n   * @return {Warning[]} Warnings from plugins.\n   */\n  _proto.warnings = function warnings() {\n    return this.sync().warnings();\n  }\n  /**\n   * Alias for the {@link LazyResult#css} property.\n   *\n   * @example\n   * lazy + '' === lazy.css\n   *\n   * @return {string} Output CSS.\n   */\n  ;\n\n  _proto.toString = function toString() {\n    return this.css;\n  }\n  /**\n   * Processes input CSS through synchronous and asynchronous plugins\n   * and calls `onFulfilled` with a Result instance. If a plugin throws\n   * an error, the `onRejected` callback will be executed.\n   *\n   * It implements standard Promise API.\n   *\n   * @param {onFulfilled} onFulfilled Callback will be executed\n   *                                  when all plugins will finish work.\n   * @param {onRejected}  onRejected  Callback will be executed on any error.\n   *\n   * @return {Promise} Promise API to make queue.\n   *\n   * @example\n   * postcss([autoprefixer]).process(css, { from: cssPath }).then(result => {\n   *   console.log(result.css)\n   * })\n   */\n  ;\n\n  _proto.then = function then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!('from' in this.opts)) {\n        (0, _warnOnce.default)('Without `from` option PostCSS could generate wrong source map ' + 'and will not find Browserslist config. Set it to CSS file path ' + 'or to `undefined` to prevent this warning.');\n      }\n    }\n\n    return this.async().then(onFulfilled, onRejected);\n  }\n  /**\n   * Processes input CSS through synchronous and asynchronous plugins\n   * and calls onRejected for each error thrown in any plugin.\n   *\n   * It implements standard Promise API.\n   *\n   * @param {onRejected} onRejected Callback will be executed on any error.\n   *\n   * @return {Promise} Promise API to make queue.\n   *\n   * @example\n   * postcss([autoprefixer]).process(css).then(result => {\n   *   console.log(result.css)\n   * }).catch(error => {\n   *   console.error(error)\n   * })\n   */\n  ;\n\n  _proto.catch = function _catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  /**\n   * Processes input CSS through synchronous and asynchronous plugins\n   * and calls onFinally on any error or when all plugins will finish work.\n   *\n   * It implements standard Promise API.\n   *\n   * @param {onFinally} onFinally Callback will be executed on any error or\n   *                              when all plugins will finish work.\n   *\n   * @return {Promise} Promise API to make queue.\n   *\n   * @example\n   * postcss([autoprefixer]).process(css).finally(() => {\n   *   console.log('processing ended')\n   * })\n   */\n  ;\n\n  _proto.finally = function _finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  };\n\n  _proto.handleError = function handleError(error, plugin) {\n    try {\n      this.error = error;\n\n      if (error.name === 'CssSyntaxError' && !error.plugin) {\n        error.plugin = plugin.postcssPlugin;\n        error.setMessage();\n      } else if (plugin.postcssVersion) {\n        if (process.env.NODE_ENV !== 'production') {\n          var pluginName = plugin.postcssPlugin;\n          var pluginVer = plugin.postcssVersion;\n          var runtimeVer = this.result.processor.version;\n          var a = pluginVer.split('.');\n          var b = runtimeVer.split('.');\n\n          if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n            console.error('Unknown error from PostCSS plugin. Your current PostCSS ' + 'version is ' + runtimeVer + ', but ' + pluginName + ' uses ' + pluginVer + '. Perhaps this is the source of the error below.');\n          }\n        }\n      }\n    } catch (err) {\n      if (console && console.error) console.error(err);\n    }\n  };\n\n  _proto.asyncTick = function asyncTick(resolve, reject) {\n    var _this = this;\n\n    if (this.plugin >= this.processor.plugins.length) {\n      this.processed = true;\n      return resolve();\n    }\n\n    try {\n      var plugin = this.processor.plugins[this.plugin];\n      var promise = this.run(plugin);\n      this.plugin += 1;\n\n      if (isPromise(promise)) {\n        promise.then(function () {\n          _this.asyncTick(resolve, reject);\n        }).catch(function (error) {\n          _this.handleError(error, plugin);\n\n          _this.processed = true;\n          reject(error);\n        });\n      } else {\n        this.asyncTick(resolve, reject);\n      }\n    } catch (error) {\n      this.processed = true;\n      reject(error);\n    }\n  };\n\n  _proto.async = function async() {\n    var _this2 = this;\n\n    if (this.processed) {\n      return new Promise(function (resolve, reject) {\n        if (_this2.error) {\n          reject(_this2.error);\n        } else {\n          resolve(_this2.stringify());\n        }\n      });\n    }\n\n    if (this.processing) {\n      return this.processing;\n    }\n\n    this.processing = new Promise(function (resolve, reject) {\n      if (_this2.error) return reject(_this2.error);\n      _this2.plugin = 0;\n\n      _this2.asyncTick(resolve, reject);\n    }).then(function () {\n      _this2.processed = true;\n      return _this2.stringify();\n    });\n    return this.processing;\n  };\n\n  _proto.sync = function sync() {\n    if (this.processed) return this.result;\n    this.processed = true;\n\n    if (this.processing) {\n      throw new Error('Use process(css).then(cb) to work with async plugins');\n    }\n\n    if (this.error) throw this.error;\n\n    for (var _iterator = _createForOfIteratorHelperLoose(this.result.processor.plugins), _step; !(_step = _iterator()).done;) {\n      var plugin = _step.value;\n      var promise = this.run(plugin);\n\n      if (isPromise(promise)) {\n        throw new Error('Use process(css).then(cb) to work with async plugins');\n      }\n    }\n\n    return this.result;\n  };\n\n  _proto.run = function run(plugin) {\n    this.result.lastPlugin = plugin;\n\n    try {\n      return plugin(this.result.root, this.result);\n    } catch (error) {\n      this.handleError(error, plugin);\n      throw error;\n    }\n  };\n\n  _proto.stringify = function stringify() {\n    if (this.stringified) return this.result;\n    this.stringified = true;\n    this.sync();\n    var opts = this.result.opts;\n    var str = _stringify2.default;\n    if (opts.syntax) str = opts.syntax.stringify;\n    if (opts.stringifier) str = opts.stringifier;\n    if (str.stringify) str = str.stringify;\n    var map = new _mapGenerator.default(str, this.result.root, this.result.opts);\n    var data = map.generate();\n    this.result.css = data[0];\n    this.result.map = data[1];\n    return this.result;\n  };\n\n  _createClass(LazyResult, [{\n    key: \"processor\",\n    get: function get() {\n      return this.result.processor;\n    }\n    /**\n     * Options from the {@link Processor#process} call.\n     *\n     * @type {processOptions}\n     */\n\n  }, {\n    key: \"opts\",\n    get: function get() {\n      return this.result.opts;\n    }\n    /**\n     * Processes input CSS through synchronous plugins, converts `Root`\n     * to a CSS string and returns {@link Result#css}.\n     *\n     * This property will only work with synchronous plugins.\n     * If the processor contains any asynchronous plugins\n     * it will throw an error. This is why this method is only\n     * for debug purpose, you should always use {@link LazyResult#then}.\n     *\n     * @type {string}\n     * @see Result#css\n     */\n\n  }, {\n    key: \"css\",\n    get: function get() {\n      return this.stringify().css;\n    }\n    /**\n     * An alias for the `css` property. Use it with syntaxes\n     * that generate non-CSS output.\n     *\n     * This property will only work with synchronous plugins.\n     * If the processor contains any asynchronous plugins\n     * it will throw an error. This is why this method is only\n     * for debug purpose, you should always use {@link LazyResult#then}.\n     *\n     * @type {string}\n     * @see Result#content\n     */\n\n  }, {\n    key: \"content\",\n    get: function get() {\n      return this.stringify().content;\n    }\n    /**\n     * Processes input CSS through synchronous plugins\n     * and returns {@link Result#map}.\n     *\n     * This property will only work with synchronous plugins.\n     * If the processor contains any asynchronous plugins\n     * it will throw an error. This is why this method is only\n     * for debug purpose, you should always use {@link LazyResult#then}.\n     *\n     * @type {SourceMapGenerator}\n     * @see Result#map\n     */\n\n  }, {\n    key: \"map\",\n    get: function get() {\n      return this.stringify().map;\n    }\n    /**\n     * Processes input CSS through synchronous plugins\n     * and returns {@link Result#root}.\n     *\n     * This property will only work with synchronous plugins. If the processor\n     * contains any asynchronous plugins it will throw an error.\n     *\n     * This is why this method is only for debug purpose,\n     * you should always use {@link LazyResult#then}.\n     *\n     * @type {Root}\n     * @see Result#root\n     */\n\n  }, {\n    key: \"root\",\n    get: function get() {\n      return this.sync().root;\n    }\n    /**\n     * Processes input CSS through synchronous plugins\n     * and returns {@link Result#messages}.\n     *\n     * This property will only work with synchronous plugins. If the processor\n     * contains any asynchronous plugins it will throw an error.\n     *\n     * This is why this method is only for debug purpose,\n     * you should always use {@link LazyResult#then}.\n     *\n     * @type {Message[]}\n     * @see Result#messages\n     */\n\n  }, {\n    key: \"messages\",\n    get: function get() {\n      return this.sync().messages;\n    }\n  }]);\n\n  return LazyResult;\n}();\n\nvar _default = LazyResult;\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxhenktcmVzdWx0LmVzNiJdLCJuYW1lcyI6WyJpc1Byb21pc2UiLCJvYmoiLCJ0aGVuIiwiTGF6eVJlc3VsdCIsInByb2Nlc3NvciIsImNzcyIsIm9wdHMiLCJzdHJpbmdpZmllZCIsInByb2Nlc3NlZCIsInJvb3QiLCJ0eXBlIiwiUmVzdWx0IiwibWFwIiwiaW5saW5lIiwicHJldiIsInBhcnNlciIsInBhcnNlIiwic3ludGF4IiwiZXJyb3IiLCJyZXN1bHQiLCJ3YXJuaW5ncyIsInN5bmMiLCJ0b1N0cmluZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImFzeW5jIiwiY2F0Y2giLCJmaW5hbGx5Iiwib25GaW5hbGx5IiwiaGFuZGxlRXJyb3IiLCJwbHVnaW4iLCJuYW1lIiwicG9zdGNzc1BsdWdpbiIsInNldE1lc3NhZ2UiLCJwb3N0Y3NzVmVyc2lvbiIsInBsdWdpbk5hbWUiLCJwbHVnaW5WZXIiLCJydW50aW1lVmVyIiwidmVyc2lvbiIsImEiLCJzcGxpdCIsImIiLCJwYXJzZUludCIsImNvbnNvbGUiLCJlcnIiLCJhc3luY1RpY2siLCJyZXNvbHZlIiwicmVqZWN0IiwicGx1Z2lucyIsImxlbmd0aCIsInByb21pc2UiLCJydW4iLCJQcm9taXNlIiwic3RyaW5naWZ5IiwicHJvY2Vzc2luZyIsIkVycm9yIiwibGFzdFBsdWdpbiIsInN0ciIsInN0cmluZ2lmaWVyIiwiTWFwR2VuZXJhdG9yIiwiZGF0YSIsImdlbmVyYXRlIiwiY29udGVudCIsIm1lc3NhZ2VzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLEdBQXBCLEVBQXlCO0FBQ3ZCLFNBQU8sT0FBT0EsR0FBUCxLQUFlLFFBQWYsSUFBMkIsT0FBT0EsR0FBRyxDQUFDQyxJQUFYLEtBQW9CLFVBQXREO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztJ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SUFBSWtELHFCQUFKLENBQWlCRixHQUFqQixFQUFzQixLQUFLekMsTUFBTCxDQUFZVixJQUFsQyxFQUF3QyxLQUFLVSxNQUFMLENBQVliLElBQXBELENBQVY7QUFDQSxRQUFJeUQsSUFBSSxHQUFHbkQsR0FBRyxDQUFDb0QsUUFBSixFQUFYO0FBQ0EsU0FBSzdDLE1BQUwsQ0FBWWQsR0FBWixHQUFrQjBELElBQUksQ0FBQyxDQUFELENBQXRCO0FBQ0EsU0FBSzVDLE1BQUwsQ0FBWVAsR0FBWixHQUFrQm1ELElBQUksQ0FBQyxDQUFELENBQXRCO0FBRUEsV0FBTyxLQUFLNUMsTUFBWjtBQUNELEc7Ozs7d0JBalVnQjtBQUNmLGFBQU8sS0FBS0EsTUFBTCxDQUFZZixTQUFuQjtBQUNEO0FBRUQ7Ozs7Ozs7O3dCQUtZO0FBQ1YsYUFBTyxLQUFLZSxNQUFMLENBQVliLElBQW5CO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O3dCQVlXO0FBQ1QsYUFBTyxLQUFLa0QsU0FBTCxHQUFpQm5ELEdBQXhCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O3dCQVllO0FBQ2IsYUFBTyxLQUFLbUQsU0FBTCxHQUFpQlMsT0FBeEI7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7d0JBWVc7QUFDVCxhQUFPLEtBQUtULFNBQUwsR0FBaUI1QyxHQUF4QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBYVk7QUFDVixhQUFPLEtBQUtTLElBQUwsR0FBWVosSUFBbkI7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O3dCQWFnQjtBQUNkLGFBQU8sS0FBS1ksSUFBTCxHQUFZNkMsUUFBbkI7QUFDRDs7Ozs7O2VBdU9ZL0QsVTtBQUVmOzs7OztBQUtBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hcEdlbmVyYXRvciBmcm9tICcuL21hcC1nZW5lcmF0b3InXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuaW1wb3J0IHdhcm5PbmNlIGZyb20gJy4vd2Fybi1vbmNlJ1xuaW1wb3J0IFJlc3VsdCBmcm9tICcuL3Jlc3VsdCdcbmltcG9ydCBwYXJzZSBmcm9tICcuL3BhcnNlJ1xuXG5mdW5jdGlvbiBpc1Byb21pc2UgKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iai50aGVuID09PSAnZnVuY3Rpb24nXG59XG5cbi8qKlxuICogQSBQcm9taXNlIHByb3h5IGZvciB0aGUgcmVzdWx0IG9mIFBvc3RDU1MgdHJhbnNmb3JtYXRpb25zLlxuICpcbiAqIEEgYExhenlSZXN1bHRgIGluc3RhbmNlIGlzIHJldHVybmVkIGJ5IHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30uXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGxhenkgPSBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcylcbiAqL1xuY2xhc3MgTGF6eVJlc3VsdCB7XG4gIGNvbnN0cnVjdG9yIChwcm9jZXNzb3IsIGNzcywgb3B0cykge1xuICAgIHRoaXMuc3RyaW5naWZpZWQgPSBmYWxzZVxuICAgIHRoaXMucHJvY2Vzc2VkID0gZmFsc2VcblxuICAgIGxldCByb290XG4gICAgaWYgKHR5cGVvZiBjc3MgPT09ICdvYmplY3QnICYmIGNzcyAhPT0gbnVsbCAmJiBjc3MudHlwZSA9PT0gJ3Jvb3QnKSB7XG4gICAgICByb290ID0gY3NzXG4gICAgfSBlbHNlIGlmIChjc3MgaW5zdGFuY2VvZiBMYXp5UmVzdWx0IHx8IGNzcyBpbnN0YW5jZW9mIFJlc3VsdCkge1xuICAgICAgcm9vdCA9IGNzcy5yb290XG4gICAgICBpZiAoY3NzLm1hcCkge1xuICAgICAgICBpZiAodHlwZW9mIG9wdHMubWFwID09PSAndW5kZWZpbmVkJykgb3B0cy5tYXAgPSB7IH1cbiAgICAgICAgaWYgKCFvcHRzLm1hcC5pbmxpbmUpIG9wdHMubWFwLmlubGluZSA9IGZhbHNlXG4gICAgICAgIG9wdHMubWFwLnByZXYgPSBjc3MubWFwXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwYXJzZXIgPSBwYXJzZVxuICAgICAgaWYgKG9wdHMuc3ludGF4KSBwYXJzZXIgPSBvcHRzLnN5bnRheC5wYXJzZVxuICAgICAgaWYgKG9wdHMucGFyc2VyKSBwYXJzZXIgPSBvcHRzLnBhcnNlclxuICAgICAgaWYgKHBhcnNlci5wYXJzZSkgcGFyc2VyID0gcGFyc2VyLnBhcnNlXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJvb3QgPSBwYXJzZXIoY3NzLCBvcHRzKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXN1bHQgPSBuZXcgUmVzdWx0KHByb2Nlc3Nvciwgcm9vdCwgb3B0cylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEge0BsaW5rIFByb2Nlc3Nvcn0gaW5zdGFuY2UsIHdoaWNoIHdpbGwgYmUgdXNlZFxuICAgKiBmb3IgQ1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAgICpcbiAgICogQHR5cGUge1Byb2Nlc3Nvcn1cbiAgICovXG4gIGdldCBwcm9jZXNzb3IgKCkge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdC5wcm9jZXNzb3JcbiAgfVxuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZyb20gdGhlIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30gY2FsbC5cbiAgICpcbiAgICogQHR5cGUge3Byb2Nlc3NPcHRpb25zfVxuICAgKi9cbiAgZ2V0IG9wdHMgKCkge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdC5vcHRzXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnMsIGNvbnZlcnRzIGBSb290YFxuICAgKiB0byBhIENTUyBzdHJpbmcgYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNjc3N9LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy5cbiAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgKiBmb3IgZGVidWcgcHVycG9zZSwgeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAc2VlIFJlc3VsdCNjc3NcbiAgICovXG4gIGdldCBjc3MgKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeSgpLmNzc1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIGFsaWFzIGZvciB0aGUgYGNzc2AgcHJvcGVydHkuIFVzZSBpdCB3aXRoIHN5bnRheGVzXG4gICAqIHRoYXQgZ2VuZXJhdGUgbm9uLUNTUyBvdXRwdXQuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgKiBJZiB0aGUgcHJvY2Vzc29yIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBpdCB3aWxsIHRocm93IGFuIGVycm9yLiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5XG4gICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBzZWUgUmVzdWx0I2NvbnRlbnRcbiAgICovXG4gIGdldCBjb250ZW50ICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKS5jb250ZW50XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNtYXB9LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy5cbiAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgKiBmb3IgZGVidWcgcHVycG9zZSwgeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7U291cmNlTWFwR2VuZXJhdG9yfVxuICAgKiBAc2VlIFJlc3VsdCNtYXBcbiAgICovXG4gIGdldCBtYXAgKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeSgpLm1hcFxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjcm9vdH0uXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLiBJZiB0aGUgcHJvY2Vzc29yXG4gICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5IGZvciBkZWJ1ZyBwdXJwb3NlLFxuICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAqXG4gICAqIEB0eXBlIHtSb290fVxuICAgKiBAc2VlIFJlc3VsdCNyb290XG4gICAqL1xuICBnZXQgcm9vdCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3luYygpLnJvb3RcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgcmV0dXJucyB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuIElmIHRoZSBwcm9jZXNzb3JcbiAgICogY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gICAqXG4gICAqIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHkgZm9yIGRlYnVnIHB1cnBvc2UsXG4gICAqIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge01lc3NhZ2VbXX1cbiAgICogQHNlZSBSZXN1bHQjbWVzc2FnZXNcbiAgICovXG4gIGdldCBtZXNzYWdlcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3luYygpLm1lc3NhZ2VzXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIGNhbGxzIHtAbGluayBSZXN1bHQjd2FybmluZ3MoKX0uXG4gICAqXG4gICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gV2FybmluZ3MgZnJvbSBwbHVnaW5zLlxuICAgKi9cbiAgd2FybmluZ3MgKCkge1xuICAgIHJldHVybiB0aGlzLnN5bmMoKS53YXJuaW5ncygpXG4gIH1cblxuICAvKipcbiAgICogQWxpYXMgZm9yIHRoZSB7QGxpbmsgTGF6eVJlc3VsdCNjc3N9IHByb3BlcnR5LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBsYXp5ICsgJycgPT09IGxhenkuY3NzXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gT3V0cHV0IENTUy5cbiAgICovXG4gIHRvU3RyaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5jc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCBjYWxscyBgb25GdWxmaWxsZWRgIHdpdGggYSBSZXN1bHQgaW5zdGFuY2UuIElmIGEgcGx1Z2luIHRocm93c1xuICAgKiBhbiBlcnJvciwgdGhlIGBvblJlamVjdGVkYCBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0ge29uRnVsZmlsbGVkfSBvbkZ1bGZpbGxlZCBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICogQHBhcmFtIHtvblJlamVjdGVkfSAgb25SZWplY3RlZCAgQ2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZCBvbiBhbnkgZXJyb3IuXG4gICAqXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IFByb21pc2UgQVBJIHRvIG1ha2UgcXVldWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MoW2F1dG9wcmVmaXhlcl0pLnByb2Nlc3MoY3NzLCB7IGZyb206IGNzc1BhdGggfSkudGhlbihyZXN1bHQgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gICAqIH0pXG4gICAqL1xuICB0aGVuIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoISgnZnJvbScgaW4gdGhpcy5vcHRzKSkge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAnV2l0aG91dCBgZnJvbWAgb3B0aW9uIFBvc3RDU1MgY291bGQgZ2VuZXJhdGUgd3Jvbmcgc291cmNlIG1hcCAnICtcbiAgICAgICAgICAnYW5kIHdpbGwgbm90IGZpbmQgQnJvd3NlcnNsaXN0IGNvbmZpZy4gU2V0IGl0IHRvIENTUyBmaWxlIHBhdGggJyArXG4gICAgICAgICAgJ29yIHRvIGB1bmRlZmluZWRgIHRvIHByZXZlbnQgdGhpcyB3YXJuaW5nLidcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hc3luYygpLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgY2FsbHMgb25SZWplY3RlZCBmb3IgZWFjaCBlcnJvciB0aHJvd24gaW4gYW55IHBsdWdpbi5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvblJlamVjdGVkfSBvblJlamVjdGVkIENhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcykudGhlbihyZXN1bHQgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gICAqIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICogICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgKiB9KVxuICAgKi9cbiAgY2F0Y2ggKG9uUmVqZWN0ZWQpIHtcbiAgICByZXR1cm4gdGhpcy5hc3luYygpLmNhdGNoKG9uUmVqZWN0ZWQpXG4gIH1cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIGNhbGxzIG9uRmluYWxseSBvbiBhbnkgZXJyb3Igb3Igd2hlbiBhbGwgcGx1Z2lucyB3aWxsIGZpbmlzaCB3b3JrLlxuICAgKlxuICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0ge29uRmluYWxseX0gb25GaW5hbGx5IENhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yIG9yXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBhbGwgcGx1Z2lucyB3aWxsIGZpbmlzaCB3b3JrLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcykuZmluYWxseSgoKSA9PiB7XG4gICAqICAgY29uc29sZS5sb2coJ3Byb2Nlc3NpbmcgZW5kZWQnKVxuICAgKiB9KVxuICAgKi9cbiAgZmluYWxseSAob25GaW5hbGx5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmMoKS50aGVuKG9uRmluYWxseSwgb25GaW5hbGx5KVxuICB9XG5cbiAgaGFuZGxlRXJyb3IgKGVycm9yLCBwbHVnaW4pIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5lcnJvciA9IGVycm9yXG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ0Nzc1N5bnRheEVycm9yJyAmJiAhZXJyb3IucGx1Z2luKSB7XG4gICAgICAgIGVycm9yLnBsdWdpbiA9IHBsdWdpbi5wb3N0Y3NzUGx1Z2luXG4gICAgICAgIGVycm9yLnNldE1lc3NhZ2UoKVxuICAgICAgfSBlbHNlIGlmIChwbHVnaW4ucG9zdGNzc1ZlcnNpb24pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBsZXQgcGx1Z2luTmFtZSA9IHBsdWdpbi5wb3N0Y3NzUGx1Z2luXG4gICAgICAgICAgbGV0IHBsdWdpblZlciA9IHBsdWdpbi5wb3N0Y3NzVmVyc2lvblxuICAgICAgICAgIGxldCBydW50aW1lVmVyID0gdGhpcy5yZXN1bHQucHJvY2Vzc29yLnZlcnNpb25cbiAgICAgICAgICBsZXQgYSA9IHBsdWdpblZlci5zcGxpdCgnLicpXG4gICAgICAgICAgbGV0IGIgPSBydW50aW1lVmVyLnNwbGl0KCcuJylcblxuICAgICAgICAgIGlmIChhWzBdICE9PSBiWzBdIHx8IHBhcnNlSW50KGFbMV0pID4gcGFyc2VJbnQoYlsxXSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICdVbmtub3duIGVycm9yIGZyb20gUG9zdENTUyBwbHVnaW4uIFlvdXIgY3VycmVudCBQb3N0Q1NTICcgK1xuICAgICAgICAgICAgICAndmVyc2lvbiBpcyAnICsgcnVudGltZVZlciArICcsIGJ1dCAnICsgcGx1Z2luTmFtZSArICcgdXNlcyAnICtcbiAgICAgICAgICAgICAgcGx1Z2luVmVyICsgJy4gUGVyaGFwcyB0aGlzIGlzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yIGJlbG93LidcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChjb25zb2xlICYmIGNvbnNvbGUuZXJyb3IpIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jVGljayAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKHRoaXMucGx1Z2luID49IHRoaXMucHJvY2Vzc29yLnBsdWdpbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcbiAgICAgIHJldHVybiByZXNvbHZlKClcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHBsdWdpbiA9IHRoaXMucHJvY2Vzc29yLnBsdWdpbnNbdGhpcy5wbHVnaW5dXG4gICAgICBsZXQgcHJvbWlzZSA9IHRoaXMucnVuKHBsdWdpbilcbiAgICAgIHRoaXMucGx1Z2luICs9IDFcblxuICAgICAgaWYgKGlzUHJvbWlzZShwcm9taXNlKSkge1xuICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdClcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIHBsdWdpbilcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFzeW5jVGljayhyZXNvbHZlLCByZWplY3QpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZVxuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jICgpIHtcbiAgICBpZiAodGhpcy5wcm9jZXNzZWQpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KHRoaXMuZXJyb3IpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLnN0cmluZ2lmeSgpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5wcm9jZXNzaW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzaW5nXG4gICAgfVxuXG4gICAgdGhpcy5wcm9jZXNzaW5nID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZXJyb3IpIHJldHVybiByZWplY3QodGhpcy5lcnJvcilcbiAgICAgIHRoaXMucGx1Z2luID0gMFxuICAgICAgdGhpcy5hc3luY1RpY2socmVzb2x2ZSwgcmVqZWN0KVxuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG4gICAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKVxuICAgIH0pXG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzaW5nXG4gIH1cblxuICBzeW5jICgpIHtcbiAgICBpZiAodGhpcy5wcm9jZXNzZWQpIHJldHVybiB0aGlzLnJlc3VsdFxuICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZVxuXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVXNlIHByb2Nlc3MoY3NzKS50aGVuKGNiKSB0byB3b3JrIHdpdGggYXN5bmMgcGx1Z2lucycpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXJyb3IpIHRocm93IHRoaXMuZXJyb3JcblxuICAgIGZvciAobGV0IHBsdWdpbiBvZiB0aGlzLnJlc3VsdC5wcm9jZXNzb3IucGx1Z2lucykge1xuICAgICAgbGV0IHByb21pc2UgPSB0aGlzLnJ1bihwbHVnaW4pXG4gICAgICBpZiAoaXNQcm9taXNlKHByb21pc2UpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnVXNlIHByb2Nlc3MoY3NzKS50aGVuKGNiKSB0byB3b3JrIHdpdGggYXN5bmMgcGx1Z2lucycpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVzdWx0XG4gIH1cblxuICBydW4gKHBsdWdpbikge1xuICAgIHRoaXMucmVzdWx0Lmxhc3RQbHVnaW4gPSBwbHVnaW5cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcGx1Z2luKHRoaXMucmVzdWx0LnJvb3QsIHRoaXMucmVzdWx0KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yLCBwbHVnaW4pXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cbiAgfVxuXG4gIHN0cmluZ2lmeSAoKSB7XG4gICAgaWYgKHRoaXMuc3RyaW5naWZpZWQpIHJldHVybiB0aGlzLnJlc3VsdFxuICAgIHRoaXMuc3RyaW5naWZpZWQgPSB0cnVlXG5cbiAgICB0aGlzLnN5bmMoKVxuXG4gICAgbGV0IG9wdHMgPSB0aGlzLnJlc3VsdC5vcHRzXG4gICAgbGV0IHN0ciA9IHN0cmluZ2lmeVxuICAgIGlmIChvcHRzLnN5bnRheCkgc3RyID0gb3B0cy5zeW50YXguc3RyaW5naWZ5XG4gICAgaWYgKG9wdHMuc3RyaW5naWZpZXIpIHN0ciA9IG9wdHMuc3RyaW5naWZpZXJcbiAgICBpZiAoc3RyLnN0cmluZ2lmeSkgc3RyID0gc3RyLnN0cmluZ2lmeVxuXG4gICAgbGV0IG1hcCA9IG5ldyBNYXBHZW5lcmF0b3Ioc3RyLCB0aGlzLnJlc3VsdC5yb290LCB0aGlzLnJlc3VsdC5vcHRzKVxuICAgIGxldCBkYXRhID0gbWFwLmdlbmVyYXRlKClcbiAgICB0aGlzLnJlc3VsdC5jc3MgPSBkYXRhWzBdXG4gICAgdGhpcy5yZXN1bHQubWFwID0gZGF0YVsxXVxuXG4gICAgcmV0dXJuIHRoaXMucmVzdWx0XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGF6eVJlc3VsdFxuXG4vKipcbiAqIEBjYWxsYmFjayBvbkZ1bGZpbGxlZFxuICogQHBhcmFtIHtSZXN1bHR9IHJlc3VsdFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIG9uUmVqZWN0ZWRcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yXG4gKi9cbiJdLCJmaWxlIjoibGF6eS1yZXN1bHQuanMifQ==\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n  if (!aArgs) {\n    aArgs = {};\n  }\n  this._file = util.getArg(aArgs, 'file', null);\n  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n  this._mappings = new MappingList();\n  this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n    var sourceRoot = aSourceMapConsumer.sourceRoot;\n    var generator = new SourceMapGenerator({\n      file: aSourceMapConsumer.file,\n      sourceRoot: sourceRoot\n    });\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      var newMapping = {\n        generated: {\n          line: mapping.generatedLine,\n          column: mapping.generatedColumn\n        }\n      };\n\n      if (mapping.source != null) {\n        newMapping.source = mapping.source;\n        if (sourceRoot != null) {\n          newMapping.source = util.relative(sourceRoot, newMapping.source);\n        }\n\n        newMapping.original = {\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        };\n\n        if (mapping.name != null) {\n          newMapping.name = mapping.name;\n        }\n      }\n\n      generator.addMapping(newMapping);\n    });\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var sourceRelative = sourceFile;\n      if (sourceRoot !== null) {\n        sourceRelative = util.relative(sourceRoot, sourceFile);\n      }\n\n      if (!generator._sources.has(sourceRelative)) {\n        generator._sources.add(sourceRelative);\n      }\n\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        generator.setSourceContent(sourceFile, content);\n      }\n    });\n    return generator;\n  };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n *   - generated: An object with the generated line and column positions.\n *   - original: An object with the original line and column positions.\n *   - source: The original source file (relative to the sourceRoot).\n *   - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n  function SourceMapGenerator_addMapping(aArgs) {\n    var generated = util.getArg(aArgs, 'generated');\n    var original = util.getArg(aArgs, 'original', null);\n    var source = util.getArg(aArgs, 'source', null);\n    var name = util.getArg(aArgs, 'name', null);\n\n    if (!this._skipValidation) {\n      this._validateMapping(generated, original, source, name);\n    }\n\n    if (source != null) {\n      source = String(source);\n      if (!this._sources.has(source)) {\n        this._sources.add(source);\n      }\n    }\n\n    if (name != null) {\n      name = String(name);\n      if (!this._names.has(name)) {\n        this._names.add(name);\n      }\n    }\n\n    this._mappings.add({\n      generatedLine: generated.line,\n      generatedColumn: generated.column,\n      originalLine: original != null && original.line,\n      originalColumn: original != null && original.column,\n      source: source,\n      name: name\n    });\n  };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n    var source = aSourceFile;\n    if (this._sourceRoot != null) {\n      source = util.relative(this._sourceRoot, source);\n    }\n\n    if (aSourceContent != null) {\n      // Add the source content to the _sourcesContents map.\n      // Create a new _sourcesContents map if the property is null.\n      if (!this._sourcesContents) {\n        this._sourcesContents = Object.create(null);\n      }\n      this._sourcesContents[util.toSetString(source)] = aSourceContent;\n    } else if (this._sourcesContents) {\n      // Remove the source file from the _sourcesContents map.\n      // If the _sourcesContents map is empty, set the property to null.\n      delete this._sourcesContents[util.toSetString(source)];\n      if (Object.keys(this._sourcesContents).length === 0) {\n        this._sourcesContents = null;\n      }\n    }\n  };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n *        If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n *        to be applied. If relative, it is relative to the SourceMapConsumer.\n *        This parameter is needed when the two source maps aren't in the same\n *        directory, and the source map to be applied contains relative source\n *        paths. If so, those relative source paths need to be rewritten\n *        relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n    var sourceFile = aSourceFile;\n    // If aSourceFile is omitted, we will use the file property of the SourceMap\n    if (aSourceFile == null) {\n      if (aSourceMapConsumer.file == null) {\n        throw new Error(\n          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n          'or the source map\\'s \"file\" property. Both were omitted.'\n        );\n      }\n      sourceFile = aSourceMapConsumer.file;\n    }\n    var sourceRoot = this._sourceRoot;\n    // Make \"sourceFile\" relative if an absolute Url is passed.\n    if (sourceRoot != null) {\n      sourceFile = util.relative(sourceRoot, sourceFile);\n    }\n    // Applying the SourceMap can add and remove items from the sources and\n    // the names array.\n    var newSources = new ArraySet();\n    var newNames = new ArraySet();\n\n    // Find mappings for the \"sourceFile\"\n    this._mappings.unsortedForEach(function (mapping) {\n      if (mapping.source === sourceFile && mapping.originalLine != null) {\n        // Check if it can be mapped by the source map, then update the mapping.\n        var original = aSourceMapConsumer.originalPositionFor({\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        });\n        if (original.source != null) {\n          // Copy mapping\n          mapping.source = original.source;\n          if (aSourceMapPath != null) {\n            mapping.source = util.join(aSourceMapPath, mapping.source)\n          }\n          if (sourceRoot != null) {\n            mapping.source = util.relative(sourceRoot, mapping.source);\n          }\n          mapping.originalLine = original.line;\n          mapping.originalColumn = original.column;\n          if (original.name != null) {\n            mapping.name = original.name;\n          }\n        }\n      }\n\n      var source = mapping.source;\n      if (source != null && !newSources.has(source)) {\n        newSources.add(source);\n      }\n\n      var name = mapping.name;\n      if (name != null && !newNames.has(name)) {\n        newNames.add(name);\n      }\n\n    }, this);\n    this._sources = newSources;\n    this._names = newNames;\n\n    // Copy sourcesContents of applied map.\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aSourceMapPath != null) {\n          sourceFile = util.join(aSourceMapPath, sourceFile);\n        }\n        if (sourceRoot != null) {\n          sourceFile = util.relative(sourceRoot, sourceFile);\n        }\n        this.setSourceContent(sourceFile, content);\n      }\n    }, this);\n  };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n *   1. Just the generated position.\n *   2. The Generated position, original position, and original source.\n *   3. Generated and original position, original source, as well as a name\n *      token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n                                              aName) {\n    // When aOriginal is truthy but has empty values for .line and .column,\n    // it is most likely a programmer error. In this case we throw a very\n    // specific error message to try to guide them the right way.\n    // For example: https://github.com/Polymer/polymer-bundler/pull/519\n    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n        throw new Error(\n            'original.line and original.column are not numbers -- you probably meant to omit ' +\n            'the original mapping entirely and only map the generated position. If so, pass ' +\n            'null for the original mapping instead of an object with empty or null values.'\n        );\n    }\n\n    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n        && aGenerated.line > 0 && aGenerated.column >= 0\n        && !aOriginal && !aSource && !aName) {\n      // Case 1.\n      return;\n    }\n    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n             && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n             && aGenerated.line > 0 && aGenerated.column >= 0\n             && aOriginal.line > 0 && aOriginal.column >= 0\n             && aSource) {\n      // Cases 2 and 3.\n      return;\n    }\n    else {\n      throw new Error('Invalid mapping: ' + JSON.stringify({\n        generated: aGenerated,\n        source: aSource,\n        original: aOriginal,\n        name: aName\n      }));\n    }\n  };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n  function SourceMapGenerator_serializeMappings() {\n    var previousGeneratedColumn = 0;\n    var previousGeneratedLine = 1;\n    var previousOriginalColumn = 0;\n    var previousOriginalLine = 0;\n    var previousName = 0;\n    var previousSource = 0;\n    var result = '';\n    var next;\n    var mapping;\n    var nameIdx;\n    var sourceIdx;\n\n    var mappings = this._mappings.toArray();\n    for (var i = 0, len = mappings.length; i < len; i++) {\n      mapping = mappings[i];\n      next = ''\n\n      if (mapping.generatedLine !== previousGeneratedLine) {\n        previousGeneratedColumn = 0;\n        while (mapping.generatedLine !== previousGeneratedLine) {\n          next += ';';\n          previousGeneratedLine++;\n        }\n      }\n      else {\n        if (i > 0) {\n          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n            continue;\n          }\n          next += ',';\n        }\n      }\n\n      next += base64VLQ.encode(mapping.generatedColumn\n                                 - previousGeneratedColumn);\n      previousGeneratedColumn = mapping.generatedColumn;\n\n      if (mapping.source != null) {\n        sourceIdx = this._sources.indexOf(mapping.source);\n        next += base64VLQ.encode(sourceIdx - previousSource);\n        previousSource = sourceIdx;\n\n        // lines are stored 0-based in SourceMap spec version 3\n        next += base64VLQ.encode(mapping.originalLine - 1\n                                   - previousOriginalLine);\n        previousOriginalLine = mapping.originalLine - 1;\n\n        next += base64VLQ.encode(mapping.originalColumn\n                                   - previousOriginalColumn);\n        previousOriginalColumn = mapping.originalColumn;\n\n        if (mapping.name != null) {\n          nameIdx = this._names.indexOf(mapping.name);\n          next += base64VLQ.encode(nameIdx - previousName);\n          previousName = nameIdx;\n        }\n      }\n\n      result += next;\n    }\n\n    return result;\n  };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n    return aSources.map(function (source) {\n      if (!this._sourcesContents) {\n        return null;\n      }\n      if (aSourceRoot != null) {\n        source = util.relative(aSourceRoot, source);\n      }\n      var key = util.toSetString(source);\n      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n        ? this._sourcesContents[key]\n        : null;\n    }, this);\n  };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n  function SourceMapGenerator_toJSON() {\n    var map = {\n      version: this._version,\n      sources: this._sources.toArray(),\n      names: this._names.toArray(),\n      mappings: this._serializeMappings()\n    };\n    if (this._file != null) {\n      map.file = this._file;\n    }\n    if (this._sourceRoot != null) {\n      map.sourceRoot = this._sourceRoot;\n    }\n    if (this._sourcesContents) {\n      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n    }\n\n    return map;\n  };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n  function SourceMapGenerator_toString() {\n    return JSON.stringify(this.toJSON());\n  };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *  * Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n  return aValue < 0\n    ? ((-aValue) << 1) + 1\n    : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n  var isNegative = (aValue & 1) === 1;\n  var shifted = aValue >> 1;\n  return isNegative\n    ? -shifted\n    : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n  var encoded = \"\";\n  var digit;\n\n  var vlq = toVLQSigned(aValue);\n\n  do {\n    digit = vlq & VLQ_BASE_MASK;\n    vlq >>>= VLQ_BASE_SHIFT;\n    if (vlq > 0) {\n      // There are still more digits in this value, so we must make sure the\n      // continuation bit is marked.\n      digit |= VLQ_CONTINUATION_BIT;\n    }\n    encoded += base64.encode(digit);\n  } while (vlq > 0);\n\n  return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n  var strLen = aStr.length;\n  var result = 0;\n  var shift = 0;\n  var continuation, digit;\n\n  do {\n    if (aIndex >= strLen) {\n      throw new Error(\"Expected more digits in base 64 VLQ value.\");\n    }\n\n    digit = base64.decode(aStr.charCodeAt(aIndex++));\n    if (digit === -1) {\n      throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n    }\n\n    continuation = !!(digit & VLQ_CONTINUATION_BIT);\n    digit &= VLQ_BASE_MASK;\n    result = result + (digit << shift);\n    shift += VLQ_BASE_SHIFT;\n  } while (continuation);\n\n  aOutParam.value = fromVLQSigned(result);\n  aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n  this._array = [];\n  this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n  var set = new ArraySet();\n  for (var i = 0, len = aArray.length; i < len; i++) {\n    set.add(aArray[i], aAllowDuplicates);\n  }\n  return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n  var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n  var idx = this._array.length;\n  if (!isDuplicate || aAllowDuplicates) {\n    this._array.push(aStr);\n  }\n  if (!isDuplicate) {\n    if (hasNativeMap) {\n      this._set.set(aStr, idx);\n    } else {\n      this._set[sStr] = idx;\n    }\n  }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n  if (hasNativeMap) {\n    return this._set.has(aStr);\n  } else {\n    var sStr = util.toSetString(aStr);\n    return has.call(this._set, sStr);\n  }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n  if (hasNativeMap) {\n    var idx = this._set.get(aStr);\n    if (idx >= 0) {\n        return idx;\n    }\n  } else {\n    var sStr = util.toSetString(aStr);\n    if (has.call(this._set, sStr)) {\n      return this._set[sStr];\n    }\n  }\n\n  throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n  if (aIdx >= 0 && aIdx < this._array.length) {\n    return this._array[aIdx];\n  }\n  throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n  return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list\n *\n * @namespace list\n */\nvar list = {\n  split: function split(string, separators, last) {\n    var array = [];\n    var current = '';\n    var split = false;\n    var func = 0;\n    var quote = false;\n    var escape = false;\n\n    for (var i = 0; i < string.length; i++) {\n      var letter = string[i];\n\n      if (quote) {\n        if (escape) {\n          escape = false;\n        } else if (letter === '\\\\') {\n          escape = true;\n        } else if (letter === quote) {\n          quote = false;\n        }\n      } else if (letter === '\"' || letter === '\\'') {\n        quote = letter;\n      } else if (letter === '(') {\n        func += 1;\n      } else if (letter === ')') {\n        if (func > 0) func -= 1;\n      } else if (func === 0) {\n        if (separators.indexOf(letter) !== -1) split = true;\n      }\n\n      if (split) {\n        if (current !== '') array.push(current.trim());\n        current = '';\n        split = false;\n      } else {\n        current += letter;\n      }\n    }\n\n    if (last || current !== '') array.push(current.trim());\n    return array;\n  },\n\n  /**\n   * Safely splits space-separated values (such as those for `background`,\n   * `border-radius`, and other shorthand properties).\n   *\n   * @param {string} string Space-separated values.\n   *\n   * @return {string[]} Split values.\n   *\n   * @example\n   * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n   */\n  space: function space(string) {\n    var spaces = [' ', '\\n', '\\t'];\n    return list.split(string, spaces);\n  },\n\n  /**\n   * Safely splits comma-separated values (such as those for `transition-*`\n   * and `background` properties).\n   *\n   * @param {string} string Comma-separated values.\n   *\n   * @return {string[]} Split values.\n   *\n   * @example\n   * postcss.list.comma('black, linear-gradient(white, black)')\n   * //=> ['black', 'linear-gradient(white, black)']\n   */\n  comma: function comma(string) {\n    return list.split(string, [','], true);\n  }\n};\nvar _default = list;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3QuZXM2Il0sIm5hbWVzIjpbImxpc3QiLCJzcGxpdCIsInN0cmluZyIsInNlcGFyYXRvcnMiLCJsYXN0IiwiYXJyYXkiLCJjdXJyZW50IiwiZnVuYyIsInF1b3RlIiwiZXNjYXBlIiwiaSIsImxlbmd0aCIsImxldHRlciIsImluZGV4T2YiLCJwdXNoIiwidHJpbSIsInNwYWNlIiwic3BhY2VzIiwiY29tbWEiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7OztBQVNBLElBQUlBLElBQUksR0FBRztBQUVUQyxFQUFBQSxLQUZTLGlCQUVGQyxNQUZFLEVBRU1DLFVBRk4sRUFFa0JDLElBRmxCLEVBRXdCO0FBQy9CLFFBQUlDLEtBQUssR0FBRyxFQUFaO0FBQ0EsUUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFDQSxRQUFJTCxLQUFLLEdBQUcsS0FBWjtBQUVBLFFBQUlNLElBQUksR0FBRyxDQUFYO0FBQ0EsUUFBSUMsS0FBSyxHQUFHLEtBQVo7QUFDQSxRQUFJQyxNQUFNLEdBQUcsS0FBYjs7QUFFQSxTQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdSLE1BQU0sQ0FBQ1MsTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7QUFDdEMsVUFBSUUsTUFBTSxHQUFHVixNQUFNLENBQUNRLENBQUQsQ0FBbkI7O0FBRUEsVUFBSUYsS0FBSixFQUFXO0FBQ1QsWUFBSUMsTUFBSixFQUFZO0FBQ1ZBLFVBQUFBLE1BQU0sR0FBRyxLQUFUO0FBQ0QsU0FGRCxNQUVPLElBQUlHLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0FBQzFCSCxVQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNELFNBRk0sTUFFQSxJQUFJRyxNQUFNLEtBQUtKLEtBQWYsRUFBc0I7QUFDM0JBLFVBQUFBLEtBQUssR0FBRyxLQUFSO0FBQ0Q7QUFDRixPQVJELE1BUU8sSUFBSUksTUFBTSxLQUFLLEdBQVgsSUFBa0JBLE1BQU0sS0FBSyxJQUFqQyxFQUF1QztBQUM1Q0osUUFBQUEsS0FBSyxHQUFHSSxNQUFSO0FBQ0QsT0FGTSxNQUVBLElBQUlBLE1BQU0sS0FBSyxHQUFmLEVBQW9CO0FBQ3pCTCxRQUFBQSxJQUFJLElBQUksQ0FBUjtBQUNELE9BRk0sTUFFQSxJQUFJSyxNQUFNLEtBQUssR0FBZixFQUFvQjtBQUN6QixZQUFJTCxJQUFJLEdBQUcsQ0FBWCxFQUFjQSxJQUFJLElBQUksQ0FBUjtBQUNmLE9BRk0sTUFFQSxJQUFJQSxJQUFJLEtBQUssQ0FBYixFQUFnQjtBQUNyQixZQUFJSixVQUFVLENBQUNVLE9BQVgsQ0FBbUJELE1BQW5CLE1BQStCLENBQUMsQ0FBcEMsRUFBdUNYLEtBQUssR0FBRyxJQUFSO0FBQ3hDOztBQUVELFVBQUlBLEtBQUosRUFBVztBQUNULFlBQUlLLE9BQU8sS0FBSyxFQUFoQixFQUFvQkQsS0FBSyxDQUFDUyxJQUFOLENBQVdSLE9BQU8sQ0FBQ1MsSUFBUixFQUFYO0FBQ3BCVCxRQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNBTCxRQUFBQSxLQUFLLEdBQUcsS0FBUjtBQUNELE9BSkQsTUFJTztBQUNMSyxRQUFBQSxPQUFPLElBQUlNLE1BQVg7QUFDRDtBQUNGOztBQUVELFFBQUlSLElBQUksSUFBSUUsT0FBTyxLQUFLLEVBQXhCLEVBQTRCRCxLQUFLLENBQUNTLElBQU4sQ0FBV1IsT0FBTyxDQUFDUyxJQUFSLEVBQVg7QUFDNUIsV0FBT1YsS0FBUDtBQUNELEdBM0NROztBQTZDVDs7Ozs7Ozs7Ozs7QUFXQVcsRUFBQUEsS0F4RFMsaUJBd0RGZCxNQXhERSxFQXdETTtBQUNiLFFBQUllLE1BQU0sR0FBRyxDQUFDLEdBQUQsRUFBTSxJQUFOLEVBQVksSUFBWixDQUFiO0FBQ0EsV0FBT2pCLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CZSxNQUFuQixDQUFQO0FBQ0QsR0EzRFE7O0FBNkRUOzs7Ozs7Ozs7Ozs7QUFZQUMsRUFBQUEsS0F6RVMsaUJBeUVGaEIsTUF6RUUsRUF5RU07QUFDYixXQUFPRixJQUFJLENBQUNDLEtBQUwsQ0FBV0MsTUFBWCxFQUFtQixDQUFDLEdBQUQsQ0FBbkIsRUFBMEIsSUFBMUIsQ0FBUDtBQUNEO0FBM0VRLENBQVg7ZUErRWVGLEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIGhlbHBlcnMgZm9yIHNhZmVseSBzcGxpdHRpbmcgbGlzdHMgb2YgQ1NTIHZhbHVlcyxcbiAqIHByZXNlcnZpbmcgcGFyZW50aGVzZXMgYW5kIHF1b3Rlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGlzdCA9IHBvc3Rjc3MubGlzdFxuICpcbiAqIEBuYW1lc3BhY2UgbGlzdFxuICovXG5sZXQgbGlzdCA9IHtcblxuICBzcGxpdCAoc3RyaW5nLCBzZXBhcmF0b3JzLCBsYXN0KSB7XG4gICAgbGV0IGFycmF5ID0gW11cbiAgICBsZXQgY3VycmVudCA9ICcnXG4gICAgbGV0IHNwbGl0ID0gZmFsc2VcblxuICAgIGxldCBmdW5jID0gMFxuICAgIGxldCBxdW90ZSA9IGZhbHNlXG4gICAgbGV0IGVzY2FwZSA9IGZhbHNlXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGxldHRlciA9IHN0cmluZ1tpXVxuXG4gICAgICBpZiAocXVvdGUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnXFxcXCcpIHtcbiAgICAgICAgICBlc2NhcGUgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSBxdW90ZSkge1xuICAgICAgICAgIHF1b3RlID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICdcIicgfHwgbGV0dGVyID09PSAnXFwnJykge1xuICAgICAgICBxdW90ZSA9IGxldHRlclxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICcoJykge1xuICAgICAgICBmdW5jICs9IDFcbiAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnKScpIHtcbiAgICAgICAgaWYgKGZ1bmMgPiAwKSBmdW5jIC09IDFcbiAgICAgIH0gZWxzZSBpZiAoZnVuYyA9PT0gMCkge1xuICAgICAgICBpZiAoc2VwYXJhdG9ycy5pbmRleE9mKGxldHRlcikgIT09IC0xKSBzcGxpdCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHNwbGl0KSB7XG4gICAgICAgIGlmIChjdXJyZW50ICE9PSAnJykgYXJyYXkucHVzaChjdXJyZW50LnRyaW0oKSlcbiAgICAgICAgY3VycmVudCA9ICcnXG4gICAgICAgIHNwbGl0ID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQgKz0gbGV0dGVyXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxhc3QgfHwgY3VycmVudCAhPT0gJycpIGFycmF5LnB1c2goY3VycmVudC50cmltKCkpXG4gICAgcmV0dXJuIGFycmF5XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYGJhY2tncm91bmRgLFxuICAgKiBgYm9yZGVyLXJhZGl1c2AsIGFuZCBvdGhlciBzaG9ydGhhbmQgcHJvcGVydGllcykuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgU3BhY2Utc2VwYXJhdGVkIHZhbHVlcy5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW119IFNwbGl0IHZhbHVlcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5saXN0LnNwYWNlKCcxcHggY2FsYygxMCUgKyAxcHgpJykgLy89PiBbJzFweCcsICdjYWxjKDEwJSArIDFweCknXVxuICAgKi9cbiAgc3BhY2UgKHN0cmluZykge1xuICAgIGxldCBzcGFjZXMgPSBbJyAnLCAnXFxuJywgJ1xcdCddXG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBzcGFjZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYHRyYW5zaXRpb24tKmBcbiAgICogYW5kIGBiYWNrZ3JvdW5kYCBwcm9wZXJ0aWVzKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBDb21tYS1zZXBhcmF0ZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gU3BsaXQgdmFsdWVzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzLmxpc3QuY29tbWEoJ2JsYWNrLCBsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKScpXG4gICAqIC8vPT4gWydibGFjaycsICdsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKSddXG4gICAqL1xuICBjb21tYSAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBbJywnXSwgdHJ1ZSlcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RcbiJdLCJmaWxlIjoibGlzdC5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}')\n * root.type         //=> 'root'\n * root.nodes.length //=> 2\n */\nvar Root = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Root, _Container);\n\n  function Root(defaults) {\n    var _this;\n\n    _this = _Container.call(this, defaults) || this;\n    _this.type = 'root';\n    if (!_this.nodes) _this.nodes = [];\n    return _this;\n  }\n\n  var _proto = Root.prototype;\n\n  _proto.removeChild = function removeChild(child, ignore) {\n    var index = this.index(child);\n\n    if (!ignore && index === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index].raws.before;\n    }\n\n    return _Container.prototype.removeChild.call(this, child);\n  };\n\n  _proto.normalize = function normalize(child, sample, type) {\n    var nodes = _Container.prototype.normalize.call(this, child);\n\n    if (sample) {\n      if (type === 'prepend') {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before;\n        } else {\n          delete sample.raws.before;\n        }\n      } else if (this.first !== sample) {\n        for (var _iterator = _createForOfIteratorHelperLoose(nodes), _step; !(_step = _iterator()).done;) {\n          var node = _step.value;\n          node.raws.before = sample.raws.before;\n        }\n      }\n    }\n\n    return nodes;\n  }\n  /**\n   * Returns a {@link Result} instance representing the root’s CSS.\n   *\n   * @param {processOptions} [opts] Options with only `to` and `map` keys.\n   *\n   * @return {Result} Result with current root’s CSS.\n   *\n   * @example\n   * const root1 = postcss.parse(css1, { from: 'a.css' })\n   * const root2 = postcss.parse(css2, { from: 'b.css' })\n   * root1.append(root2)\n   * const result = root1.toResult({ to: 'all.css', map: true })\n   */\n  ;\n\n  _proto.toResult = function toResult(opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    var LazyResult = require('./lazy-result');\n\n    var Processor = require('./processor');\n\n    var lazy = new LazyResult(new Processor(), this, opts);\n    return lazy.stringify();\n  }\n  /**\n   * @memberof Root#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `after`: the space symbols after the last child to the end of file.\n   * * `semicolon`: is the last child has an (optional) semicolon.\n   *\n   * @example\n   * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n   * postcss.parse('a {}').raws   //=> { after: '' }\n   */\n  ;\n\n  return Root;\n}(_container.default);\n\nvar _default = Root;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvb3QuZXM2Il0sIm5hbWVzIjpbIlJvb3QiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsInJlbW92ZUNoaWxkIiwiY2hpbGQiLCJpZ25vcmUiLCJpbmRleCIsImxlbmd0aCIsInJhd3MiLCJiZWZvcmUiLCJub3JtYWxpemUiLCJzYW1wbGUiLCJmaXJzdCIsIm5vZGUiLCJ0b1Jlc3VsdCIsIm9wdHMiLCJMYXp5UmVzdWx0IiwicmVxdWlyZSIsIlByb2Nlc3NvciIsImxhenkiLCJzdHJpbmdpZnkiLCJDb250YWluZXIiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7O0lBVU1BLEk7OztBQUNKLGdCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLGtDQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLE1BQVo7QUFDQSxRQUFJLENBQUMsTUFBS0MsS0FBVixFQUFpQixNQUFLQSxLQUFMLEdBQWEsRUFBYjtBQUhJO0FBSXRCOzs7O1NBRURDLFcsR0FBQSxxQkFBYUMsS0FBYixFQUFvQkMsTUFBcEIsRUFBNEI7QUFDMUIsUUFBSUMsS0FBSyxHQUFHLEtBQUtBLEtBQUwsQ0FBV0YsS0FBWCxDQUFaOztBQUVBLFFBQUksQ0FBQ0MsTUFBRCxJQUFXQyxLQUFLLEtBQUssQ0FBckIsSUFBMEIsS0FBS0osS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQWxELEVBQXFEO0FBQ25ELFdBQUtMLEtBQUwsQ0FBVyxDQUFYLEVBQWNNLElBQWQsQ0FBbUJDLE1BQW5CLEdBQTRCLEtBQUtQLEtBQUwsQ0FBV0ksS0FBWCxFQUFrQkUsSUFBbEIsQ0FBdUJDLE1BQW5EO0FBQ0Q7O0FBRUQsZ0NBQWFOLFdBQWIsWUFBeUJDLEtBQXpCO0FBQ0QsRzs7U0FFRE0sUyxHQUFBLG1CQUFXTixLQUFYLEVBQWtCTyxNQUFsQixFQUEwQlYsSUFBMUIsRUFBZ0M7QUFDOUIsUUFBSUMsS0FBSyx3QkFBU1EsU0FBVCxZQUFtQk4sS0FBbkIsQ0FBVDs7QUFFQSxRQUFJTyxNQUFKLEVBQVk7QUFDVixVQUFJVixJQUFJLEtBQUssU0FBYixFQUF3QjtBQUN0QixZQUFJLEtBQUtDLEtBQUwsQ0FBV0ssTUFBWCxHQUFvQixDQUF4QixFQUEyQjtBQUN6QkksVUFBQUEsTUFBTSxDQUFDSCxJQUFQLENBQVlDLE1BQVosR0FBcUIsS0FBS1AsS0FBTCxDQUFXLENBQVgsRUFBY00sSUFBZCxDQUFtQkMsTUFBeEM7QUFDRCxTQUZELE1BRU87QUFDTCxpQkFBT0UsTUFBTSxDQUFDSCxJQUFQLENBQVlDLE1BQW5CO0FBQ0Q7QUFDRixPQU5ELE1BTU8sSUFBSSxLQUFLRyxLQUFMLEtBQWVELE1BQW5CLEVBQTJCO0FBQ2hDLDZEQUFpQlQsS0FBakIsd0NBQXdCO0FBQUEsY0FBZlcsSUFBZTtBQUN0QkEsVUFBQUEsSUFBSSxDQUFDTCxJQUFMLENBQVVDLE1BQVYsR0FBbUJFLE1BQU0sQ0FBQ0gsSUFBUCxDQUFZQyxNQUEvQjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRCxXQUFPUCxLQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O1NBYUFZLFEsR0FBQSxrQkFBVUMsSUFBVixFQUFzQjtBQUFBLFFBQVpBLElBQVk7QUFBWkEsTUFBQUEsSUFBWSxHQUFMLEVBQUs7QUFBQTs7QUFDcEIsUUFBSUMsVUFBVSxHQUFHQyxPQUFPLENBQUMsZUFBRCxDQUF4Qjs7QUFDQSxRQUFJQyxTQUFTLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQXZCOztBQUVBLFFBQUlFLElBQUksR0FBRyxJQUFJSCxVQUFKLENBQWUsSUFBSUUsU0FBSixFQUFmLEVBQWdDLElBQWhDLEVBQXNDSCxJQUF0QyxDQUFYO0FBQ0EsV0FBT0ksSUFBSSxDQUFDQyxTQUFMLEVBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUExRGlCQyxrQjs7ZUEyRUp0QixJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcidcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIGZpbGUgYW5kIGNvbnRhaW5zIGFsbCBpdHMgcGFyc2VkIG5vZGVzLlxuICpcbiAqIEBleHRlbmRzIENvbnRhaW5lclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYXtjb2xvcjpibGFja30gYnt6LWluZGV4OjJ9JylcbiAqIHJvb3QudHlwZSAgICAgICAgIC8vPT4gJ3Jvb3QnXG4gKiByb290Lm5vZGVzLmxlbmd0aCAvLz0+IDJcbiAqL1xuY2xhc3MgUm9vdCBleHRlbmRzIENvbnRhaW5lciB7XG4gIGNvbnN0cnVjdG9yIChkZWZhdWx0cykge1xuICAgIHN1cGVyKGRlZmF1bHRzKVxuICAgIHRoaXMudHlwZSA9ICdyb290J1xuICAgIGlmICghdGhpcy5ub2RlcykgdGhpcy5ub2RlcyA9IFtdXG4gIH1cblxuICByZW1vdmVDaGlsZCAoY2hpbGQsIGlnbm9yZSkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuaW5kZXgoY2hpbGQpXG5cbiAgICBpZiAoIWlnbm9yZSAmJiBpbmRleCA9PT0gMCAmJiB0aGlzLm5vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmUgPSB0aGlzLm5vZGVzW2luZGV4XS5yYXdzLmJlZm9yZVxuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5yZW1vdmVDaGlsZChjaGlsZClcbiAgfVxuXG4gIG5vcm1hbGl6ZSAoY2hpbGQsIHNhbXBsZSwgdHlwZSkge1xuICAgIGxldCBub2RlcyA9IHN1cGVyLm5vcm1hbGl6ZShjaGlsZClcblxuICAgIGlmIChzYW1wbGUpIHtcbiAgICAgIGlmICh0eXBlID09PSAncHJlcGVuZCcpIHtcbiAgICAgICAgaWYgKHRoaXMubm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHNhbXBsZS5yYXdzLmJlZm9yZSA9IHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgc2FtcGxlLnJhd3MuYmVmb3JlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maXJzdCAhPT0gc2FtcGxlKSB7XG4gICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICBub2RlLnJhd3MuYmVmb3JlID0gc2FtcGxlLnJhd3MuYmVmb3JlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSByb2904oCZcyBDU1MuXG4gICAqXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgdG9gIGFuZCBgbWFwYCBrZXlzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZXN1bHR9IFJlc3VsdCB3aXRoIGN1cnJlbnQgcm9vdOKAmXMgQ1NTLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290MSA9IHBvc3Rjc3MucGFyc2UoY3NzMSwgeyBmcm9tOiAnYS5jc3MnIH0pXG4gICAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206ICdiLmNzcycgfSlcbiAgICogcm9vdDEuYXBwZW5kKHJvb3QyKVxuICAgKiBjb25zdCByZXN1bHQgPSByb290MS50b1Jlc3VsdCh7IHRvOiAnYWxsLmNzcycsIG1hcDogdHJ1ZSB9KVxuICAgKi9cbiAgdG9SZXN1bHQgKG9wdHMgPSB7IH0pIHtcbiAgICBsZXQgTGF6eVJlc3VsdCA9IHJlcXVpcmUoJy4vbGF6eS1yZXN1bHQnKVxuICAgIGxldCBQcm9jZXNzb3IgPSByZXF1aXJlKCcuL3Byb2Nlc3NvcicpXG5cbiAgICBsZXQgbGF6eSA9IG5ldyBMYXp5UmVzdWx0KG5ldyBQcm9jZXNzb3IoKSwgdGhpcywgb3B0cylcbiAgICByZXR1cm4gbGF6eS5zdHJpbmdpZnkoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBSb290I1xuICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCB0byB0aGUgZW5kIG9mIGZpbGUuXG4gICAqICogYHNlbWljb2xvbmA6IGlzIHRoZSBsYXN0IGNoaWxkIGhhcyBhbiAob3B0aW9uYWwpIHNlbWljb2xvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5wYXJzZSgnYSB7fVxcbicpLnJhd3MgLy89PiB7IGFmdGVyOiAnXFxuJyB9XG4gICAqIHBvc3Rjc3MucGFyc2UoJ2Ege30nKS5yYXdzICAgLy89PiB7IGFmdGVyOiAnJyB9XG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBSb290XG4iXSwiZmlsZSI6InJvb3QuanMifQ==\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","var arrayMap = require('./_arrayMap'),\n    baseIteratee = require('./_baseIteratee'),\n    basePickBy = require('./_basePickBy'),\n    getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n  if (object == null) {\n    return {};\n  }\n  var props = arrayMap(getAllKeysIn(object), function(prop) {\n    return [prop];\n  });\n  predicate = baseIteratee(predicate);\n  return basePickBy(object, props, function(value, path) {\n    return predicate(value, path[0]);\n  });\n}\n\nmodule.exports = pickBy;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { createContext } from 'react';\n/**\n * Create the React Context\n */\n\nexport var DndContext = createContext({\n  dragDropManager: undefined\n});","export * from './asap.js'\nexport * from './types.js'\nexport * from './AsapQueue.js'\nexport * from './TaskFactory.js'\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _List[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"List\", {\n  enumerable: true,\n  get: function get() {\n    return _List[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"bpfrpt_proptype_RowRendererParams\", {\n  enumerable: true,\n  get: function get() {\n    return _types.bpfrpt_proptype_RowRendererParams;\n  }\n});\n\nvar _List = _interopRequireDefault(require(\"./List\"));\n\nvar _types = require(\"./types\");","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n  var _ref$fill = _ref.fill,\n      fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n      _ref$width = _ref.width,\n      width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n      _ref$height = _ref.height,\n      height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n      _ref$style = _ref.style,\n      style = _ref$style === undefined ? {} : _ref$style,\n      props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n  return _react2.default.createElement(\n    'svg',\n    _extends({\n      viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n      style: _extends({ fill: fill, width: width, height: height }, style)\n    }, props),\n    _react2.default.createElement('path', { d: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' })\n  );\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n  var _ref$fill = _ref.fill,\n      fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n      _ref$width = _ref.width,\n      width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n      _ref$height = _ref.height,\n      height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n      _ref$style = _ref.style,\n      style = _ref$style === undefined ? {} : _ref$style,\n      props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n  return _react2.default.createElement(\n    'svg',\n    _extends({\n      viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n      style: _extends({ fill: fill, width: width, height: height }, style)\n    }, props),\n    _react2.default.createElement('path', { d: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z' })\n  );\n};","if (process.env.NODE_ENV !== 'production') {\n  var hot = require('./index').hot;\n  if (module.hot) {\n    var cache = require.cache;\n\n    if (!module.parents || module.parents.length === 0) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n    // access parent\n    var parent = cache[module.parents[0]];\n    if (!parent) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n\n    // remove self from a cache\n    delete cache[module.id];\n\n    // setup hot for caller\n    exports.hot = hot(parent);\n  } else {\n    fallbackHot();\n  }\n} else {\n  // prod mode\n  fallbackHot();\n}\n\nfunction fallbackHot() {\n  exports.hot = function (a) {\n    return a;\n  };\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { defaults, hasXMLHttpRequest } from './utils.js';\nimport * as fetchNode from './getFetch.cjs';\nvar fetchApi;\n\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch;\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch;\n  }\n}\n\nvar XmlHttpRequestApi;\n\nif (hasXMLHttpRequest) {\n  if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n    XmlHttpRequestApi = global.XMLHttpRequest;\n  } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n    XmlHttpRequestApi = window.XMLHttpRequest;\n  }\n}\n\nvar ActiveXObjectApi;\n\nif (typeof ActiveXObject === 'function') {\n  if (typeof global !== 'undefined' && global.ActiveXObject) {\n    ActiveXObjectApi = global.ActiveXObject;\n  } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n    ActiveXObjectApi = window.ActiveXObject;\n  }\n}\n\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\n\nvar addQueryString = function addQueryString(url, params) {\n  if (params && _typeof(params) === 'object') {\n    var queryString = '';\n\n    for (var paramName in params) {\n      queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n    }\n\n    if (!queryString) return url;\n    url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n  }\n\n  return url;\n};\n\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  var headers = defaults({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n  if (payload) headers['Content-Type'] = 'application/json';\n  fetchApi(url, defaults({\n    method: payload ? 'POST' : 'GET',\n    body: payload ? options.stringify(payload) : undefined,\n    headers: headers\n  }, typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions)).then(function (response) {\n    if (!response.ok) return callback(response.statusText || 'Error', {\n      status: response.status\n    });\n    response.text().then(function (data) {\n      callback(null, {\n        status: response.status,\n        data: data\n      });\n    }).catch(callback);\n  }).catch(callback);\n};\n\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n  if (payload && _typeof(payload) === 'object') {\n    payload = addQueryString('', payload).slice(1);\n  }\n\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  try {\n    var x;\n\n    if (XmlHttpRequestApi) {\n      x = new XmlHttpRequestApi();\n    } else {\n      x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n    }\n\n    x.open(payload ? 'POST' : 'GET', url, 1);\n\n    if (!options.crossDomain) {\n      x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n\n    x.withCredentials = !!options.withCredentials;\n\n    if (payload) {\n      x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n\n    if (x.overrideMimeType) {\n      x.overrideMimeType('application/json');\n    }\n\n    var h = options.customHeaders;\n    h = typeof h === 'function' ? h() : h;\n\n    if (h) {\n      for (var i in h) {\n        x.setRequestHeader(i, h[i]);\n      }\n    }\n\n    x.onreadystatechange = function () {\n      x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n        status: x.status,\n        data: x.responseText\n      });\n    };\n\n    x.send(payload);\n  } catch (e) {\n    console && console.log(e);\n  }\n};\n\nvar request = function request(options, url, payload, callback) {\n  if (typeof payload === 'function') {\n    callback = payload;\n    payload = undefined;\n  }\n\n  callback = callback || function () {};\n\n  if (fetchApi) {\n    return requestWithFetch(options, url, payload, callback);\n  }\n\n  if (hasXMLHttpRequest || typeof ActiveXObject === 'function') {\n    return requestWithXmlHttpRequest(options, url, payload, callback);\n  }\n};\n\nexport default request;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createWebStorage = _interopRequireDefault(require(\"./createWebStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = (0, _createWebStorage.default)('local');\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _declaration = _interopRequireDefault(require(\"./declaration\"));\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _atRule = _interopRequireDefault(require(\"./at-rule\"));\n\nvar _vendor = _interopRequireDefault(require(\"./vendor\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse\"));\n\nvar _list = _interopRequireDefault(require(\"./list\"));\n\nvar _rule = _interopRequireDefault(require(\"./rule\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new {@link Processor} instance that will apply `plugins`\n * as CSS processors.\n *\n * @param {Array.<Plugin|pluginFunction>|Processor} plugins PostCSS plugins.\n *        See {@link Processor#use} for plugin format.\n *\n * @return {Processor} Processor to process multiple CSS.\n *\n * @example\n * import postcss from 'postcss'\n *\n * postcss(plugins).process(css, { from, to }).then(result => {\n *   console.log(result.css)\n * })\n *\n * @namespace postcss\n */\nfunction postcss() {\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.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0];\n  }\n\n  return new _processor.default(plugins);\n}\n/**\n * Creates a PostCSS plugin with a standard API.\n *\n * The newly-wrapped function will provide both the name and PostCSS\n * version of the plugin.\n *\n * ```js\n * const processor = postcss([replace])\n * processor.plugins[0].postcssPlugin  //=> 'postcss-replace'\n * processor.plugins[0].postcssVersion //=> '6.0.0'\n * ```\n *\n * The plugin function receives 2 arguments: {@link Root}\n * and {@link Result} instance. The function should mutate the provided\n * `Root` node. Alternatively, you can create a new `Root` node\n * and override the `result.root` property.\n *\n * ```js\n * const cleaner = postcss.plugin('postcss-cleaner', () => {\n *   return (root, result) => {\n *     result.root = postcss.root()\n *   }\n * })\n * ```\n *\n * As a convenience, plugins also expose a `process` method so that you can use\n * them as standalone tools.\n *\n * ```js\n * cleaner.process(css, processOpts, pluginOpts)\n * // This is equivalent to:\n * postcss([ cleaner(pluginOpts) ]).process(css, processOpts)\n * ```\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * ```js\n * postcss.plugin('postcss-import', () => {\n *   return (root, result) => {\n *     return new Promise( (resolve, reject) => {\n *       fs.readFile('base.css', (base) => {\n *         root.prepend(base)\n *         resolve()\n *       })\n *     })\n *   }\n * })\n * ```\n *\n * Add warnings using the {@link Node#warn} method.\n * Send data to other plugins using the {@link Result#messages} array.\n *\n * ```js\n * postcss.plugin('postcss-caniuse-test', () => {\n *   return (root, result) => {\n *     root.walkDecls(decl => {\n *       if (!caniuse.support(decl.prop)) {\n *         decl.warn(result, 'Some browsers do not support ' + decl.prop)\n *       }\n *     })\n *   }\n * })\n * ```\n *\n * @param {string} name          PostCSS plugin name. Same as in `name`\n *                               property in `package.json`. It will be saved\n *                               in `plugin.postcssPlugin` property.\n * @param {function} initializer Will receive plugin options\n *                               and should return {@link pluginFunction}\n *\n * @return {Plugin} PostCSS plugin.\n */\n\n\npostcss.plugin = function plugin(name, initializer) {\n  function creator() {\n    var transformer = initializer.apply(void 0, arguments);\n    transformer.postcssPlugin = name;\n    transformer.postcssVersion = new _processor.default().version;\n    return transformer;\n  }\n\n  var cache;\n  Object.defineProperty(creator, 'postcss', {\n    get: function get() {\n      if (!cache) cache = creator();\n      return cache;\n    }\n  });\n\n  creator.process = function (css, processOpts, pluginOpts) {\n    return postcss([creator(pluginOpts)]).process(css, processOpts);\n  };\n\n  return creator;\n};\n/**\n * Default function to convert a node tree into a CSS string.\n *\n * @param {Node} node       Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n *                          or generate string and source map.\n *\n * @return {void}\n *\n * @function\n */\n\n\npostcss.stringify = _stringify.default;\n/**\n * Parses source css and returns a new {@link Root} node,\n * which contains the source CSS nodes.\n *\n * @param {string|toString} css   String with input CSS or any object\n *                                with toString() method, like a Buffer\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST.\n *\n * @example\n * // Simple CSS concatenation with source map support\n * const root1 = postcss.parse(css1, { from: file1 })\n * const root2 = postcss.parse(css2, { from: file2 })\n * root1.append(root2).toResult().css\n *\n * @function\n */\n\npostcss.parse = _parse.default;\n/**\n * Contains the {@link vendor} module.\n *\n * @type {vendor}\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab') //=> ['tab']\n */\n\npostcss.vendor = _vendor.default;\n/**\n * Contains the {@link list} module.\n *\n * @member {list}\n *\n * @example\n * postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']\n */\n\npostcss.list = _list.default;\n/**\n * Creates a new {@link Comment} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Comment} New comment node\n *\n * @example\n * postcss.comment({ text: 'test' })\n */\n\npostcss.comment = function (defaults) {\n  return new _comment.default(defaults);\n};\n/**\n * Creates a new {@link AtRule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {AtRule} new at-rule node\n *\n * @example\n * postcss.atRule({ name: 'charset' }).toString() //=> \"@charset\"\n */\n\n\npostcss.atRule = function (defaults) {\n  return new _atRule.default(defaults);\n};\n/**\n * Creates a new {@link Declaration} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Declaration} new declaration node\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'red' }).toString() //=> \"color: red\"\n */\n\n\npostcss.decl = function (defaults) {\n  return new _declaration.default(defaults);\n};\n/**\n * Creates a new {@link Rule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Rule} new rule node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {\\n}\"\n */\n\n\npostcss.rule = function (defaults) {\n  return new _rule.default(defaults);\n};\n/**\n * Creates a new {@link Root} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Root} new root node.\n *\n * @example\n * postcss.root({ after: '\\n' }).toString() //=> \"\\n\"\n */\n\n\npostcss.root = function (defaults) {\n  return new _root.default(defaults);\n};\n\nvar _default = postcss;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiUHJvY2Vzc29yIiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwiY3NzIiwicHJvY2Vzc09wdHMiLCJwbHVnaW5PcHRzIiwic3RyaW5naWZ5IiwicGFyc2UiLCJ2ZW5kb3IiLCJsaXN0IiwiY29tbWVudCIsImRlZmF1bHRzIiwiQ29tbWVudCIsImF0UnVsZSIsIkF0UnVsZSIsImRlY2wiLCJEZWNsYXJhdGlvbiIsInJ1bGUiLCJSdWxlIiwicm9vdCIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQVNBLE9BQVQsR0FBOEI7QUFBQSxvQ0FBVEMsT0FBUztBQUFUQSxJQUFBQSxPQUFTO0FBQUE7O0FBQzVCLE1BQUlBLE9BQU8sQ0FBQ0MsTUFBUixLQUFtQixDQUFuQixJQUF3QkMsS0FBSyxDQUFDQyxPQUFOLENBQWNILE9BQU8sQ0FBQyxDQUFELENBQXJCLENBQTVCLEVBQXVEO0FBQ3JEQSxJQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQyxDQUFELENBQWpCO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFJSSxrQkFBSixDQUFjSixPQUFkLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdFQUQsT0FBTyxDQUFDTSxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBaUJDLElBQWpCLEVBQXVCQyxXQUF2QixFQUFvQztBQUNuRCxXQUFTQyxPQUFULEdBQTJCO0FBQ3pCLFFBQUlDLFdBQVcsR0FBR0YsV0FBVyxNQUFYLG1CQUFsQjtBQUNBRSxJQUFBQSxXQUFXLENBQUNDLGFBQVosR0FBNEJKLElBQTVCO0FBQ0FHLElBQUFBLFdBQVcsQ0FBQ0UsY0FBWixHQUE4QixJQUFJUCxrQkFBSixFQUFELENBQWtCUSxPQUEvQztBQUNBLFdBQU9ILFdBQVA7QUFDRDs7QUFFRCxNQUFJSSxLQUFKO0FBQ0FDLEVBQUFBLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQlAsT0FBdEIsRUFBK0IsU0FBL0IsRUFBMEM7QUFDeENRLElBQUFBLEdBRHdDLGlCQUNqQztBQUNMLFVBQUksQ0FBQ0gsS0FBTCxFQUFZQSxLQUFLLEdBQUdMLE9BQU8sRUFBZjtBQUNaLGFBQU9LLEtBQVA7QUFDRDtBQUp1QyxHQUExQzs7QUFPQUwsRUFBQUEsT0FBTyxDQUFDUyxPQUFSLEdBQWtCLFVBQVVDLEdBQVYsRUFBZUMsV0FBZixFQUE0QkMsVUFBNUIsRUFBd0M7QUFDeEQsV0FBT3JCLE9BQU8sQ0FBQyxDQUFDUyxPQUFPLENBQUNZLFVBQUQsQ0FBUixDQUFELENBQVAsQ0FBK0JILE9BQS9CLENBQXVDQyxHQUF2QyxFQUE0Q0MsV0FBNUMsQ0FBUDtBQUNELEdBRkQ7O0FBSUEsU0FBT1gsT0FBUDtBQUNELENBckJEO0FBdUJBOzs7Ozs7Ozs7Ozs7O0FBV0FULE9BQU8sQ0FBQ3NCLFNBQVIsR0FBb0JBLGtCQUFwQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBdEIsT0FBTyxDQUFDdUIsS0FBUixHQUFnQkEsY0FBaEI7QUFFQTs7Ozs7Ozs7O0FBUUF2QixPQUFPLENBQUN3QixNQUFSLEdBQWlCQSxlQUFqQjtBQUVBOzs7Ozs7Ozs7QUFRQXhCLE9BQU8sQ0FBQ3lCLElBQVIsR0FBZUEsYUFBZjtBQUVBOzs7Ozs7Ozs7OztBQVVBekIsT0FBTyxDQUFDMEIsT0FBUixHQUFrQixVQUFBQyxRQUFRO0FBQUEsU0FBSSxJQUFJQyxnQkFBSixDQUFZRCxRQUFaLENBQUo7QUFBQSxDQUExQjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQzZCLE1BQVIsR0FBaUIsVUFBQUYsUUFBUTtBQUFBLFNBQUksSUFBSUcsZUFBSixDQUFXSCxRQUFYLENBQUo7QUFBQSxDQUF6QjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQytCLElBQVIsR0FBZSxVQUFBSixRQUFRO0FBQUEsU0FBSSxJQUFJSyxvQkFBSixDQUFnQkwsUUFBaEIsQ0FBSjtBQUFBLENBQXZCO0FBRUE7Ozs7Ozs7Ozs7OztBQVVBM0IsT0FBTyxDQUFDaUMsSUFBUixHQUFlLFVBQUFOLFFBQVE7QUFBQSxTQUFJLElBQUlPLGFBQUosQ0FBU1AsUUFBVCxDQUFKO0FBQUEsQ0FBdkI7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUEzQixPQUFPLENBQUNtQyxJQUFSLEdBQWUsVUFBQVIsUUFBUTtBQUFBLFNBQUksSUFBSVMsYUFBSixDQUFTVCxRQUFULENBQUo7QUFBQSxDQUF2Qjs7ZUFFZTNCLE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCBQcm9jZXNzb3IgZnJvbSAnLi9wcm9jZXNzb3InXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuaW1wb3J0IENvbW1lbnQgZnJvbSAnLi9jb21tZW50J1xuaW1wb3J0IEF0UnVsZSBmcm9tICcuL2F0LXJ1bGUnXG5pbXBvcnQgdmVuZG9yIGZyb20gJy4vdmVuZG9yJ1xuaW1wb3J0IHBhcnNlIGZyb20gJy4vcGFyc2UnXG5pbXBvcnQgbGlzdCBmcm9tICcuL2xpc3QnXG5pbXBvcnQgUnVsZSBmcm9tICcuL3J1bGUnXG5pbXBvcnQgUm9vdCBmcm9tICcuL3Jvb3QnXG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlIHRoYXQgd2lsbCBhcHBseSBgcGx1Z2luc2BcbiAqIGFzIENTUyBwcm9jZXNzb3JzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXkuPFBsdWdpbnxwbHVnaW5GdW5jdGlvbj58UHJvY2Vzc29yfSBwbHVnaW5zIFBvc3RDU1MgcGx1Z2lucy5cbiAqICAgICAgICBTZWUge0BsaW5rIFByb2Nlc3NvciN1c2V9IGZvciBwbHVnaW4gZm9ybWF0LlxuICpcbiAqIEByZXR1cm4ge1Byb2Nlc3Nvcn0gUHJvY2Vzc29yIHRvIHByb2Nlc3MgbXVsdGlwbGUgQ1NTLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgcG9zdGNzcyBmcm9tICdwb3N0Y3NzJ1xuICpcbiAqIHBvc3Rjc3MocGx1Z2lucykucHJvY2Vzcyhjc3MsIHsgZnJvbSwgdG8gfSkudGhlbihyZXN1bHQgPT4ge1xuICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICogfSlcbiAqXG4gKiBAbmFtZXNwYWNlIHBvc3Rjc3NcbiAqL1xuZnVuY3Rpb24gcG9zdGNzcyAoLi4ucGx1Z2lucykge1xuICBpZiAocGx1Z2lucy5sZW5ndGggPT09IDEgJiYgQXJyYXkuaXNBcnJheShwbHVnaW5zWzBdKSkge1xuICAgIHBsdWdpbnMgPSBwbHVnaW5zWzBdXG4gIH1cbiAgcmV0dXJuIG5ldyBQcm9jZXNzb3IocGx1Z2lucylcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgUG9zdENTUyBwbHVnaW4gd2l0aCBhIHN0YW5kYXJkIEFQSS5cbiAqXG4gKiBUaGUgbmV3bHktd3JhcHBlZCBmdW5jdGlvbiB3aWxsIHByb3ZpZGUgYm90aCB0aGUgbmFtZSBhbmQgUG9zdENTU1xuICogdmVyc2lvbiBvZiB0aGUgcGx1Z2luLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFtyZXBsYWNlXSlcbiAqIHByb2Nlc3Nvci5wbHVnaW5zWzBdLnBvc3Rjc3NQbHVnaW4gIC8vPT4gJ3Bvc3Rjc3MtcmVwbGFjZSdcbiAqIHByb2Nlc3Nvci5wbHVnaW5zWzBdLnBvc3Rjc3NWZXJzaW9uIC8vPT4gJzYuMC4wJ1xuICogYGBgXG4gKlxuICogVGhlIHBsdWdpbiBmdW5jdGlvbiByZWNlaXZlcyAyIGFyZ3VtZW50czoge0BsaW5rIFJvb3R9XG4gKiBhbmQge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2UuIFRoZSBmdW5jdGlvbiBzaG91bGQgbXV0YXRlIHRoZSBwcm92aWRlZFxuICogYFJvb3RgIG5vZGUuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY3JlYXRlIGEgbmV3IGBSb290YCBub2RlXG4gKiBhbmQgb3ZlcnJpZGUgdGhlIGByZXN1bHQucm9vdGAgcHJvcGVydHkuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGNsZWFuZXIgPSBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1jbGVhbmVyJywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJlc3VsdC5yb290ID0gcG9zdGNzcy5yb290KClcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIEFzIGEgY29udmVuaWVuY2UsIHBsdWdpbnMgYWxzbyBleHBvc2UgYSBgcHJvY2Vzc2AgbWV0aG9kIHNvIHRoYXQgeW91IGNhbiB1c2VcbiAqIHRoZW0gYXMgc3RhbmRhbG9uZSB0b29scy5cbiAqXG4gKiBgYGBqc1xuICogY2xlYW5lci5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMsIHBsdWdpbk9wdHMpXG4gKiAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86XG4gKiBwb3N0Y3NzKFsgY2xlYW5lcihwbHVnaW5PcHRzKSBdKS5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMpXG4gKiBgYGBcbiAqXG4gKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICpcbiAqIGBgYGpzXG4gKiBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1pbXBvcnQnLCAoKSA9PiB7XG4gKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gKiAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gKiAgICAgICBmcy5yZWFkRmlsZSgnYmFzZS5jc3MnLCAoYmFzZSkgPT4ge1xuICogICAgICAgICByb290LnByZXBlbmQoYmFzZSlcbiAqICAgICAgICAgcmVzb2x2ZSgpXG4gKiAgICAgICB9KVxuICogICAgIH0pXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBBZGQgd2FybmluZ3MgdXNpbmcgdGhlIHtAbGluayBOb2RlI3dhcm59IG1ldGhvZC5cbiAqIFNlbmQgZGF0YSB0byBvdGhlciBwbHVnaW5zIHVzaW5nIHRoZSB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfSBhcnJheS5cbiAqXG4gKiBgYGBqc1xuICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtY2FuaXVzZS10ZXN0JywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJvb3Qud2Fsa0RlY2xzKGRlY2wgPT4ge1xuICogICAgICAgaWYgKCFjYW5pdXNlLnN1cHBvcnQoZGVjbC5wcm9wKSkge1xuICogICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnU29tZSBicm93c2VycyBkbyBub3Qgc3VwcG9ydCAnICsgZGVjbC5wcm9wKVxuICogICAgICAgfVxuICogICAgIH0pXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgICBQb3N0Q1NTIHBsdWdpbiBuYW1lLiBTYW1lIGFzIGluIGBuYW1lYFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgaW4gYHBhY2thZ2UuanNvbmAuIEl0IHdpbGwgYmUgc2F2ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGBwbHVnaW4ucG9zdGNzc1BsdWdpbmAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBpbml0aWFsaXplciBXaWxsIHJlY2VpdmUgcGx1Z2luIG9wdGlvbnNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzaG91bGQgcmV0dXJuIHtAbGluayBwbHVnaW5GdW5jdGlvbn1cbiAqXG4gKiBAcmV0dXJuIHtQbHVnaW59IFBvc3RDU1MgcGx1Z2luLlxuICovXG5wb3N0Y3NzLnBsdWdpbiA9IGZ1bmN0aW9uIHBsdWdpbiAobmFtZSwgaW5pdGlhbGl6ZXIpIHtcbiAgZnVuY3Rpb24gY3JlYXRvciAoLi4uYXJncykge1xuICAgIGxldCB0cmFuc2Zvcm1lciA9IGluaXRpYWxpemVyKC4uLmFyZ3MpXG4gICAgdHJhbnNmb3JtZXIucG9zdGNzc1BsdWdpbiA9IG5hbWVcbiAgICB0cmFuc2Zvcm1lci5wb3N0Y3NzVmVyc2lvbiA9IChuZXcgUHJvY2Vzc29yKCkpLnZlcnNpb25cbiAgICByZXR1cm4gdHJhbnNmb3JtZXJcbiAgfVxuXG4gIGxldCBjYWNoZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRvciwgJ3Bvc3Rjc3MnLCB7XG4gICAgZ2V0ICgpIHtcbiAgICAgIGlmICghY2FjaGUpIGNhY2hlID0gY3JlYXRvcigpXG4gICAgICByZXR1cm4gY2FjaGVcbiAgICB9XG4gIH0pXG5cbiAgY3JlYXRvci5wcm9jZXNzID0gZnVuY3Rpb24gKGNzcywgcHJvY2Vzc09wdHMsIHBsdWdpbk9wdHMpIHtcbiAgICByZXR1cm4gcG9zdGNzcyhbY3JlYXRvcihwbHVnaW5PcHRzKV0pLnByb2Nlc3MoY3NzLCBwcm9jZXNzT3B0cylcbiAgfVxuXG4gIHJldHVybiBjcmVhdG9yXG59XG5cbi8qKlxuICogRGVmYXVsdCBmdW5jdGlvbiB0byBjb252ZXJ0IGEgbm9kZSB0cmVlIGludG8gYSBDU1Mgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAgICBTdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgRnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBnZW5lcmF0ZSBzdHJpbmcgYW5kIHNvdXJjZSBtYXAuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcblxuLyoqXG4gKiBQYXJzZXMgc291cmNlIGNzcyBhbmQgcmV0dXJucyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZSxcbiAqIHdoaWNoIGNvbnRhaW5zIHRoZSBzb3VyY2UgQ1NTIG5vZGVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfSBjc3MgICBTdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdG9TdHJpbmcoKSBtZXRob2QsIGxpa2UgYSBCdWZmZXJcbiAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXMuXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNpbXBsZSBDU1MgY29uY2F0ZW5hdGlvbiB3aXRoIHNvdXJjZSBtYXAgc3VwcG9ydFxuICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogZmlsZTEgfSlcbiAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206IGZpbGUyIH0pXG4gKiByb290MS5hcHBlbmQocm9vdDIpLnRvUmVzdWx0KCkuY3NzXG4gKlxuICogQGZ1bmN0aW9uXG4gKi9cbnBvc3Rjc3MucGFyc2UgPSBwYXJzZVxuXG4vKipcbiAqIENvbnRhaW5zIHRoZSB7QGxpbmsgdmVuZG9yfSBtb2R1bGUuXG4gKlxuICogQHR5cGUge3ZlbmRvcn1cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy52ZW5kb3IudW5wcmVmaXhlZCgnLW1vei10YWInKSAvLz0+IFsndGFiJ11cbiAqL1xucG9zdGNzcy52ZW5kb3IgPSB2ZW5kb3JcblxuLyoqXG4gKiBDb250YWlucyB0aGUge0BsaW5rIGxpc3R9IG1vZHVsZS5cbiAqXG4gKiBAbWVtYmVyIHtsaXN0fVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmxpc3Quc3BhY2UoJzVweCBjYWxjKDEwJSArIDVweCknKSAvLz0+IFsnNXB4JywgJ2NhbGMoMTAlICsgNXB4KSddXG4gKi9cbnBvc3Rjc3MubGlzdCA9IGxpc3RcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBDb21tZW50fSBub2RlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtDb21tZW50fSBOZXcgY29tbWVudCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuY29tbWVudCh7IHRleHQ6ICd0ZXN0JyB9KVxuICovXG5wb3N0Y3NzLmNvbW1lbnQgPSBkZWZhdWx0cyA9PiBuZXcgQ29tbWVudChkZWZhdWx0cylcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBBdFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge0F0UnVsZX0gbmV3IGF0LXJ1bGUgbm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmF0UnVsZSh7IG5hbWU6ICdjaGFyc2V0JyB9KS50b1N0cmluZygpIC8vPT4gXCJAY2hhcnNldFwiXG4gKi9cbnBvc3Rjc3MuYXRSdWxlID0gZGVmYXVsdHMgPT4gbmV3IEF0UnVsZShkZWZhdWx0cylcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBEZWNsYXJhdGlvbn0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBQcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7RGVjbGFyYXRpb259IG5ldyBkZWNsYXJhdGlvbiBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAncmVkJyB9KS50b1N0cmluZygpIC8vPT4gXCJjb2xvcjogcmVkXCJcbiAqL1xucG9zdGNzcy5kZWNsID0gZGVmYXVsdHMgPT4gbmV3IERlY2xhcmF0aW9uKGRlZmF1bHRzKVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge1J1bGV9IG5ldyBydWxlIG5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5ydWxlKHsgc2VsZWN0b3I6ICdhJyB9KS50b1N0cmluZygpIC8vPT4gXCJhIHtcXG59XCJcbiAqL1xucG9zdGNzcy5ydWxlID0gZGVmYXVsdHMgPT4gbmV3IFJ1bGUoZGVmYXVsdHMpXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBQcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7Um9vdH0gbmV3IHJvb3Qgbm9kZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5yb290KHsgYWZ0ZXI6ICdcXG4nIH0pLnRvU3RyaW5nKCkgLy89PiBcIlxcblwiXG4gKi9cbnBvc3Rjc3Mucm9vdCA9IGRlZmF1bHRzID0+IG5ldyBSb290KGRlZmF1bHRzKVxuXG5leHBvcnQgZGVmYXVsdCBwb3N0Y3NzXG4iXSwiZmlsZSI6InBvc3Rjc3MuanMifQ==\n","export var ListenerType;\n\n(function (ListenerType) {\n  ListenerType[\"mouse\"] = \"mouse\";\n  ListenerType[\"touch\"] = \"touch\";\n  ListenerType[\"keyboard\"] = \"keyboard\";\n})(ListenerType || (ListenerType = {}));","// Used for MouseEvent.buttons (note the s on the end).\nvar MouseButtons = {\n  Left: 1,\n  Right: 2,\n  Center: 4\n}; // Used for e.button (note the lack of an s on the end).\n\nvar MouseButton = {\n  Left: 0,\n  Center: 1,\n  Right: 2\n};\n/**\n * Only touch events and mouse events where the left button is pressed should initiate a drag.\n * @param {MouseEvent | TouchEvent} e The event\n */\n\nexport function eventShouldStartDrag(e) {\n  // For touch events, button will be undefined. If e.button is defined,\n  // then it should be MouseButton.Left.\n  return e.button === undefined || e.button === MouseButton.Left;\n}\n/**\n * Only touch events and mouse events where the left mouse button is no longer held should end a drag.\n * It's possible the user mouse downs with the left mouse button, then mouse down and ups with the right mouse button.\n * We don't want releasing the right mouse button to end the drag.\n * @param {MouseEvent | TouchEvent} e The event\n */\n\nexport function eventShouldEndDrag(e) {\n  // Touch events will have buttons be undefined, while mouse events will have e.buttons's left button\n  // bit field unset if the left mouse button has been released\n  return e.buttons === undefined || (e.buttons & MouseButtons.Left) === 0;\n}\nexport function isTouchEvent(e) {\n  return !!e.targetTouches;\n}","import { isTouchEvent } from './predicates';\nvar ELEMENT_NODE = 1;\nexport function getNodeClientOffset(node) {\n  var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n\n  if (!el) {\n    return undefined;\n  }\n\n  var _el$getBoundingClient = el.getBoundingClientRect(),\n      top = _el$getBoundingClient.top,\n      left = _el$getBoundingClient.left;\n\n  return {\n    x: left,\n    y: top\n  };\n}\nexport function getEventClientTouchOffset(e, lastTargetTouchFallback) {\n  if (e.targetTouches.length === 1) {\n    return getEventClientOffset(e.targetTouches[0]);\n  } else if (lastTargetTouchFallback && e.touches.length === 1) {\n    if (e.touches[0].target === lastTargetTouchFallback.target) {\n      return getEventClientOffset(e.touches[0]);\n    }\n  }\n}\nexport function getEventClientOffset(e, lastTargetTouchFallback) {\n  if (isTouchEvent(e)) {\n    return getEventClientTouchOffset(e, lastTargetTouchFallback);\n  } else {\n    return {\n      x: e.clientX,\n      y: e.clientY\n    };\n  }\n}","var supportsPassive = function () {\n  // simular to jQuery's test\n  var supported = false;\n\n  try {\n    addEventListener('test', function () {// do nothing\n    }, Object.defineProperty({}, 'passive', {\n      get: function get() {\n        supported = true;\n        return true;\n      }\n    }));\n  } catch (e) {// do nothing\n  }\n\n  return supported;\n}();\n\nexport default supportsPassive;","function _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\nexport var OptionsReader =\n/*#__PURE__*/\nfunction () {\n  function OptionsReader(incoming, context) {\n    var _this = this;\n\n    _classCallCheck(this, OptionsReader);\n\n    this.enableTouchEvents = true;\n    this.enableMouseEvents = false;\n    this.enableKeyboardEvents = false;\n    this.ignoreContextMenu = false;\n    this.enableHoverOutsideTarget = false;\n    this.touchSlop = 0;\n    this.scrollAngleRanges = undefined;\n    this.context = context;\n    this.delayTouchStart = incoming.delayTouchStart || incoming.delay || 0;\n    this.delayMouseStart = incoming.delayMouseStart || incoming.delay || 0;\n    Object.keys(incoming).forEach(function (key) {\n      if (incoming[key] != null) {\n        ;\n        _this[key] = incoming[key];\n      }\n    });\n  }\n\n  _createClass(OptionsReader, [{\n    key: \"window\",\n    get: function get() {\n      if (this.context && this.context.window) {\n        return this.context.window;\n      } else if (typeof window !== 'undefined') {\n        return window;\n      }\n\n      return undefined;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      if (this.window) {\n        return this.window.document;\n      }\n\n      return undefined;\n    }\n  }]);\n\n  return OptionsReader;\n}();","var _eventNames;\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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { ListenerType } from './interfaces';\nimport { eventShouldStartDrag, eventShouldEndDrag, isTouchEvent } from './utils/predicates';\nimport { getEventClientOffset, getNodeClientOffset } from './utils/offsets';\nimport { distance, inAngleRanges } from './utils/math';\nimport supportsPassive from './utils/supportsPassive';\nimport { OptionsReader } from './OptionsReader';\nvar eventNames = (_eventNames = {}, _defineProperty(_eventNames, ListenerType.mouse, {\n  start: 'mousedown',\n  move: 'mousemove',\n  end: 'mouseup',\n  contextmenu: 'contextmenu'\n}), _defineProperty(_eventNames, ListenerType.touch, {\n  start: 'touchstart',\n  move: 'touchmove',\n  end: 'touchend'\n}), _defineProperty(_eventNames, ListenerType.keyboard, {\n  keydown: 'keydown'\n}), _eventNames);\n\nvar TouchBackend =\n/*#__PURE__*/\nfunction () {\n  function TouchBackend(manager, context, options) {\n    var _this = this;\n\n    _classCallCheck(this, TouchBackend);\n\n    this.getSourceClientOffset = function (sourceId) {\n      return getNodeClientOffset(_this.sourceNodes[sourceId]);\n    };\n\n    this.handleTopMoveStartCapture = function (e) {\n      if (!eventShouldStartDrag(e)) {\n        return;\n      }\n\n      _this.moveStartSourceIds = [];\n    };\n\n    this.handleMoveStart = function (sourceId) {\n      // Just because we received an event doesn't necessarily mean we need to collect drag sources.\n      // We only collect start collecting drag sources on touch and left mouse events.\n      if (Array.isArray(_this.moveStartSourceIds)) {\n        _this.moveStartSourceIds.unshift(sourceId);\n      }\n    };\n\n    this.handleTopMoveStart = function (e) {\n      if (!eventShouldStartDrag(e)) {\n        return;\n      } // Don't prematurely preventDefault() here since it might:\n      // 1. Mess up scrolling\n      // 2. Mess up long tap (which brings up context menu)\n      // 3. If there's an anchor link as a child, tap won't be triggered on link\n\n\n      var clientOffset = getEventClientOffset(e);\n\n      if (clientOffset) {\n        if (isTouchEvent(e)) {\n          _this.lastTargetTouchFallback = e.targetTouches[0];\n        }\n\n        _this._mouseClientOffset = clientOffset;\n      }\n\n      _this.waitingForDelay = false;\n    };\n\n    this.handleTopMoveStartDelay = function (e) {\n      if (!eventShouldStartDrag(e)) {\n        return;\n      }\n\n      var delay = e.type === eventNames.touch.start ? _this.options.delayTouchStart : _this.options.delayMouseStart;\n      _this.timeout = setTimeout(_this.handleTopMoveStart.bind(_this, e), delay);\n      _this.waitingForDelay = true;\n    };\n\n    this.handleTopMoveCapture = function () {\n      _this.dragOverTargetIds = [];\n    };\n\n    this.handleMove = function (_, targetId) {\n      if (_this.dragOverTargetIds) {\n        _this.dragOverTargetIds.unshift(targetId);\n      }\n    };\n\n    this.handleTopMove = function (e) {\n      if (_this.timeout) {\n        clearTimeout(_this.timeout);\n      }\n\n      if (!_this.document || _this.waitingForDelay) {\n        return;\n      }\n\n      var moveStartSourceIds = _this.moveStartSourceIds,\n          dragOverTargetIds = _this.dragOverTargetIds;\n      var enableHoverOutsideTarget = _this.options.enableHoverOutsideTarget;\n      var clientOffset = getEventClientOffset(e, _this.lastTargetTouchFallback);\n\n      if (!clientOffset) {\n        return;\n      } // If the touch move started as a scroll, or is is between the scroll angles\n\n\n      if (_this._isScrolling || !_this.monitor.isDragging() && inAngleRanges(_this._mouseClientOffset.x || 0, _this._mouseClientOffset.y || 0, clientOffset.x, clientOffset.y, _this.options.scrollAngleRanges)) {\n        _this._isScrolling = true;\n        return;\n      } // If we're not dragging and we've moved a little, that counts as a drag start\n\n\n      if (!_this.monitor.isDragging() && // eslint-disable-next-line no-prototype-builtins\n      _this._mouseClientOffset.hasOwnProperty('x') && moveStartSourceIds && distance(_this._mouseClientOffset.x || 0, _this._mouseClientOffset.y || 0, clientOffset.x, clientOffset.y) > (_this.options.touchSlop ? _this.options.touchSlop : 0)) {\n        _this.moveStartSourceIds = undefined;\n\n        _this.actions.beginDrag(moveStartSourceIds, {\n          clientOffset: _this._mouseClientOffset,\n          getSourceClientOffset: _this.getSourceClientOffset,\n          publishSource: false\n        });\n      }\n\n      if (!_this.monitor.isDragging()) {\n        return;\n      }\n\n      var sourceNode = _this.sourceNodes[_this.monitor.getSourceId()];\n\n      _this.installSourceNodeRemovalObserver(sourceNode);\n\n      _this.actions.publishDragSource();\n\n      e.preventDefault(); // Get the node elements of the hovered DropTargets\n\n      var dragOverTargetNodes = (dragOverTargetIds || []).map(function (key) {\n        return _this.targetNodes[key];\n      }); // Get the a ordered list of nodes that are touched by\n\n      var elementsAtPoint = _this.options.getDropTargetElementsAtPoint ? _this.options.getDropTargetElementsAtPoint(clientOffset.x, clientOffset.y, dragOverTargetNodes) : _this.document.elementsFromPoint(clientOffset.x, clientOffset.y); // Extend list with parents that are not receiving elementsFromPoint events (size 0 elements and svg groups)\n\n      var elementsAtPointExtended = [];\n\n      for (var nodeId in elementsAtPoint) {\n        // eslint-disable-next-line no-prototype-builtins\n        if (!elementsAtPoint.hasOwnProperty(nodeId)) {\n          continue;\n        }\n\n        var currentNode = elementsAtPoint[nodeId];\n        elementsAtPointExtended.push(currentNode);\n\n        while (currentNode) {\n          currentNode = currentNode.parentElement;\n\n          if (elementsAtPointExtended.indexOf(currentNode) === -1) {\n            elementsAtPointExtended.push(currentNode);\n          }\n        }\n      }\n\n      var orderedDragOverTargetIds = elementsAtPointExtended // Filter off nodes that arent a hovered DropTargets nodes\n      .filter(function (node) {\n        return dragOverTargetNodes.indexOf(node) > -1;\n      }) // Map back the nodes elements to targetIds\n      .map(function (node) {\n        for (var targetId in _this.targetNodes) {\n          if (node === _this.targetNodes[targetId]) {\n            return targetId;\n          }\n        }\n\n        return undefined;\n      }) // Filter off possible null rows\n      .filter(function (node) {\n        return !!node;\n      }).filter(function (id, index, ids) {\n        return ids.indexOf(id) === index;\n      }); // Invoke hover for drop targets when source node is still over and pointer is outside\n\n      if (enableHoverOutsideTarget) {\n        for (var targetId in _this.targetNodes) {\n          if (_this.targetNodes[targetId] && _this.targetNodes[targetId].contains(sourceNode) && orderedDragOverTargetIds.indexOf(targetId) === -1) {\n            orderedDragOverTargetIds.unshift(targetId);\n            break;\n          }\n        }\n      } // Reverse order because dnd-core reverse it before calling the DropTarget drop methods\n\n\n      orderedDragOverTargetIds.reverse();\n\n      _this.actions.hover(orderedDragOverTargetIds, {\n        clientOffset: clientOffset\n      });\n    };\n\n    this.handleTopMoveEndCapture = function (e) {\n      _this._isScrolling = false;\n      _this.lastTargetTouchFallback = undefined;\n\n      if (!eventShouldEndDrag(e)) {\n        return;\n      }\n\n      if (!_this.monitor.isDragging() || _this.monitor.didDrop()) {\n        _this.moveStartSourceIds = undefined;\n        return;\n      }\n\n      e.preventDefault();\n      _this._mouseClientOffset = {};\n\n      _this.uninstallSourceNodeRemovalObserver();\n\n      _this.actions.drop();\n\n      _this.actions.endDrag();\n    };\n\n    this.handleCancelOnEscape = function (e) {\n      if (e.key === 'Escape' && _this.monitor.isDragging()) {\n        _this._mouseClientOffset = {};\n\n        _this.uninstallSourceNodeRemovalObserver();\n\n        _this.actions.endDrag();\n      }\n    };\n\n    this.options = new OptionsReader(options, context);\n    this.actions = manager.getActions();\n    this.monitor = manager.getMonitor();\n    this.sourceNodes = {};\n    this.sourcePreviewNodes = {};\n    this.sourcePreviewNodeOptions = {};\n    this.targetNodes = {};\n    this.listenerTypes = [];\n    this._mouseClientOffset = {};\n    this._isScrolling = false;\n\n    if (this.options.enableMouseEvents) {\n      this.listenerTypes.push(ListenerType.mouse);\n    }\n\n    if (this.options.enableTouchEvents) {\n      this.listenerTypes.push(ListenerType.touch);\n    }\n\n    if (this.options.enableKeyboardEvents) {\n      this.listenerTypes.push(ListenerType.keyboard);\n    }\n  } // public for test\n\n\n  _createClass(TouchBackend, [{\n    key: \"setup\",\n    value: function setup() {\n      if (!this.window) {\n        return;\n      }\n\n      invariant(!TouchBackend.isSetUp, 'Cannot have two Touch backends at the same time.');\n      TouchBackend.isSetUp = true;\n      this.addEventListener(this.window, 'start', this.getTopMoveStartHandler());\n      this.addEventListener(this.window, 'start', this.handleTopMoveStartCapture, true);\n      this.addEventListener(this.window, 'move', this.handleTopMove);\n      this.addEventListener(this.window, 'move', this.handleTopMoveCapture, true);\n      this.addEventListener(this.window, 'end', this.handleTopMoveEndCapture, true);\n\n      if (this.options.enableMouseEvents && !this.options.ignoreContextMenu) {\n        this.addEventListener(this.window, 'contextmenu', this.handleTopMoveEndCapture);\n      }\n\n      if (this.options.enableKeyboardEvents) {\n        this.addEventListener(this.window, 'keydown', this.handleCancelOnEscape, true);\n      }\n    }\n  }, {\n    key: \"teardown\",\n    value: function teardown() {\n      if (!this.window) {\n        return;\n      }\n\n      TouchBackend.isSetUp = false;\n      this._mouseClientOffset = {};\n      this.removeEventListener(this.window, 'start', this.handleTopMoveStartCapture, true);\n      this.removeEventListener(this.window, 'start', this.handleTopMoveStart);\n      this.removeEventListener(this.window, 'move', this.handleTopMoveCapture, true);\n      this.removeEventListener(this.window, 'move', this.handleTopMove);\n      this.removeEventListener(this.window, 'end', this.handleTopMoveEndCapture, true);\n\n      if (this.options.enableMouseEvents && !this.options.ignoreContextMenu) {\n        this.removeEventListener(this.window, 'contextmenu', this.handleTopMoveEndCapture);\n      }\n\n      if (this.options.enableKeyboardEvents) {\n        this.removeEventListener(this.window, 'keydown', this.handleCancelOnEscape, true);\n      }\n\n      this.uninstallSourceNodeRemovalObserver();\n    }\n  }, {\n    key: \"addEventListener\",\n    value: function addEventListener(subject, event, handler, capture) {\n      var options = supportsPassive ? {\n        capture: capture,\n        passive: false\n      } : capture;\n      this.listenerTypes.forEach(function (listenerType) {\n        var evt = eventNames[listenerType][event];\n\n        if (evt) {\n          subject.addEventListener(evt, handler, options);\n        }\n      });\n    }\n  }, {\n    key: \"removeEventListener\",\n    value: function removeEventListener(subject, event, handler, capture) {\n      var options = supportsPassive ? {\n        capture: capture,\n        passive: false\n      } : capture;\n      this.listenerTypes.forEach(function (listenerType) {\n        var evt = eventNames[listenerType][event];\n\n        if (evt) {\n          subject.removeEventListener(evt, handler, options);\n        }\n      });\n    }\n  }, {\n    key: \"connectDragSource\",\n    value: function connectDragSource(sourceId, node) {\n      var _this2 = this;\n\n      var handleMoveStart = this.handleMoveStart.bind(this, sourceId);\n      this.sourceNodes[sourceId] = node;\n      this.addEventListener(node, 'start', handleMoveStart);\n      return function () {\n        delete _this2.sourceNodes[sourceId];\n\n        _this2.removeEventListener(node, 'start', handleMoveStart);\n      };\n    }\n  }, {\n    key: \"connectDragPreview\",\n    value: function connectDragPreview(sourceId, node, options) {\n      var _this3 = this;\n\n      this.sourcePreviewNodeOptions[sourceId] = options;\n      this.sourcePreviewNodes[sourceId] = node;\n      return function () {\n        delete _this3.sourcePreviewNodes[sourceId];\n        delete _this3.sourcePreviewNodeOptions[sourceId];\n      };\n    }\n  }, {\n    key: \"connectDropTarget\",\n    value: function connectDropTarget(targetId, node) {\n      var _this4 = this;\n\n      if (!this.document) {\n        return function () {\n          return null;\n        };\n      }\n\n      var handleMove = function handleMove(e) {\n        if (!_this4.document || !_this4.monitor.isDragging()) {\n          return;\n        }\n\n        var coords;\n        /**\n         * Grab the coordinates for the current mouse/touch position\n         */\n\n        switch (e.type) {\n          case eventNames.mouse.move:\n            coords = {\n              x: e.clientX,\n              y: e.clientY\n            };\n            break;\n\n          case eventNames.touch.move:\n            coords = {\n              x: e.touches[0].clientX,\n              y: e.touches[0].clientY\n            };\n            break;\n        }\n        /**\n         * Use the coordinates to grab the element the drag ended on.\n         * If the element is the same as the target node (or any of it's children) then we have hit a drop target and can handle the move.\n         */\n\n\n        var droppedOn = coords != null ? _this4.document.elementFromPoint(coords.x, coords.y) : undefined;\n        var childMatch = droppedOn && node.contains(droppedOn);\n\n        if (droppedOn === node || childMatch) {\n          return _this4.handleMove(e, targetId);\n        }\n      };\n      /**\n       * Attaching the event listener to the body so that touchmove will work while dragging over multiple target elements.\n       */\n\n\n      this.addEventListener(this.document.body, 'move', handleMove);\n      this.targetNodes[targetId] = node;\n      return function () {\n        if (_this4.document) {\n          delete _this4.targetNodes[targetId];\n\n          _this4.removeEventListener(_this4.document.body, 'move', handleMove);\n        }\n      };\n    }\n  }, {\n    key: \"getTopMoveStartHandler\",\n    value: function getTopMoveStartHandler() {\n      if (!this.options.delayTouchStart && !this.options.delayMouseStart) {\n        return this.handleTopMoveStart;\n      }\n\n      return this.handleTopMoveStartDelay;\n    }\n  }, {\n    key: \"installSourceNodeRemovalObserver\",\n    value: function installSourceNodeRemovalObserver(node) {\n      var _this5 = this;\n\n      this.uninstallSourceNodeRemovalObserver();\n      this.draggedSourceNode = node;\n      this.draggedSourceNodeRemovalObserver = new MutationObserver(function () {\n        if (node && !node.parentElement) {\n          _this5.resurrectSourceNode();\n\n          _this5.uninstallSourceNodeRemovalObserver();\n        }\n      });\n\n      if (!node || !node.parentElement) {\n        return;\n      }\n\n      this.draggedSourceNodeRemovalObserver.observe(node.parentElement, {\n        childList: true\n      });\n    }\n  }, {\n    key: \"resurrectSourceNode\",\n    value: function resurrectSourceNode() {\n      if (this.document && this.draggedSourceNode) {\n        this.draggedSourceNode.style.display = 'none';\n        this.draggedSourceNode.removeAttribute('data-reactid');\n        this.document.body.appendChild(this.draggedSourceNode);\n      }\n    }\n  }, {\n    key: \"uninstallSourceNodeRemovalObserver\",\n    value: function uninstallSourceNodeRemovalObserver() {\n      if (this.draggedSourceNodeRemovalObserver) {\n        this.draggedSourceNodeRemovalObserver.disconnect();\n      }\n\n      this.draggedSourceNodeRemovalObserver = undefined;\n      this.draggedSourceNode = undefined;\n    }\n  }, {\n    key: \"window\",\n    get: function get() {\n      return this.options.window;\n    } // public for test\n\n  }, {\n    key: \"document\",\n    get: function get() {\n      if (this.window) {\n        return this.window.document;\n      }\n\n      return undefined;\n    }\n  }]);\n\n  return TouchBackend;\n}();\n\nexport { TouchBackend as default };","export function distance(x1, y1, x2, y2) {\n  return Math.sqrt(Math.pow(Math.abs(x2 - x1), 2) + Math.pow(Math.abs(y2 - y1), 2));\n}\nexport function inAngleRanges(x1, y1, x2, y2, angleRanges) {\n  if (!angleRanges) {\n    return false;\n  }\n\n  var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI + 180;\n\n  for (var i = 0; i < angleRanges.length; ++i) {\n    if ((angleRanges[i].start == null || angle >= angleRanges[i].start) && (angleRanges[i].end == null || angle <= angleRanges[i].end)) {\n      return true;\n    }\n  }\n\n  return false;\n}","import TouchBackend from './TouchBackend';\n\nvar createBackend = function createBackend(manager, context) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  return new TouchBackend(manager, context, options);\n};\n\nexport default createBackend;","// 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","'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","var global = require('../internals/global');\n\nmodule.exports = global;\n","var global = require('../internals/global');\nvar 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 = global.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 $ = 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 $ = 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 $ = 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 $ = 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","// `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 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","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\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","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\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 defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\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 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');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\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        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","var $ = require('../internals/export');\nvar copyWithin = require('../internals/array-copy-within');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n  copyWithin: copyWithin\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\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 $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 $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 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","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n  flatMap: function flatMap(callbackfn /* , thisArg */) {\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A;\n    aCallable(callbackfn);\n    A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return A;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\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","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","'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';\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? un$IndexOf(this, searchElement, fromIndex) || 0\n      : $IndexOf(this, searchElement, fromIndex);\n  }\n});\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\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","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n// eslint-disable-next-line es-x/no-array-prototype-lastindexof -- required for testing\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n  lastIndexOf: lastIndexOf\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 global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isConstructor = require('../internals/is-constructor');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\n\nvar ISNT_GENERIC = fails(function () {\n  function F() { /* empty */ }\n  return !(Array.of.call(F) instanceof F);\n});\n\n// `Array.of` method\n// https://tc39.es/ecma262/#sec-array.of\n// WebKit Array.of isn't generic\n$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {\n  of: function of(/* ...args */) {\n    var index = 0;\n    var argumentsLength = arguments.length;\n    var result = new (isConstructor(this) ? this : Array)(argumentsLength);\n    while (argumentsLength > index) createProperty(result, index, arguments[index++]);\n    result.length = argumentsLength;\n    return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduceRight = require('../internals/array-reduce').right;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduceRight');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduceright\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n  reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n    return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar un$Reverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return un$Reverse(this);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\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 = global.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 $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\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 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) delete array[index++];\n\n    return array;\n  }\n});\n","var setSpecies = require('../internals/set-species');\n\n// `Array[@@species]` getter\n// https://tc39.es/ecma262/#sec-get-array-@@species\nsetSpecies('Array');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\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    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\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 delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete 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 delete 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","// 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('flatMap');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar global = require('../internals/global');\n\nvar Array = global.Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number != number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number != number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    c = pow(2, -exponent);\n    if (number * c < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent = exponent + eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  while (mantissaLength >= 8) {\n    buffer[index++] = mantissa & 255;\n    mantissa /= 256;\n    mantissaLength -= 8;\n  }\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  while (exponentLength > 0) {\n    buffer[index++] = exponent & 255;\n    exponent /= 256;\n    exponentLength -= 8;\n  }\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  while (nBits > 0) {\n    exponent = exponent * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  while (nBits > 0) {\n    mantissa = mantissa * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa = mantissa + pow(2, mantissaLength);\n    exponent = exponent - eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n","var $ = require('../internals/export');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\n// `ArrayBuffer.isView` method\n// https://tc39.es/ecma262/#sec-arraybuffer.isview\n$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n  isView: ArrayBufferViewCore.isView\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar un$ArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n  return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n  slice: function slice(start, end) {\n    if (un$ArrayBufferSlice && end === undefined) {\n      return un$ArrayBufferSlice(anObject(this), start); // FF fix\n    }\n    var length = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n    var viewSource = new DataView(this);\n    var viewTarget = new DataView(result);\n    var index = 0;\n    while (first < fin) {\n      setUint8(viewTarget, index++, getUint8(viewSource, first++));\n    } return result;\n  }\n});\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.data-view.constructor');\n","var $ = require('../internals/export');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\n\n// `DataView` constructor\n// https://tc39.es/ecma262/#sec-dataview-constructor\n$({ global: true, constructor: true, forced: !NATIVE_ARRAY_BUFFER }, {\n  DataView: ArrayBufferModule.DataView\n});\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Date = global.Date;\nvar getTime = uncurryThis(Date.prototype.getTime);\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n  now: function now() {\n    return getTime(new Date());\n  }\n});\n","var $ = require('../internals/export');\nvar toISOString = require('../internals/date-to-iso-string');\n\n// `Date.prototype.toISOString` method\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit has a broken implementations\n$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {\n  toISOString: toISOString\n});\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar padStart = require('../internals/string-pad').start;\n\nvar RangeError = global.RangeError;\nvar abs = Math.abs;\nvar DatePrototype = Date.prototype;\nvar n$DateToISOString = DatePrototype.toISOString;\nvar getTime = uncurryThis(DatePrototype.getTime);\nvar getUTCDate = uncurryThis(DatePrototype.getUTCDate);\nvar getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear);\nvar getUTCHours = uncurryThis(DatePrototype.getUTCHours);\nvar getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds);\nvar getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes);\nvar getUTCMonth = uncurryThis(DatePrototype.getUTCMonth);\nvar getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds);\n\n// `Date.prototype.toISOString` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit fails here:\nmodule.exports = (fails(function () {\n  return n$DateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n  n$DateToISOString.call(new Date(NaN));\n})) ? function toISOString() {\n  if (!isFinite(getTime(this))) throw RangeError('Invalid time value');\n  var date = this;\n  var year = getUTCFullYear(date);\n  var milliseconds = getUTCMilliseconds(date);\n  var sign = year < 0 ? '-' : year > 9999 ? '+' : '';\n  return sign + padStart(abs(year), sign ? 6 : 4, 0) +\n    '-' + padStart(getUTCMonth(date) + 1, 2, 0) +\n    '-' + padStart(getUTCDate(date), 2, 0) +\n    'T' + padStart(getUTCHours(date), 2, 0) +\n    ':' + padStart(getUTCMinutes(date), 2, 0) +\n    ':' + padStart(getUTCSeconds(date), 2, 0) +\n    '.' + padStart(milliseconds, 3, 0) +\n    'Z';\n} : n$DateToISOString;\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar FORCED = fails(function () {\n  return new Date(NaN).toJSON() !== null\n    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n});\n\n// `Date.prototype.toJSON` method\n// https://tc39.es/ecma262/#sec-date.prototype.tojson\n$({ target: 'Date', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  toJSON: function toJSON(key) {\n    var O = toObject(this);\n    var pv = toPrimitive(O, 'number');\n    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n  }\n});\n","var hasOwn = require('../internals/has-own-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n  defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","'use strict';\nvar global = require('../internals/global');\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\nvar TypeError = global.TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n  anObject(this);\n  if (hint === 'string' || hint === 'default') hint = 'string';\n  else if (hint !== 'number') throw TypeError('Incorrect hint');\n  return ordinaryToPrimitive(this, hint);\n};\n","// TODO: Remove from `core-js@4`\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar un$DateToString = uncurryThis(DatePrototype[TO_STRING]);\nvar getTime = uncurryThis(DatePrototype.getTime);\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (String(new Date(NaN)) != INVALID_DATE) {\n  defineBuiltIn(DatePrototype, TO_STRING, function toString() {\n    var value = getTime(this);\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return value === value ? un$DateToString(this) : INVALID_DATE;\n  });\n}\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar makeBuiltIn = require('../internals/make-built-in');\n\nvar HAS_INSTANCE = wellKnownSymbol('hasInstance');\nvar FunctionPrototype = Function.prototype;\n\n// `Function.prototype[@@hasInstance]` method\n// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance\nif (!(HAS_INSTANCE in FunctionPrototype)) {\n  definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: makeBuiltIn(function (O) {\n    if (!isCallable(this) || !isObject(O)) return false;\n    var P = this.prototype;\n    if (!isObject(P)) return O instanceof this;\n    // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n    while (O = getPrototypeOf(O)) if (P === O) return true;\n    return false;\n  }, HAS_INSTANCE) });\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 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","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\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","var $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// eslint-disable-next-line es-x/no-math-acosh -- required for testing\nvar $acosh = Math.acosh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\nvar LN2 = Math.LN2;\n\nvar FORCED = !$acosh\n  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n  || Math.floor($acosh(Number.MAX_VALUE)) != 710\n  // Tor Browser bug: Math.acosh(Infinity) -> NaN\n  || $acosh(Infinity) != Infinity;\n\n// `Math.acosh` method\n// https://tc39.es/ecma262/#sec-math.acosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  acosh: function acosh(x) {\n    return (x = +x) < 1 ? NaN : x > 94906265.62425156\n      ? log(x) + LN2\n      : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n  }\n});\n","var $ = require('../internals/export');\n\n// eslint-disable-next-line es-x/no-math-asinh -- required for testing\nvar $asinh = Math.asinh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\n\nfunction asinh(x) {\n  return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1));\n}\n\n// `Math.asinh` method\n// https://tc39.es/ecma262/#sec-math.asinh\n// Tor Browser bug: Math.asinh(0) -> -0\n$({ target: 'Math', stat: true, forced: !($asinh && 1 / $asinh(0) > 0) }, {\n  asinh: asinh\n});\n","var $ = require('../internals/export');\n\n// eslint-disable-next-line es-x/no-math-atanh -- required for testing\nvar $atanh = Math.atanh;\nvar log = Math.log;\n\n// `Math.atanh` method\n// https://tc39.es/ecma262/#sec-math.atanh\n// Tor Browser bug: Math.atanh(-0) -> 0\n$({ target: 'Math', stat: true, forced: !($atanh && 1 / $atanh(-0) < 0) }, {\n  atanh: function atanh(x) {\n    return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2;\n  }\n});\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    return sign(x = +x) * pow(abs(x), 1 / 3);\n  }\n});\n","var $ = require('../internals/export');\n\nvar floor = Math.floor;\nvar log = Math.log;\nvar LOG2E = Math.LOG2E;\n\n// `Math.clz32` method\n// https://tc39.es/ecma262/#sec-math.clz32\n$({ target: 'Math', stat: true }, {\n  clz32: function clz32(x) {\n    return (x >>>= 0) ? 31 - floor(log(x + 0.5) * LOG2E) : 32;\n  }\n});\n","var $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// eslint-disable-next-line es-x/no-math-cosh -- required for testing\nvar $cosh = Math.cosh;\nvar abs = Math.abs;\nvar E = Math.E;\n\n// `Math.cosh` method\n// https://tc39.es/ecma262/#sec-math.cosh\n$({ target: 'Math', stat: true, forced: !$cosh || $cosh(710) === Infinity }, {\n  cosh: function cosh(x) {\n    var t = expm1(abs(x) - 1) + 1;\n    return (t + 1 / (t * E * E)) * (E / 2);\n  }\n});\n","var $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// `Math.expm1` method\n// https://tc39.es/ecma262/#sec-math.expm1\n// eslint-disable-next-line es-x/no-math-expm1 -- required for testing\n$({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 });\n","var $ = require('../internals/export');\nvar fround = require('../internals/math-fround');\n\n// `Math.fround` method\n// https://tc39.es/ecma262/#sec-math.fround\n$({ target: 'Math', stat: true }, { fround: fround });\n","var sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n  return n + 1 / EPSILON - 1 / EPSILON;\n};\n\n// `Math.fround` method implementation\n// https://tc39.es/ecma262/#sec-math.fround\n// eslint-disable-next-line es-x/no-math-fround -- safe\nmodule.exports = Math.fround || function fround(x) {\n  var $abs = abs(x);\n  var $sign = sign(x);\n  var a, result;\n  if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n  a = (1 + EPSILON32 / EPSILON) * $abs;\n  result = a - (a - $abs);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (result > MAX32 || result != result) return $sign * Infinity;\n  return $sign * result;\n};\n","var $ = require('../internals/export');\n\n// eslint-disable-next-line es-x/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: BUGGY }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  hypot: function hypot(value1, value2) {\n    var sum = 0;\n    var i = 0;\n    var aLen = arguments.length;\n    var larg = 0;\n    var arg, div;\n    while (i < aLen) {\n      arg = abs(arguments[i++]);\n      if (larg < arg) {\n        div = larg / arg;\n        sum = sum * div * div + 1;\n        larg = arg;\n      } else if (arg > 0) {\n        div = arg / larg;\n        sum += div * div;\n      } else sum += arg;\n    }\n    return larg === Infinity ? Infinity : larg * sqrt(sum);\n  }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-math-imul -- required for testing\nvar $imul = Math.imul;\n\nvar FORCED = fails(function () {\n  return $imul(0xFFFFFFFF, 5) != -5 || $imul.length != 2;\n});\n\n// `Math.imul` method\n// https://tc39.es/ecma262/#sec-math.imul\n// some WebKit versions fails with big numbers, some has wrong arity\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  imul: function imul(x, y) {\n    var UINT16 = 0xFFFF;\n    var xn = +x;\n    var yn = +y;\n    var xl = UINT16 & xn;\n    var yl = UINT16 & yn;\n    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n  }\n});\n","var $ = require('../internals/export');\nvar log10 = require('../internals/math-log10');\n\n// `Math.log10` method\n// https://tc39.es/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n  log10: log10\n});\n","var log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// eslint-disable-next-line es-x/no-math-log10 -- safe\nmodule.exports = Math.log10 || function log10(x) {\n  return log(x) * LOG10E;\n};\n","var $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// `Math.log1p` method\n// https://tc39.es/ecma262/#sec-math.log1p\n$({ target: 'Math', stat: true }, { log1p: log1p });\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n  log2: function log2(x) {\n    return log(x) / LN2;\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 $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar expm1 = require('../internals/math-expm1');\n\nvar abs = Math.abs;\nvar exp = Math.exp;\nvar E = Math.E;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es-x/no-math-sinh -- required for testing\n  return Math.sinh(-2e-17) != -2e-17;\n});\n\n// `Math.sinh` method\n// https://tc39.es/ecma262/#sec-math.sinh\n// V8 near Chromium 38 has a problem with very small numbers\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  sinh: function sinh(x) {\n    return abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2);\n  }\n});\n","var $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\nvar exp = Math.exp;\n\n// `Math.tanh` method\n// https://tc39.es/ecma262/#sec-math.tanh\n$({ target: 'Math', stat: true }, {\n  tanh: function tanh(x) {\n    var a = expm1(x = +x);\n    var b = expm1(-x);\n    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n  }\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","var $ = require('../internals/export');\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n  trunc: function trunc(it) {\n    return (it > 0 ? floor : ceil)(it);\n  }\n});\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.EPSILON` constant\n// https://tc39.es/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n  EPSILON: Math.pow(2, -52)\n});\n","var $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n","var global = require('../internals/global');\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n// eslint-disable-next-line es-x/no-number-isfinite -- safe\nmodule.exports = Number.isFinite || function isFinite(it) {\n  return typeof it == 'number' && globalIsFinite(it);\n};\n","var $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n  isInteger: isIntegralNumber\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","var $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\nvar abs = Math.abs;\n\n// `Number.isSafeInteger` method\n// https://tc39.es/ecma262/#sec-number.issafeinteger\n$({ target: 'Number', stat: true }, {\n  isSafeInteger: function isSafeInteger(number) {\n    return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF;\n  }\n});\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n  MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n  MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es-x/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n  parseFloat: parseFloat\n});\n","var $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.es/ecma262/#sec-number.parseint\n// eslint-disable-next-line es-x/no-number-parseint -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, {\n  parseInt: parseInt\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\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 = global.RangeError;\nvar String = global.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","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar thisNumberValue = require('../internals/this-number-value');\n\nvar un$ToPrecision = uncurryThis(1.0.toPrecision);\n\nvar FORCED = fails(function () {\n  // IE7-\n  return un$ToPrecision(1, undefined) !== '1';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  un$ToPrecision({});\n});\n\n// `Number.prototype.toPrecision` method\n// https://tc39.es/ecma262/#sec-number.prototype.toprecision\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toPrecision: function toPrecision(precision) {\n    return precision === undefined\n      ? un$ToPrecision(thisNumberValue(this))\n      : un$ToPrecision(thisNumberValue(this), precision);\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","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineGetter__: function __defineGetter__(P, getter) {\n      definePropertyModule.f(toObject(this), P, { get: aCallable(getter), enumerable: true, configurable: true });\n    }\n  });\n}\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties').f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n  defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineSetter__: function __defineSetter__(P, setter) {\n      definePropertyModule.f(toObject(this), P, { set: aCallable(setter), enumerable: true, configurable: true });\n    }\n  });\n}\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\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 iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n  fromEntries: function fromEntries(iterable) {\n    var obj = {};\n    iterate(iterable, function (k, v) {\n      createProperty(obj, k, v);\n    }, { AS_ENTRIES: true });\n    return obj;\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 fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- required for testing\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  getOwnPropertyNames: getOwnPropertyNames\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 $isExtensible = require('../internals/object-is-extensible');\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\n$({ target: 'Object', stat: true, forced: Object.isExtensible !== $isExtensible }, {\n  isExtensible: $isExtensible\n});\n","var $ = require('../internals/export');\nvar 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-isfrozen -- safe\nvar $isFrozen = Object.isFrozen;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isFrozen(1); });\n\n// `Object.isFrozen` method\n// https://tc39.es/ecma262/#sec-object.isfrozen\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, {\n  isFrozen: function isFrozen(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true;\n    return $isFrozen ? $isFrozen(it) : false;\n  }\n});\n","var $ = require('../internals/export');\nvar 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-issealed -- safe\nvar $isSealed = Object.isSealed;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isSealed(1); });\n\n// `Object.isSealed` method\n// https://tc39.es/ecma262/#sec-object.issealed\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, {\n  isSealed: function isSealed(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true;\n    return $isSealed ? $isSealed(it) : false;\n  }\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","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupGetter__: function __lookupGetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.get;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupSetter__: function __lookupSetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.set;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-preventextensions -- safe\nvar $preventExtensions = Object.preventExtensions;\nvar FAILS_ON_PRIMITIVES = fails(function () { $preventExtensions(1); });\n\n// `Object.preventExtensions` method\n// https://tc39.es/ecma262/#sec-object.preventextensions\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(it) {\n    return $preventExtensions && isObject(it) ? $preventExtensions(onFreeze(it)) : it;\n  }\n});\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-seal -- safe\nvar $seal = Object.seal;\nvar FAILS_ON_PRIMITIVES = fails(function () { $seal(1); });\n\n// `Object.seal` method\n// https://tc39.es/ecma262/#sec-object.seal\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  seal: function seal(it) {\n    return $seal && isObject(it) ? $seal(onFreeze(it)) : it;\n  }\n});\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\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","'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 $ = 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","var $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n  parseFloat: $parseFloat\n});\n","var $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n  parseInt: $parseInt\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 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","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 = /web0s(?!.*chrome)/i.test(userAgent);\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 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","module.exports = typeof window == 'object' && typeof Deno != 'object';\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 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","'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","var $ = require('../internals/export');\nvar functionApply = require('../internals/function-apply');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n  // eslint-disable-next-line es-x/no-reflect -- required for testing\n  Reflect.apply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n  apply: function apply(target, thisArgument, argumentsList) {\n    return functionApply(aCallable(target), thisArgument, anObject(argumentsList));\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 DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar fails = require('../internals/fails');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\nvar ERROR_INSTEAD_OF_FALSE = fails(function () {\n  // eslint-disable-next-line es-x/no-reflect -- required for testing\n  Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });\n});\n\n// `Reflect.defineProperty` method\n// https://tc39.es/ecma262/#sec-reflect.defineproperty\n$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {\n  defineProperty: function defineProperty(target, propertyKey, attributes) {\n    anObject(target);\n    var key = toPropertyKey(propertyKey);\n    anObject(attributes);\n    try {\n      definePropertyModule.f(target, key, attributes);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n  deleteProperty: function deleteProperty(target, propertyKey) {\n    var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n    return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\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 DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\n\n// `Reflect.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor\n$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n    return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(target) {\n    return objectGetPrototypeOf(anObject(target));\n  }\n});\n","var $ = require('../internals/export');\n\n// `Reflect.has` method\n// https://tc39.es/ecma262/#sec-reflect.has\n$({ target: 'Reflect', stat: true }, {\n  has: function has(target, propertyKey) {\n    return propertyKey in target;\n  }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar $isExtensible = require('../internals/object-is-extensible');\n\n// `Reflect.isExtensible` method\n// https://tc39.es/ecma262/#sec-reflect.isextensible\n$({ target: 'Reflect', stat: true }, {\n  isExtensible: function isExtensible(target) {\n    anObject(target);\n    return $isExtensible(target);\n  }\n});\n","var $ = require('../internals/export');\nvar ownKeys = require('../internals/own-keys');\n\n// `Reflect.ownKeys` method\n// https://tc39.es/ecma262/#sec-reflect.ownkeys\n$({ target: 'Reflect', stat: true }, {\n  ownKeys: ownKeys\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar anObject = require('../internals/an-object');\nvar FREEZING = require('../internals/freezing');\n\n// `Reflect.preventExtensions` method\n// https://tc39.es/ecma262/#sec-reflect.preventextensions\n$({ target: 'Reflect', stat: true, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(target) {\n    anObject(target);\n    try {\n      var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');\n      if (objectPreventExtensions) objectPreventExtensions(target);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n","var $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar fails = require('../internals/fails');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\n// `Reflect.set` method\n// https://tc39.es/ecma262/#sec-reflect.set\nfunction set(target, propertyKey, V /* , receiver */) {\n  var receiver = arguments.length < 4 ? target : arguments[3];\n  var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  var existingDescriptor, prototype, setter;\n  if (!ownDescriptor) {\n    if (isObject(prototype = getPrototypeOf(target))) {\n      return set(prototype, propertyKey, V, receiver);\n    }\n    ownDescriptor = createPropertyDescriptor(0);\n  }\n  if (isDataDescriptor(ownDescriptor)) {\n    if (ownDescriptor.writable === false || !isObject(receiver)) return false;\n    if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {\n      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n      existingDescriptor.value = V;\n      definePropertyModule.f(receiver, propertyKey, existingDescriptor);\n    } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));\n  } else {\n    setter = ownDescriptor.set;\n    if (setter === undefined) return false;\n    call(setter, receiver, V);\n  } return true;\n}\n\n// MS Edge 17-18 Reflect.set allows setting the property to object\n// with non-writable property on the prototype\nvar MS_EDGE_BUG = fails(function () {\n  var Constructor = function () { /* empty */ };\n  var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });\n  // eslint-disable-next-line es-x/no-reflect -- required for testing\n  return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;\n});\n\n$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {\n  set: set\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\nvar objectSetPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Reflect.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.setprototypeof\nif (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {\n  setPrototypeOf: function setPrototypeOf(target, proto) {\n    anObject(target);\n    aPossiblePrototype(proto);\n    try {\n      objectSetPrototypeOf(target, proto);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\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 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 DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n  return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\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","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.set.constructor');\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n  codePointAt: function codePointAt(pos) {\n    return codeAt(this, pos);\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","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar RangeError = global.RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es-x/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  fromCodePoint: function fromCodePoint(x) {\n    var elements = [];\n    var length = arguments.length;\n    var i = 0;\n    var code;\n    while (length > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');\n      elements[i] = code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n    } return join(elements, '');\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 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","'use strict';\nvar $ = require('../internals/export');\nvar $padEnd = require('../internals/string-pad').end;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.padend\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n    return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padStart: function padStart(maxLength /* , fillString = ' ' */) {\n    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toObject = require('../internals/to-object');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar push = uncurryThis([].push);\nvar join = uncurryThis([].join);\n\n// `String.raw` method\n// https://tc39.es/ecma262/#sec-string.raw\n$({ target: 'String', stat: true }, {\n  raw: function raw(template) {\n    var rawTemplate = toIndexedObject(toObject(template).raw);\n    var literalSegments = lengthOfArrayLike(rawTemplate);\n    var argumentsLength = arguments.length;\n    var elements = [];\n    var i = 0;\n    while (literalSegments > i) {\n      push(elements, toString(rawTemplate[i++]));\n      if (i === literalSegments) return join(elements, '');\n      if (i < argumentsLength) push(elements, toString(arguments[i]));\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, '$<a>') !== '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","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","'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 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","// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-right');\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n  trimEnd: trimEnd\n});\n","var $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es-x/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n  trimRight: trimEnd\n});\n","// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-left');\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimStart !== trimStart }, {\n  trimStart: trimStart\n});\n","var $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimLeft` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimleft\n// eslint-disable-next-line es-x/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimLeft !== trimStart }, {\n  trimLeft: trimStart\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 createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.big` method\n// https://tc39.es/ecma262/#sec-string.prototype.big\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, {\n  big: function big() {\n    return createHTML(this, 'big', '', '');\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.blink` method\n// https://tc39.es/ecma262/#sec-string.prototype.blink\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, {\n  blink: function blink() {\n    return createHTML(this, 'blink', '', '');\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.bold` method\n// https://tc39.es/ecma262/#sec-string.prototype.bold\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {\n  bold: function bold() {\n    return createHTML(this, 'b', '', '');\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 createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontcolor` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontcolor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, {\n  fontcolor: function fontcolor(color) {\n    return createHTML(this, 'font', 'color', color);\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.fontsize` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontsize\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {\n  fontsize: function fontsize(size) {\n    return createHTML(this, 'font', 'size', size);\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.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n  italics: function italics() {\n    return createHTML(this, 'i', '', '');\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.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 $ = 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 $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n  strike: function strike() {\n    return createHTML(this, 'strike', '', '');\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.sub` method\n// https://tc39.es/ecma262/#sec-string.prototype.sub\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, {\n  sub: function sub() {\n    return createHTML(this, 'sub', '', '');\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.sup` method\n// https://tc39.es/ecma262/#sec-string.prototype.sup\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, {\n  sup: function sup() {\n    return createHTML(this, 'sup', '', '');\n  }\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n  return function Float32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n  return function Float64Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n  return function Int8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n  return function Int16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n  return function Int32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8ClampedArray(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n}, true);\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n  return function Uint16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n  return function Uint32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar call = require('../internals/function-call');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  var length = arguments.length;\n  return call(\n    $fill,\n    aTypedArray(this),\n    value,\n    length > 1 ? arguments[1] : undefined,\n    length > 2 ? arguments[2] : undefined\n  );\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSpeciesAndList(this, list);\n});\n","var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n  return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","var lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n  var index = 0;\n  var length = lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\nvar typedArrayFrom = require('../internals/typed-array-from');\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n  TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n  && TypedArrayPrototype.values\n  && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n  && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n  return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n  return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  var length = arguments.length;\n  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (typedArraySpeciesConstructor(O))(length);\n  });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n\n// `%TypedArray%.of` method\n// https://tc39.es/ecma262/#sec-%typedarray%.of\nexportTypedArrayStaticMethod('of', function of(/* ...items */) {\n  var index = 0;\n  var length = arguments.length;\n  var result = new (aTypedArrayConstructor(this))(length);\n  while (length > index) result[index] = arguments[index++];\n  return result;\n}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es-x/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es-x/no-typed-arrays -- required for testing\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = arraySlice(aTypedArray(this), start, end);\n  var C = typedArraySpeciesConstructor(this);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\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 aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar un$Sort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!un$Sort && !(fails(function () {\n  un$Sort(new Uint16Array(2), null);\n}) && fails(function () {\n  un$Sort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!un$Sort && !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 74;\n  if (FF) return FF < 67;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 602;\n\n  var array = new Uint16Array(516);\n  var expected = Array(516);\n  var index, mod;\n\n  for (index = 0; index < 516; index++) {\n    mod = index % 4;\n    array[index] = 515 - index;\n    expected[index] = index - 2 * mod + 3;\n  }\n\n  un$Sort(array, function (a, b) {\n    return (a / 4 | 0) - (b / 4 | 0);\n  });\n\n  for (index = 0; index < 516; index++) {\n    if (array[index] !== expected[index]) return true;\n  }\n});\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (y !== y) return -1;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (x !== x) return 1;\n    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n    return x > y;\n  };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  if (comparefn !== undefined) aCallable(comparefn);\n  if (STABLE_SORT) return un$Sort(this, comparefn);\n\n  return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  var C = typedArraySpeciesConstructor(O);\n  return new C(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return apply(\n    $toLocaleString,\n    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n    arraySlice(arguments)\n  );\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return join(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-map.constructor');\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar isExtensible = require('../internals/object-is-extensible');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n  return function WeakMap() {\n    return init(this, arguments.length ? arguments[0] : undefined);\n  };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n  InternalMetadataModule.enable();\n  var WeakMapPrototype = $WeakMap.prototype;\n  var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n  var nativeHas = uncurryThis(WeakMapPrototype.has);\n  var nativeGet = uncurryThis(WeakMapPrototype.get);\n  var nativeSet = uncurryThis(WeakMapPrototype.set);\n  defineBuiltIns(WeakMapPrototype, {\n    'delete': function (key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeDelete(this, key) || state.frozen['delete'](key);\n      } return nativeDelete(this, key);\n    },\n    has: function has(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) || state.frozen.has(key);\n      } return nativeHas(this, key);\n    },\n    get: function get(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n      } return nativeGet(this, key);\n    },\n    set: function set(key, value) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n      } else nativeSet(this, key, value);\n      return this;\n    }\n  });\n}\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-set.constructor');\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\n\n// `WeakSet` constructor\n// https://tc39.es/ecma262/#sec-weakset-constructor\ncollection('WeakSet', function (init) {\n  return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionWeak);\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","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n  clearImmediate: clearImmediate\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setImmediate = require('../internals/task').set;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n  setImmediate: setImmediate\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar microtask = require('../internals/microtask');\nvar aCallable = require('../internals/a-callable');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar process = global.process;\n\n// `queueMicrotask` method\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask\n$({ global: true, enumerable: true, noTargetGet: true }, {\n  queueMicrotask: function queueMicrotask(fn) {\n    validateArgumentsLength(arguments.length, 1);\n    aCallable(fn);\n    var domain = IS_NODE && process.domain;\n    microtask(domain ? domain.bind(fn) : fn);\n  }\n});\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.set-interval');\nrequire('../modules/web.set-timeout');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setInterval = require('../internals/schedulers-fix').setInterval;\n\n// ie9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n  setInterval: setInterval\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTimeout = require('../internals/schedulers-fix').setTimeout;\n\n// ie9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n  setTimeout: setTimeout\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';\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","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar global = require('../internals/global');\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 = global.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 <n,i> state to <m,0>, 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 $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n  toJSON: function toJSON() {\n    return call(URL.prototype.toString, this);\n  }\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","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","module.exports = \"<svg enable-background=\\\"new 0 0 512 512\\\" viewBox=\\\"0 0 512 512\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m147.318 43.031c0-23.728-19.305-43.031-43.034-43.031h-61.25c-23.729 0-43.034 19.303-43.034 43.031v8.156h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v20.26h73.58c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-73.58v20.26h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v20.26h73.58c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-73.58v20.26h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v20.26h73.58c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-73.58v19.273h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v108.714l147.318-147.322z\\\"></path><path d=\\\"m468.965 364.376h-300.435l-147.621 147.624 104.797-.069v-54.182c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v54.163l20.25-.013v-73.788c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v73.768l20.25-.013v-54.116c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v54.097l20.249-.013v-73.722c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v73.702l20.25-.013v-54.051c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v54.031l20.25-.013v-73.656c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v73.636l19.262-.013v-53.985c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v53.966l12.711-.008c23.709-.017 43.002-19.321 43.002-43.032v-61.269c0-23.728-19.305-43.031-43.035-43.031z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\\\"></path><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>715F3224-4AF6-4D83-A726-4ED332A6C28F@3x</title><g id=\\\"Icons\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Status-Icons\\\" transform=\\\"translate(-52.000000, -4.000000)\\\"><g id=\\\"Icon---Valid-signature\\\" transform=\\\"translate(48.000000, 0.000000)\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#FFFFFF\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"24\\\" height=\\\"24\\\"></rect><g id=\\\"circle-check\\\" transform=\\\"translate(4.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" fill=\\\"#D75757\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"8\\\"></circle><g id=\\\"icon-/-operation-/-close\\\" fill=\\\"#FFFFFF\\\"><path d=\\\"M10.8133333,4.18666667 L8,7 L5.18666667,4.18666667 C5.08297506,4.08502857 4.91702494,4.08502857 4.81333333,4.18666667 L4.18666667,4.81333333 C4.08502857,4.91702494 4.08502857,5.08297506 4.18666667,5.18666667 L7,8 L4.18666667,10.8133333 C4.08502857,10.9170249 4.08502857,11.0829751 4.18666667,11.1866667 L4.81333333,11.8133333 C4.91702494,11.9149714 5.08297506,11.9149714 5.18666667,11.8133333 L8,9 L10.8133333,11.8133333 C10.9170249,11.9149714 11.0829751,11.9149714 11.1866667,11.8133333 L11.8133333,11.1866667 C11.9149714,11.0829751 11.9149714,10.9170249 11.8133333,10.8133333 L9,8 L11.8133333,5.18666667 C11.9149714,5.08297506 11.9149714,4.91702494 11.8133333,4.81333333 L11.1866667,4.18666667 C11.0829751,4.08502857 10.9170249,4.08502857 10.8133333,4.18666667 Z\\\" id=\\\"Path\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>0496DA3A-9C54-4BB7-A40B-DB678B321BD5@3x</title><g id=\\\"Icons\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Icon---Valid-signature\\\" transform=\\\"translate(-4.000000, -4.000000)\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#FFFFFF\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"24\\\" height=\\\"24\\\"></rect><g id=\\\"circle-check\\\" transform=\\\"translate(4.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" fill=\\\"#519A64\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"8\\\"></circle><g id=\\\"icon-/-operation-/-checkmark\\\" fill=\\\"#FFFFFF\\\"><polygon id=\\\"Path\\\" points=\\\"6.52333333 9.60388889 4.29277778 7.39166667 3.33333333 8.38166667 6.52333333 11.5716667 13.1111111 4.95944444 12.1516667 4\\\"></polygon></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>931065BD-6AF9-4F89-80B2-27A9395FD293@3x</title><g id=\\\"Icons\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Status-Icons\\\" transform=\\\"translate(-28.000000, -4.000000)\\\"><g id=\\\"Icon---Signature-with-warning\\\" transform=\\\"translate(24.000000, 0.000000)\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#FFFFFF\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"24\\\" height=\\\"24\\\"></rect><g id=\\\"circle-check\\\" transform=\\\"translate(4.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" fill=\\\"#E2B719\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"8\\\"></circle><g id=\\\"warning\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#D8D8D8\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"16\\\" height=\\\"16\\\"></rect><path d=\\\"M7.3,3.5 L8.7,3.5 L8.7,9 L7.3,9 L7.3,3.5 Z M7.3,10.5 L8.7,10.5 L8.7,12.5 L7.3,12.5 L7.3,10.5 Z\\\" id=\\\"Shape\\\" fill=\\\"#FFFFFF\\\" fill-rule=\\\"nonzero\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\\\"></path><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:none;} </style><path d=\\\"M3.5,15h-1C2.2239,15,2,14.7313,2,14.4V9.6C2,9.2687,2.2239,9,2.5,9h1C3.7761,9,4,9.2687,4,9.6v4.8 C4,14.7313,3.7761,15,3.5,15z\\\"></path><path d=\\\"M8,18.5H7c-0.2761,0-0.5-0.2646-0.5-0.5909V6.0909C6.5,5.7646,6.7239,5.5,7,5.5h1c0.2761,0,0.5,0.2646,0.5,0.5909v11.8182 C8.5,18.2354,8.2761,18.5,8,18.5z\\\"></path><path d=\\\"M12.5,21h-1c-0.2761,0-0.5-0.2687-0.5-0.6V3.6C11,3.2687,11.2239,3,11.5,3h1C12.7761,3,13,3.2687,13,3.6v16.8 C13,20.7313,12.7761,21,12.5,21z\\\"></path><path d=\\\"M17.5,11h-2V6c0-0.2761,0.2239-0.5,0.5-0.5h1c0.2761,0,0.5,0.2239,0.5,0.5V11z\\\"></path><path d=\\\"M22,11h-2V9.5C20,9.2239,20.2239,9,20.5,9h1C21.7761,9,22,9.2239,22,9.5V11z\\\"></path><g><path d=\\\"M20.4292,19.4717l-4.9009-4.9009c-0.2087-0.2087-0.2087-0.5472,0-0.7559l0.6583-0.6583 c0.2087-0.2087,0.5472-0.2087,0.7559,0l4.9009,4.9009c0.2087,0.2087,0.2087,0.5472,0,0.7559l-0.6583,0.6583 C20.9764,19.6804,20.638,19.6804,20.4292,19.4717z\\\"></path><path d=\\\"M16.9425,19.4717l4.9009-4.9009c0.2087-0.2087,0.2087-0.5472,0-0.7559l-0.6583-0.6583 c-0.2087-0.2087-0.5472-0.2087-0.7559,0l-4.9009,4.9009c-0.2087,0.2087-0.2087,0.5472,0,0.7559l0.6583,0.6583 C16.3953,19.6804,16.7338,19.6804,16.9425,19.4717z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 21\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 2.92791V19.0643C7 20.1297 7.81329 20.9961 8.81334 20.9961H14.1867C15.1867 20.9961 16 20.1297 16 19.0643V2.92791C16 1.86246 15.1867 0.996094 14.1867 0.996094L8.81334 0.996094C7.81329 0.996094 7 1.86246 7 2.92791ZM14.1867 2.92791V19.0643C14.1867 19.1161 14.1721 19.1515 14.1721 19.167C14.1721 19.1734 14.174 19.177 14.1794 19.1779L8.85505 19.1888C8.84598 19.1825 8.81334 19.1415 8.81334 19.0643V17.3597L11.24 17.3598C11.3652 17.3598 11.4666 17.258 11.4666 17.1325V15.7689C11.4666 15.6434 11.3652 15.5416 11.24 15.5416L8.81334 15.5415V13.7234L12.1466 13.7234C12.2718 13.7234 12.3733 13.6217 12.3733 13.4962V12.1325C12.3733 12.007 12.2718 11.9052 12.1466 11.9052L8.81334 11.9052V10.087L11.24 10.0871C11.3652 10.0871 11.4666 9.98531 11.4666 9.85979V8.49616C11.4666 8.37064 11.3652 8.26888 11.24 8.26888L8.81334 8.26882V6.45064L12.1466 6.4507C12.2718 6.4507 12.3733 6.34895 12.3733 6.22343V4.85979C12.3733 4.73427 12.2718 4.63252 12.1466 4.63252L8.81334 4.63246V2.92791C8.81425 2.85609 8.83873 2.817 8.8206 2.81427L14.1449 2.80337C14.154 2.80973 14.1867 2.85064 14.1867 2.92791Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M1.49324 18.0416C1.49324 18.1671 1.39176 18.2689 1.26657 18.2689H0.227122C0.0251827 18.2689 -0.0759488 18.5137 0.0668441 18.6569L2.23964 20.8354C2.32816 20.9242 2.47167 20.9242 2.56019 20.8354L4.73299 18.6569C4.87578 18.5137 4.77465 18.2689 4.57271 18.2689H3.53326C3.40807 18.2689 3.30659 18.1671 3.30659 18.0416L3.30659 16.678C3.30659 16.5525 3.2051 16.4507 3.07992 16.4507H1.71991C1.59473 16.4507 1.49324 16.5525 1.49324 16.678L1.49324 18.0416Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M3.30659 3.9507C3.30659 3.82518 3.40807 3.72343 3.53326 3.72343L4.57271 3.72343C4.77465 3.72343 4.87578 3.47862 4.73298 3.33545L2.56019 1.15686C2.47167 1.06811 2.32816 1.06811 2.23964 1.15686L0.0668439 3.33545C-0.075949 3.47862 0.0251829 3.72343 0.227123 3.72343L1.26657 3.72343C1.39176 3.72343 1.49324 3.82518 1.49324 3.9507L1.49324 5.31434C1.49324 5.43986 1.59472 5.54161 1.71991 5.54161L3.07992 5.54161C3.2051 5.54161 3.30659 5.43986 3.30659 5.31434L3.30659 3.9507Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M1.49324 12.1325C1.49324 12.007 1.59472 11.9052 1.71991 11.9052H3.07992C3.2051 11.9052 3.30659 12.007 3.30659 12.1325V13.9507C3.30659 14.0762 3.2051 14.178 3.07992 14.178H1.71991C1.59472 14.178 1.49324 14.0762 1.49324 13.9507V12.1325Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M1.49324 7.58707C1.49324 7.46155 1.59472 7.35979 1.71991 7.35979H3.07992C3.2051 7.35979 3.30659 7.46155 3.30659 7.58707V9.40525C3.30659 9.53077 3.2051 9.63252 3.07992 9.63252H1.71991C1.59472 9.63252 1.49324 9.53077 1.49324 9.40525V7.58707Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill=\\\"default\\\" d=\\\"M21.5 10H2.5V8H21.5V10Z\\\"></path><path fill=\\\"default\\\" d=\\\"M11.2071 5.70711L7.20711 9.70711L5.79289 8.29289L9.79289 4.29289L11.2071 5.70711Z\\\"></path><path fill=\\\"default\\\" d=\\\"M19.2071 5.70711L15.2071 9.70711L13.7929 8.29289L17.7929 4.29289L19.2071 5.70711Z\\\"></path><path fill=\\\"default\\\" d=\\\"M17.0208 17.107C16.8256 16.9117 16.8256 16.5951 17.0208 16.3999L17.8996 15.5211C18.0948 15.3259 18.4114 15.3259 18.6067 15.5211L23.6357 20.5502C23.8309 20.7454 23.8309 21.062 23.6357 21.2573L22.7569 22.136C22.5617 22.3313 22.2451 22.3313 22.0498 22.136L17.0208 17.107Z\\\"></path><path fill=\\\"default\\\" d=\\\"M21.896 15.6755C22.0913 15.4802 22.4079 15.4802 22.6031 15.6755L23.4819 16.5542C23.6771 16.7495 23.6771 17.0661 23.4819 17.2613L18.5578 22.1854C18.3626 22.3807 18.046 22.3807 17.8507 22.1854L16.972 21.3067C16.7767 21.1114 16.7767 20.7948 16.972 20.5996L21.896 15.6755Z\\\"></path><path fill=\\\"default\\\" d=\\\"M4.5 6H20.5V13H22.5V6C22.5 4.89543 21.6046 4 20.5 4H4.5C3.39543 4 2.5 4.89543 2.5 6V18C2.5 19.1046 3.39543 20 4.5 20H15.5V18H4.5V6Z\\\"></path><path d=\\\"M8.5 12.5C8.5 12.2239 8.72386 12 9 12H10C10.2761 12 10.5 12.2239 10.5 12.5V15.5C10.5 15.7761 10.2761 16 10 16H9C8.72386 16 8.5 15.7761 8.5 15.5V12.5Z\\\"></path><path d=\\\"M14.5 12.5C14.5 12.2239 14.7239 12 15 12H16C16.2761 12 16.5 12.2239 16.5 12.5V15.5C16.5 15.7761 16.2761 16 16 16H15C14.7239 16 14.5 15.7761 14.5 15.5V12.5Z\\\"></path><path d=\\\"M11.5 11.5C11.5 11.2239 11.7239 11 12 11H13C13.2761 11 13.5 11.2239 13.5 11.5V16.5C13.5 16.7761 13.2761 17 13 17H12C11.7239 17 11.5 16.7761 11.5 16.5V11.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill=\\\"default\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 7C3.44772 7 3 7.44772 3 8V16C3 16.5523 3.44772 17 4 17H20C20.5523 17 21 16.5523 21 16V8C21 7.44772 20.5523 7 20 7H4ZM13.8562 8.94727L15.0937 10.1847L13.2375 12.0409L15.0937 13.897L13.8562 15.1345L12.0001 13.2783L10.1439 15.1344L8.90649 13.897L10.7626 12.0409L8.9065 10.1847L10.1439 8.94727L12.0001 10.8034L13.8562 8.94727Z\\\"></path><path d=\\\"M3 4.5C3 3.94772 3.44772 3.5 4 3.5H5V5.25H3V4.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 3.5H9V5.25H7V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 3.5H13V5.25H11V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 3.5H17V5.25H15V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 3.5H20C20.5523 3.5 21 3.94772 21 4.5V5.25H19V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 19.5V18.75H5V20.5H4C3.44772 20.5 3 20.0523 3 19.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 18.75H9V20.5H7V18.75Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 18.75H13V20.5H11V18.75Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 18.75H17V20.5H15V18.75Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 18.75H21V19.5C21 20.0523 20.5523 20.5 20 20.5H19V18.75Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M16.49,13.54h1.83V9.25s0,0,0-.06a.59.59,0,0,0,0-.23.32.32,0,0,0,0-.09.8.8,0,0,0-.18-.27l-5.5-5.5a.93.93,0,0,0-.26-.18l-.09,0a1,1,0,0,0-.24,0l-.05,0H5.49A1.84,1.84,0,0,0,3.66,4.67V19.33a1.84,1.84,0,0,0,1.83,1.84H11V19.33H5.49V4.67H11V9.25a.92.92,0,0,0,.92.92h4.58Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M20.21,17.53,17.05,15a.37.37,0,0,0-.6.29v1.6H12.78v1.84h3.67v1.61a.37.37,0,0,0,.6.29l3.16-2.53A.37.37,0,0,0,20.21,17.53Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-10 -15 51 49\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Triangle</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(0.000000, -3.000000)\\\" fill=\\\"#000000\\\"><polygon transform=\\\"translate(12.000000, 12.000000) scale(1, -1) translate(-12.000000, -12.000000) \\\" points=\\\"12 3 24 21 0 21\\\"></polygon></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 18 18\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0 4H2V6H0V4ZM0 8H2V10H0V8ZM0 12H2V14H0V12ZM0 0H2V2H0V0ZM8 0H10V2H8V0ZM4 0H6V2H4V0ZM12 0H14V2H12V0ZM16 0H18V2H16V0ZM16 12H18V14H16V12ZM16 8H18V10H16V8ZM16 4H18V6H16V4ZM0 16V18H18V16H0Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 18 18\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14 0V2H12V0H14ZM10 0V2H8V0H10ZM6 0V2H4V0H6ZM18 0V2H16V0H18ZM18 8V10H16V8H18ZM18 4V6H16V4H18ZM18 12V14H16V12H18ZM18 16V18H16V16H18ZM6 16V18H4V16H6ZM10 16V18H8V16H10ZM14 16V18H12V16H14ZM2 0H0V18H2V0Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 18 18\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 18V16H6V18H4ZM8 18V16H10V18H8ZM12 18V16H14V18H12ZM0 18V16H2V18H0ZM0 10V8H2V10H0ZM0 14V12H2V14H0ZM0 6V4H2V6H0ZM0 2V0H2V2H0ZM12 2V0H14V2H12ZM8 2V0H10V2H8ZM4 2V0H6V2H4ZM16 18H18V0H16V18Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 18 18\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18 14H16V12H18V14ZM18 10H16V8H18V10ZM18 6H16V4H18V6ZM18 18H16V16H18V18ZM10 18H8V16H10V18ZM14 18H12V16H14V18ZM6 18H4V16H6V18ZM2 18H0V16H2V18ZM2 6H0V4H2V6ZM2 10H0V8H2V10ZM2 14H0V12H2V14ZM18 2V0H0V2H18Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 256 256\\\" style=\\\"enable-background:new 0 0 256 256;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill-rule:evenodd;clip-rule:evenodd;} </style><g><g><rect x=\\\"74.6\\\" y=\\\"63.7\\\" class=\\\"st0\\\" width=\\\"104\\\" height=\\\"20.4\\\"></rect></g><g><rect x=\\\"74.6\\\" y=\\\"114.4\\\" class=\\\"st0\\\" width=\\\"104\\\" height=\\\"20.4\\\"></rect></g><g><rect x=\\\"74.6\\\" y=\\\"169.3\\\" class=\\\"st0\\\" width=\\\"39\\\" height=\\\"20.4\\\"></rect></g></g><path class=\\\"st0\\\" d=\\\"M186.6,29.7h-120c-9.9,0-18,8.1-18,18v158c0,9.9,8.1,18,18,18h120c9.9,0,18-8.1,18-18v-158 C204.6,37.8,196.5,29.7,186.6,29.7z M104.3,206.9H69.5c-3.3,0-6-2.7-6-6V52.6c0-3.3,2.7-6,6-6h114.2c3.3,0,6,2.7,6,6v61.8h-85.4 C104.3,114.4,104.3,206.9,104.3,206.9z M177.8,204.6l-23.4-23.4l-23.3,23.3l-12-11.9l23.3-23.3l-23.2-23.2l12-12l23.2,23.2 l23.3-23.3l11.9,12l-23.3,23.3l23.4,23.4L177.8,204.6z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" enable-background=\\\"new 0 0 24 24\\\" xml:space=\\\"preserve\\\"><image width=\\\"24\\\" height=\\\"24\\\" x=\\\"0\\\" y=\\\"0\\\" href=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElN RQfjAgwEFzfWJaYRAAAAiUlEQVQ4y+3Suw2DMBSF4d8OQ7inRYrZIfIMcXqWRBmCBehBYodQ8DAi 2L59chq7+I6u/IB/ojHb5ibidxo0PYAWcR+cEvAXijetrGDxR54rfPF04YKHW9I8KRhyHIp1raix QJfmYcKIoqRiYkjx48P1e8XE+fnQjgcfiPPz11imJPhVHE6OfyQzAWIf5W+O+OsAAAAldEVYdGRh dGU6Y3JlYXRlADIwMTktMDItMTJUMTE6MjM6NTUtMDc6MDACNDWIAAAAJXRFWHRkYXRlOm1vZGlm eQAyMDE5LTAyLTEyVDExOjIzOjU1LTA3OjAwc2mNNAAAAABJRU5ErkJggg==\\\"></image></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><polygon fill=\\\"none\\\" points=\\\"0 0 24 0 24 24 0 24\\\"></polygon><path d=\\\"M16.7375649,4 L21.236068,11.9970061 L16.7348397,19.9994626 L7.5018203,20.0006467 L3,11.9970061 L7.49832909,4.0003479 L16.7375649,4 Z M8.73606798,5.99700608 L7.63018536,7.88746878 L13.4671162,17.9973295 L15.5,17.9970061 L16.5126451,16.2389926 L10.5994314,5.99700608 L8.73606798,5.99700608 Z M6.6434864,9.58428881 L5.23606798,11.9970061 L8.73606798,17.9970061 L11.5579671,17.9970061 L6.6434864,9.58428881 Z M17.5249398,14.5298193 L19,11.9970061 L15.5,5.99700608 L12.5985178,5.99700608 L17.5249398,14.5298193 Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m16.9739609 5.6099999h-2.5857864v-2h4 2v6h-2v-2.58578644l-13.36396104 13.36396104-1.41421356-1.4142136z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m16 12.5v5h-2v-5h-8.5c-.82842712 0-1.5-.6715729-1.5-1.5v-7c0-.82842712.67157288-1.5 1.5-1.5h13c.8284271 0 1.5.67157288 1.5 1.5v7c0 .8284271-.6715729 1.5-1.5 1.5zm-6.97914442 5.0009132h6.97914442v1.9999808h-6.82261926l1.75017416 1.7501741-1.41421359 1.4142136-4.24264068-4.2426407 4.24264068-4.2426407 1.41421359 1.4142136z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m12 21c-4.97056275 0-9-4.0294373-9-9 0-4.97056275 4.02943725-9 9-9 4.9705627 0 9 4.02943725 9 9 0 4.9705627-4.0294373 9-9 9zm0-2c3.8659932 0 7-3.1340068 7-7 0-3.86599325-3.1340068-7-7-7-3.86599325 0-7 3.13400675-7 7 0 3.8659932 3.13400675 7 7 7z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m19.35 10.04c-.68-3.45-3.71-6.04-7.35-6.04-2.89 0-5.4 1.64-6.65 4.04-3.01.32-5.35 2.87-5.35 5.96 0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zm-.35 7.96h-13c-2.21 0-4-1.79-4-4s1.79-4 4-4h.71c.66-2.31 2.77-4 5.29-4 3.04 0 5.5 2.46 5.5 5.5v.5h1.5c1.66 0 3 1.34 3 3s-1.34 3-3 3z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#000000;}</style></defs><title>icon - tool - measurement - area - line</title><path class=\\\"cls-1\\\" d=\\\"M19.14,2H4.86A2.86,2.86,0,0,0,2,4.86V19.14A2.86,2.86,0,0,0,4.86,22H19.14A2.86,2.86,0,0,0,22,19.14V4.86A2.86,2.86,0,0,0,19.14,2ZM4,4h6.22L4,10.22ZM4,18.71V13H4l9-9,0,0h5.71ZM5.54,20,20,5.54v5.69L11.23,20Zm8.52,0L20,14.06V20Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M10.22,4H13L4,13V10.22ZM20,5.54V4H18.71L4,18.71V20H5.54ZM14.06,20,20,14.06V11.23L11.23,20Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\"><g><path d=\\\"M18,7.41421354 L7.41421357,18 L10,18 L10,20 L4.00000003,20 L4,14 L6,14 L6,16.5857864 L16.5857864,6 L14,6 L14,4 L20,4 L20,9.99999997 L18,9.99999997 L18,7.41421354 Z\\\"></path></g></g></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm0,18a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M15.81,5a8.1,8.1,0,0,0-2-.76l-9.59,9.6a8,8,0,0,0,.77,2L15.83,5Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M19,8.11,8.1,19a8.14,8.14,0,0,0,2.28.86l9.44-9.51A8,8,0,0,0,19,8.11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m22 20.7c-4.8 0-9.7 0-14.5 0-.2 0-.3 0-.4-.2-1.7-1.7-3.3-3.3-5-5 0 0-.1-.1-.1-.1l.2-.2c4-4 7.9-7.9 11.9-11.9.1-.1.2-.1.4 0 2.5 2.5 4.9 4.9 7.4 7.4 0 0 .1.1.2.1-2.7 2.7-5.4 5.4-8.1 8.1h8.1c-.1.7-.1 1.2-.1 1.8zm-17.5-5.2 3.5 3.5h.2 3.1c.1 0 .2 0 .3-.1.9-.9 1.7-1.7 2.6-2.6 0 0 .1-.1.1-.1-1.8-1.8-3.5-3.5-5.2-5.2-1.6 1.4-3.1 2.9-4.6 4.5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m10.0940522 17.9587003-3.74999998-3.75 9.91620028-9.9162003c.39-.39 1.02-.39 1.41 0l2.34 2.34c.39.39.39 1.02 0 1.41zm-1.06066015 1.0606602-.98298815.9829881h-5.02538467c-.56610249 0-1.02501923-.4589167-1.02501923-1.0250192 0-.2718674.10800496-.5325985.30025253-.7248294l2.98313952-2.9831395z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9.66172796 8.5226409 4.24264064-4.24264069 7.0710679 7.07106779-4.2426407 4.2426407c-.3905243.3905243-1.0236893.3905243-1.4142136 0l-5.65685424-5.65685424c-.3905243-.39052429-.3905243-1.02368927 0-1.41421356zm-.70710679 2.1213203 5.65685423 5.6568543-5.01218758 2.5060938c-.38498866.1924943-.84996012.1170398-1.15432038-.1873204l-1.80911966-1.8091197c-.30436026-.3043602-.37981474-.7693317-.18732041-1.1543204zm-2.82842712 7.0710679 1.41421356 1.4142135c-1.31993275 1.0370899-2.14489066 1.3906433-2.47487373 1.0606602-.32998308-.3299831.02357031-1.154941 1.06066017-2.4748737z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m14 17h2v2h-7v-2h2v-9h-3v2h-2v-2-3h13v3 2h-2v-2h-3z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m19 3c1.1 0 2 .9 2 2v14c0 1.1-.9 2-2 2h-14c-1.1 0-2-.9-2-2v-14c0-1.1.9-2 2-2zm-4.9471874 12.3412499.7890625 2.34375h2.4921875l-4.2578125-11.37499996h-2.171875l-4.23437502 11.37499996h2.4921875l.78125-2.34375zm-3.4765625-1.8984375 1.4140625-4.25781246 1.4296875 4.25781246z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m21 19v-14c0-1.1-.9-2-2-2h-14c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zm-12.5-5.5 2.5 3.01 3.5-4.51 4.5 6h-14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m2 11h20v2h-20z\\\" transform=\\\"matrix(.70710678 -.70710678 .70710678 .70710678 -4.970563 12)\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g><polygon fill=\\\"none\\\" points=\\\"0 0 24 0 24 24 0 24\\\"></polygon><path d=\\\"M11.2229827,11.7207264 L11.5361061,13.6977095 L9.59932057,14.0850666 L9.00384592,15.156921 L7.27155933,14.1567849 L8.30016792,12.3052894 L11.2229827,11.7207264 Z M13.1857389,11.3281752 L15.3713261,10.8910577 L16.1895264,9.41882416 L17.9218087,10.4189578 L16.670298,12.6708712 L13.4988623,13.3051583 L13.1857389,11.3281752 Z M6.30014126,15.9053374 L8.03242783,16.9054735 L6.2883676,20.0447819 L4.54005311,19.0734961 L6.30014126,15.9053374 Z M17.1612077,7.67042358 L18.6851109,4.92837923 L20.4332779,5.89993073 L18.89349,8.67055726 L17.1612077,7.67042358 Z\\\"></path></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m16.7375649 4 4.4985031 7.9970061-4.5012283 8.0024565-9.2330194.0011841-4.5018203-8.0036406 4.49832909-7.9966582zm-8.00149692 1.99700608-3.5 6.00000002 3.5 6h6.76393202l3.5-6-3.5-6.00000002z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m2.75941257 13.4482295-.54944226-1.9230478 7.44464759-2.12704222 6.0000767 4.00005112 6.5594501-1.8730507.5491501 1.9231314-7.4486065 2.1269493-5.99992332-3.9999489z\\\" transform=\\\"matrix(.70710678 -.70710678 .70710678 .70710678 -5.172166 12.486647)\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#000000;}</style></defs><title>icon - tool - measurement - area - line</title><path class=\\\"cls-1\\\" d=\\\"M19.14,2H4.86A2.86,2.86,0,0,0,2,4.86V19.14A2.86,2.86,0,0,0,4.86,22H19.14A2.86,2.86,0,0,0,22,19.14V4.86A2.86,2.86,0,0,0,19.14,2ZM4,4h6.22L4,10.22ZM4,18.71V13H4l9-9,0,0h5.71ZM5.54,20,20,5.54v5.69L11.23,20Zm8.52,0L20,14.06V20Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M10.22,4H13L4,13V10.22ZM20,5.54V4H18.71L4,18.71V20H5.54ZM14.06,20,20,14.06V11.23L11.23,20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m10.0940522 17.9587003-3.74999998-3.75 9.91620028-9.9162003c.39-.39 1.02-.39 1.41 0l2.34 2.34c.39.39.39 1.02 0 1.41zm-1.06066015 1.0606602-.98298815.9829881h-5.02538467c-.56610249 0-1.02501923-.4589167-1.02501923-1.0250192 0-.2718674.10800496-.5325985.30025253-.7248294l2.98313952-2.9831395zm3.26686045-1.0193605h9v2h-11z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m17.5030483 9.00304833v1.99999997h1v-1.99999997h2v2.99999997h1v-2.99999997h1c.5522848 0 1 .44771525 1 .99999997v4c0 .5522848-.4477152 1-1 1h-20.99999997c-.55228475 0-1-.4477152-1-1v-4c0-.55228472.44771525-.99999997 1-.99999997h1v2.99999997h1v-2.99999997h2v1.99999997h1v-1.99999997h2v1.99999997h1v-1.99999997h1.99999997v2.99999997h1v-2.99999997h2v1.99999997h1v-1.99999997z\\\" transform=\\\"matrix(.70710678 -.70710678 .70710678 .70710678 -4.971825 12.003048)\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9.70864175 17.0129114h12.29135825v2h-12.14119637c-.00132452.0293711-.00277091.0589835-.00433457.0888699-.11198252 2.140328-1.54526173 3.4612105-3.2460842 3.1445917-1.4379189-.2676777-2.36548818-1.5917777-2.25554648-3.2334616h-2.35283838v-2h2.85101727c.48375742-1.3216041 1.16546925-2.3853848 2.02795171-3.2480075-.18264567-.7591819-.33094514-1.4552523-.44245747-2.1059993-.9997212.2428217-2.08194563.3540068-3.23651146.3540068v-2c1.10093119 0 2.10387085-.11329307 3.00514278-.36403478-.067061-1.39749009.10114233-2.64169381.54012175-3.99140074.87824528-2.70029457 2.67433987-4.143459 4.41683292-3.50917134 1.7190901.62576874 2.1426897 2.84674853 1.0095184 5.01231865-.9488917 1.8133989-2.24059781 3.04654081-3.81728229 3.81582451.06790982.4503952.1575239.9279247.26809133 1.4410646.1343057-.0803068.27128125-.1579953.41089297-.2331767.0955675-.0514634.17416199-.0940935.35123288-.1903527.03012452-.0163737.03012452-.0163737.06032177-.0327821 2.53273324-1.3760604 3.63912134-1.7128543 4.87690454-.7320646.4256558.3372795.6993633.7334951.8408663 1.1649785.1573732-.1151393.3108908-.221996.4636277-.3224267 1.5449353-1.015857 2.9140936-1.2813901 4.0466138-.3145683 1.3543316 1.15618 1.1007616 2.8053072-.3680178 4.5663418l-1.535906-1.2810123c.8571484-1.0277023.9280413-1.4887639.6053709-1.7642245-.2529064-.2159039-.7655734-.1164778-1.6492414.4645694-.3820124.2511885-.7916868.5675309-1.2936989.9899347-.1417474.1192693-1.1521636.9929139-1.4170698 1.2079504-.9360832.7598614-2.1683444-.4799627-1.4027696-1.4113791.6859267-.8345146.7958988-1.4729018.4681355-1.7326135-.2727291-.216104-.9839554.0003993-2.6800163.9218869-.0299657.0162827-.0299657.0162827-.0600012.032608-.1779933.0967622-.2593885.1409114-.35809563.1940655-.30441957.163931-.59162724.3413674-.86158259.5349668.28483671 1.1242685.47243846 1.9072203.58864967 2.5326976zm-2.69257941 0h.65153892c-.05070864-.2442087-.11255084-.5178056-.18713872-.8311195-.16893029.2580643-.32374025.5344537-.4644002.8311195zm.84029009 2h-1.49615156c-.10563245.7406814.19047954 1.1883605.61420846 1.2672403.43307507.0806197.82635111-.279308.8819431-1.2672403zm2.54320537-12.77954768c.6348876-1.21331479.4730078-2.0620683.0784308-2.20569892-.4476461-.16294835-1.25839789.48849183-1.83079041 2.24839701-.26955538.82878773-.41470838 1.62140209-.44392294 2.47338461.88768275-.59409074 1.6219516-1.41849581 2.19628255-2.5160827z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m4 4h16v16h-16zm2 2v12h12v-12z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m13.9776924 14.3214286h-4.62417584l-.87912088 2.6785714h-2.8043956l4.76483512-13h2.4439561l4.7912088 13h-2.8043956zm-3.9120879-2.1696429h3.2l-1.6087912-4.86607141zm-5.0656045 7.0964872 1.12111398-.9965458c.64744475.7283754 1.1743348 1.0482729 1.53944301 1.0482729.13613334 0 .23785292-.0714786.52575258-.3969304.0283085-.0320322.0283085-.0320322.05777173-.0653362.51294587-.5789528.87737768-.8377334 1.51647569-.8377334.66218591 0 1.01074831.2517395 1.60110261.8912899.3096457.3354496.4110833.4087101.4988974.4087101.087814 0 .1892516-.0732605.4988974-.4087101.5903542-.6395504.9389166-.8912899 1.6011026-.8912899.6621859 0 1.0107483.2517395 1.6011026.8912899.3096457.3354496.4110833.4087101.4988974.4087101.0585427 0 .4615748-.3494243 1.2090963-1.0482729l1.0623779.9965458c-.6113281.6604372-1.6092883 1.5517271-2.2714742 1.5517271-.662186 0-1.0107484-.2517395-1.6011026-.8912899-.3096458-.3354496-.4110834-.4087101-.4988974-.4087101-.0878141 0-.1892517.0732605-.4988974.4087101-.5903543.6395504-.9389167.8912899-1.6011026.8912899-.662186 0-1.0107484-.2517395-1.6011026-.8912899-.30964576-.3354496-.41108337-.4087101-.49889741-.4087101-.06976189 0-.1491155.0563485-.39374653.3324591-.02787011.0315035-.02787011.0315035-.05700605.0644713-.55406463.6263339-.94788076.9030696-1.64924742.9030696-.87606826 0-1.75627761-.5344128-2.66055699-1.5517271z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m13.5 15h4.5c1.1045695 0 2 .8954305 2 2v1h-16v-1c0-1.1045695.8954305-2 2-2h4.5v-5.33681558c-1.18247367-.56173197-2-1.76698644-2-3.16318442 0-1.93299662 1.5670034-3.5 3.5-3.5s3.5 1.56700338 3.5 3.5c0 1.39619798-.8175263 2.60145245-2 3.16318442zm-8.5 4h14v2h-14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m20 2h-16c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2v-12c0-1.1-.9-2-2-2z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9.52134855 16-.71695295 3h-2.8043956l1.02103611-3zm-1.13893097-4 2.38241762-7h2.443956l2.3956044 7h-2.3895877l-1.2279947-3.71428571-1.2145741 3.71428571zm8.59089482 4 1.0266876 3h-2.8043956l-.7241225-3zm-11.9733124-3h14v2h-14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m14.3076923 14.3214286h-4.62417582l-.87912088 2.6785714h-2.8043956l4.7648352-13h2.443956l4.7912088 13h-2.8043956zm-3.9120879-2.1696429h3.2l-1.6087912-4.86607141zm-5.3956044 6.3482143h14v2h-14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m21 6h-2v9h-13v2c0 .55.45 1 1 1h11l4 4v-15c0-.55-.45-1-1-1zm-4 6v-9c0-.55-.45-1-1-1h-13c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 284.929 284.929\\\" style=\\\"enable-background:new 0 0 284.929 284.929;\\\" xml:space=\\\"preserve\\\"><path d=\\\"M282.082,76.511l-14.274-14.273c-1.902-1.906-4.093-2.856-6.57-2.856c-2.471,0-4.661,0.95-6.563,2.856L142.466,174.441 L30.262,62.241c-1.903-1.906-4.093-2.856-6.567-2.856c-2.475,0-4.665,0.95-6.567,2.856L2.856,76.515C0.95,78.417,0,80.607,0,83.082 c0,2.473,0.953,4.663,2.856,6.565l133.043,133.046c1.902,1.903,4.093,2.854,6.567,2.854s4.661-0.951,6.562-2.854L282.082,89.647 c1.902-1.903,2.847-4.093,2.847-6.565C284.929,80.607,283.984,78.417,282.082,76.511z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m7 10 5 5 5-5z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 284.929 284.929\\\" style=\\\"enable-background:new 0 0 284.929 284.929;\\\" xml:space=\\\"preserve\\\"><path d=\\\"M282.082,195.285L149.028,62.24c-1.901-1.903-4.088-2.856-6.562-2.856s-4.665,0.953-6.567,2.856L2.856,195.285 C0.95,197.191,0,199.378,0,201.853c0,2.474,0.953,4.664,2.856,6.566l14.272,14.271c1.903,1.903,4.093,2.854,6.567,2.854 c2.474,0,4.664-0.951,6.567-2.854l112.204-112.202l112.208,112.209c1.902,1.903,4.093,2.848,6.563,2.848 c2.478,0,4.668-0.951,6.57-2.848l14.274-14.277c1.902-1.902,2.847-4.093,2.847-6.566 C284.929,199.378,283.984,197.188,282.082,195.285z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m17 3h-10c-1.1 0-1.99.9-1.99 2l-.01 16 7-5 7 5v-16c0-1.1-.9-2-2-2z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9 16.17-4.17-4.17-1.42 1.41 5.59 5.59 12-12-1.41-1.41z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m16.59 8.59-4.59 4.58-4.59-4.58-1.41 1.41 6 6 6-6z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m15.41 7.41-1.41-1.41-6 6 6 6 1.41-1.41-4.58-4.59z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m10 6-1.41 1.41 4.58 4.59-4.58 4.59 1.41 1.41 6-6z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m12 8-6 6 1.41 1.41 4.59-4.58 4.59 4.58 1.41-1.41z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m19 6.41-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m20 2h-16c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2v-12c0-1.1-.9-2-2-2z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m16 1h-12c-1.1 0-2 .9-2 2v14h2v-14h12zm3 4h-11c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2zm0 16h-11v-14h11z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M19,7c0-1.103-0.897-2-2-2H7V2H5v3H2v2h3h2h10v15h2v-3h3v-2h-3V7z\\\"></path><path d=\\\"M5,9v8c0,1.103,0.897,2,2,2h8v-2H7V9H5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-12h-12zm13-15h-3.5l-1-1h-5l-1 1h-3.5v2h14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m3 17.25v3.75h3.75l11.06-11.06-3.75-3.75zm17.71-10.21c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11.1716 2H4C2.8954 2 2 2.8954 2 4V18C2 19.1046 2.8954 20 4 20H8V18H4V4H11V7.5C11 7.7761 11.2239 8 11.5 8H15V10.8432L17 8.8432V7.8284C17 7.298 16.7893 6.7892 16.4142 6.4142L12.5858 2.5858C12.2107 2.2107 11.702 2 11.1716 2Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21.5606 12.0339L20.1464 10.6197C19.8535 10.3268 19.4696 10.1804 19.0857 10.1804C18.7018 10.1804 18.3179 10.3268 18.025 10.6197L10.1803 18.4644V22H13.7158L21.5605 14.1553C22.1465 13.5695 22.1465 12.6198 21.5606 12.0339ZM13.0946 20.5H11.6804V19.0857L16.9919 13.7733L18.4066 15.188L13.0946 20.5ZM19.4673 14.1273L18.0526 12.7125L19.0844 11.6805L19.0859 11.6804L20.5 13.0946L19.4673 14.1273Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M11 16L13 16 13 7 16 7 12 2 8 7 11 7z\\\"></path><path d=\\\"M5,22h14c1.103,0,2-0.897,2-2v-9c0-1.103-0.897-2-2-2h-4v2h4v9H5v-9h4V9H5c-1.103,0-2,0.897-2,2v9C3,21.103,3.897,22,5,22 z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#ABB0C4;} </style><title>icon - attachment</title><g><path class=\\\"st0\\\" d=\\\"M5,7L5,7v8c0,3.9,3.2,7,7.1,6.9c1.8,0,3.6-0.7,4.9-2c1.3-1.3,2.1-3.1,2.1-4.9V7h-2v8c0,2.8-2.2,5-5,5 s-5-2.2-5-5V7l0,0c0-0.8,0.3-1.6,0.9-2.1c1.2-1.2,3.1-1.2,4.2,0C12.7,5.4,13,6.2,13,7v8c0,0.6-0.4,1-1,1c-0.3,0-0.5-0.1-0.7-0.3 C11.1,15.5,11,15.3,11,15V7H9v8c0,1.7,1.4,3,3,3c0.8,0,1.5-0.3,2.1-0.9c0.6-0.6,0.9-1.3,0.9-2.1V7c0-2.8-2.2-5-5-5S5,4.2,5,7z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m5 2h10l6 6 .0001221 12.0010986v.0001221c-.0000674 1.1045695-.8955526 1.9999454-2.0001221 1.9998779l-13.99502837-.0016511c-1.10430609-.0000674-1.99957281-.8951416-1.99987782-1.9994476l-.00509381-15.9999999c0-1.1.9-2 2-2zm0 2v16h14v-11l-5-5zm1.5 8.5v-6h6l-2.3 2.3 1.8 1.7900002-1.4099998 1.4099998-1.7900002-1.8zm10.9999998-1.0000002v6h-6l2.3-2.3-1.7999998-1.79 1.4099998-1.4099998 1.79 1.7999998z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m17 5v-3l4 4-4 4v-3h-4v-2zm-10 2v3l-4-4 4-4v3h4v2zm-2 5h10l6 6v4.0010986l-17.9950284-.0010986.0050284-8c0-1.1.89-2 1.99-2zm0 2v8h14v-3l-5-5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9 4v3h5v12h3v-12h5v-3zm-6 8h3v7h3v-7h3v-3h-9z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"></path><path d=\\\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM8 17.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5zM9.5 8c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5S9.5 9.38 9.5 8zm6.5 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z\\\"></path><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"></path><path d=\\\"M11.99 18.54l-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27-7.38 5.74zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27L12 16z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m21 4c1.1 0 2 .9 2 2v13c0 1.1-.9 2-2 2h-18c-1.1 0-2-.9-2-2v-13c0-1.1.9-2 2-2zm0 15v-13h-12v13zm-18-8.5v1.5h4v-1.5zm0-2.5v1.5h4v-1.5zm0 5v1.5h4v-1.5zm0 2.5v1.5h4v-1.5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m4 10.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0-6c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0 12c-.83 0-1.5.68-1.5 1.5s.68 1.5 1.5 1.5 1.5-.68 1.5-1.5-.67-1.5-1.5-1.5zm3 2.5h14v-2h-14zm0-6h14v-2h-14zm0-8v2h14v-2z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m3 6h18v2h-18zm0 5h18v2h-18zm0 7v-2h18v2z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M16 12V6C16 3.783 14.215 1.979 12.021 1.979C11.952 1.979 11.881 1.988 11.812 2.004C9.693 2.104 8 3.857 8 6V12C8 14.206 9.794 16 12 16C14.206 16 16 14.206 16 12ZM10 12V6C10 4.897 10.897 4 12 4C12.055 4 12.109 3.995 12.163 3.985C13.188 4.06 14 4.935 14 6V12C14 13.103 13.103 14 12 14C10.897 14 10 13.103 10 12Z\\\" fill=\\\"#484848\\\"></path><path d=\\\"M6 12H4C4 16.072 7.061 19.436 11 19.931V22H13V19.931C16.939 19.436 20 16.073 20 12H18C18 15.309 15.309 18 12 18C8.691 18 6 15.309 6 12Z\\\" fill=\\\"#484848\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m6.76 5.30958904-1.8-1.79817351-1.41 1.41643835 1.79 1.79817352zm-2.76 5.68584476h-3v2h3zm9-9.9954338h-2v3h2zm7.45 3.92785388-1.41-1.41643835-1.79 1.79817351 1.41 1.41643836zm-3.21 13.76255712 1.79 1.8082191 1.41-1.4164383-1.8-1.7981735zm2.76-7.6949772v2h3v-2zm-8-4.9954338c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm-1 17h2v-3h-2zm-7.45-3.9278539 1.41 1.4164384 1.79-1.8082192-1.41-1.4164384z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m5 21.3703923c3.79666787-1.4187361 6.5-5.0788657 6.5-9.3703923 0-4.29152662-2.70333213-7.95165619-6.5-9.37039231 1.08933646-.40706247 2.26867912-.62960769 3.5-.62960769 5.5228475 0 10 4.4771525 10 10s-4.4771525 10-10 10c-1.23132088 0-2.41066354-.2225452-3.5-.6296077z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19.684 5.82098L10.684 2.54898C10.071 2.32598 9.387 2.41498 8.853 2.78998C8.318 3.16298 8 3.77498 8 4.42798V10.557C7.409 10.212 6.731 9.99998 6 9.99998C3.794 9.99998 2 11.794 2 14C2 16.206 3.794 18 6 18C8.206 18 10 16.206 10 14V4.42798L19 7.69998V14.556C18.409 14.212 17.731 14 17 14C14.794 14 13 15.794 13 18C13 20.206 14.794 22 17 22C19.206 22 21 20.206 21 18V7.69998C21 6.86198 20.471 6.10598 19.684 5.82098ZM6 16C4.897 16 4 15.103 4 14C4 12.897 4.897 12 6 12C7.103 12 8 12.897 8 14C8 15.103 7.103 16 6 16ZM17 20C15.897 20 15 19.103 15 18C15 16.897 15.897 16 17 16C18.103 16 19 16.897 19 18C19 19.103 18.103 20 17 20Z\\\" fill=\\\"#484848\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m3 13v-2h14v2zm4 4v-2h14v2zm0 4v-2h14v2zm0-14h14v2h-14zm-4-4h14v2h-14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9c.83 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.01-.23-.26-.38-.61-.38-.99 0-.83.67-1.5 1.5-1.5h1.77c2.76 0 5-2.24 5-5 0-4.42-4.03-8-9-8zm-5.5 9c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm3-4c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm5 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm3 4c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m23 5.5v14.5c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19l-7.85-7.98s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46v-11.91c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v7h1v-9.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v9.5h1v-8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v8.5h1v-5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 5.75C7 5.47386 7.22386 5.25 7.5 5.25H10.5C10.7761 5.25 11 5.47386 11 5.75V18.25C11 18.5261 10.7761 18.75 10.5 18.75H7.5C7.22386 18.75 7 18.5261 7 18.25V5.75Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M13 5.75C13 5.47386 13.2239 5.25 13.5 5.25H16.5C16.7761 5.25 17 5.47386 17 5.75V18.25C17 18.5261 16.7761 18.75 16.5 18.75H13.5C13.2239 18.75 13 18.5261 13 18.25V5.75Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m12 4c-4.41333333 0-8 3.58666667-8 8 0 4.4133333 3.58666667 8 8 8 4.4133333 0 8-3.5866667 8-8 0-4.41333333-3.5866667-8-8-8z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M18.1895 11.1653C18.7884 11.5606 18.7884 12.4393 18.1895 12.8346L8.50495 19.2264C7.8401 19.6652 6.9541 19.1884 6.9541 18.3918L6.9541 5.60811C6.9541 4.81151 7.84009 4.3347 8.50494 4.7735L18.1895 11.1653Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12 2C6.486 2 2 6.486 2 12C2 17.514 6.486 22 12 22C17.514 22 22 17.514 22 12C22 6.486 17.514 2 12 2ZM12 20C7.589 20 4 16.411 4 12C4 7.589 7.589 4 12 4C16.411 4 20 7.589 20 12C20 16.411 16.411 20 12 20Z\\\" fill=\\\"#484848\\\"></path><path d=\\\"M9 17L17 12L9 7V17Z\\\" fill=\\\"#484848\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m7.11 8.53-1.41-1.42c-.9 1.16-1.46 2.5-1.63 3.89h2.02c.14-.87.49-1.72 1.02-2.47zm-1.02 4.47h-2.02c.17 1.39.72 2.73 1.62 3.89l1.41-1.42c-.52-.75-.87-1.59-1.01-2.47zm1.01 5.32c1.16.9 2.51 1.44 3.9 1.61v-2.03c-.87-.15-1.71-.49-2.46-1.03zm5.9-14.25v-3.07l-4.55 4.55 4.55 4.45v-3.91c2.84.48 5 2.94 5 5.91s-2.16 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93s-3.05-7.44-7-7.93z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m15.55 5.55-4.55-4.55v3.07c-3.94.49-7 3.85-7 7.93s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91v3.91zm4.38 5.45c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47zm-6.93 6.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42 1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m15.5 14h-.79l-.28-.27c.98-1.14 1.57-2.62 1.57-4.23 0-3.59-2.91-6.5-6.5-6.5s-6.5 2.91-6.5 6.5 2.91 6.5 6.5 6.5c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99 1.49-1.49zm-6 0c-2.49 0-4.5-2.01-4.5-4.5s2.01-4.5 4.5-4.5 4.5 2.01 4.5 4.5-2.01 4.5-4.5 4.5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m10.314997 14.1097181-3.10191769-.0150391c-.14580656-.0010433-.28962115-.0339596-.42136544-.0964422-.49900706-.2366652-.71167717-.8330454-.475012-1.3320524l4.78752513-10.09446718c.0995136-.20982395.2689515-.37847202.4792381-.47700427.5001074-.23433112 1.0954874-.01887692 1.3298186.48123043l4.7618949 10.16279272c.0632461.1349793.0955164.2823905.0944499.4314488-.0039515.5522706-.4548585.9967711-1.0071292.9928196l-3.1442014-.0153416v7.5319189c0 .5515432-.4454773.9970205-.9970206.9970205h-1.3092597c-.5515433 0-.9970206-.4454773-.9970206-.9970205z\\\" transform=\\\"matrix(.93969262 -.34202014 .34202014 .93969262 -3.496571 4.846563)\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m18 18v-3h2v3h3v2h-3v3h-2v-3h-3v-2zm-14 2v-2h2v2zm0-3.5v-2h2v2zm0-3.5v-2h2v2zm0-3.5v-2h2v2zm0-3.5v-2h2v2zm3.5 0v-2h2v2zm3.5 0v-2h2v2zm0 14v-2h2v2zm3.5-14v-2h2v2zm3.5 0v-2h2v2zm0 7v-2h2v2zm0-3.5v-2h2v2zm-10.5 10.5v-2h2v2z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\"><g id=\\\"surface1\\\"><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 11.34375 4.0625 C 11.035156 4.128906 10.570312 4.390625 8.0625 5.925781 L 5.359375 7.585938 L 3.863281 7.609375 C 2.226562 7.632812 2.058594 7.65625 1.539062 7.929688 C 0.882812 8.277344 0.355469 8.890625 0.136719 9.570312 C 0.0234375 9.914062 0.0234375 9.921875 0.0234375 12.023438 L 0.0234375 14.132812 L 0.144531 14.46875 C 0.398438 15.15625 0.867188 15.703125 1.5 16.046875 C 2.058594 16.351562 2.199219 16.367188 3.863281 16.390625 L 5.359375 16.414062 L 8.0625 18.074219 C 9.546875 18.984375 10.878906 19.777344 11.019531 19.832031 C 11.226562 19.921875 11.367188 19.941406 11.765625 19.941406 C 12.230469 19.945312 12.277344 19.9375 12.570312 19.789062 C 12.917969 19.621094 13.199219 19.339844 13.359375 19.003906 C 13.597656 18.511719 13.59375 18.75 13.59375 12 C 13.59375 5.039062 13.609375 5.398438 13.296875 4.878906 C 13.109375 4.570312 12.851562 4.335938 12.515625 4.179688 C 12.3125 4.082031 12.171875 4.058594 11.859375 4.050781 C 11.640625 4.046875 11.410156 4.050781 11.34375 4.0625 Z M 11.71875 12.003906 C 11.71875 17.164062 11.710938 18.050781 11.652344 18.03125 C 11.617188 18.019531 10.292969 17.210938 8.714844 16.246094 L 5.835938 14.484375 L 4.226562 14.484375 C 2.726562 14.484375 2.609375 14.480469 2.441406 14.394531 C 2.207031 14.273438 1.988281 14.015625 1.925781 13.796875 C 1.859375 13.554688 1.859375 10.445312 1.925781 10.203125 C 1.988281 9.984375 2.207031 9.726562 2.441406 9.605469 C 2.609375 9.519531 2.726562 9.515625 4.226562 9.515625 L 5.835938 9.515625 L 8.742188 7.734375 C 10.339844 6.753906 11.664062 5.953125 11.6875 5.953125 C 11.703125 5.953125 11.71875 8.675781 11.71875 12.003906 Z M 11.71875 12.003906 \\\"></path><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 20.085938 4.402344 C 19.984375 4.449219 19.785156 4.601562 19.65625 4.75 C 19.421875 4.996094 19.40625 5.019531 19.40625 5.265625 C 19.40625 5.558594 19.429688 5.597656 20.007812 6.242188 C 21.027344 7.382812 21.726562 8.804688 22.035156 10.359375 C 22.128906 10.8125 22.144531 11.054688 22.148438 11.859375 C 22.148438 12.890625 22.117188 13.175781 21.886719 14.054688 C 21.515625 15.460938 20.8125 16.710938 19.773438 17.789062 C 19.222656 18.359375 19.191406 18.652344 19.609375 19.109375 C 19.878906 19.40625 20.058594 19.5 20.359375 19.5 C 20.625 19.5 20.84375 19.351562 21.285156 18.867188 C 23.132812 16.835938 24.089844 14.234375 23.984375 11.53125 C 23.925781 9.992188 23.605469 8.699219 22.941406 7.335938 C 22.351562 6.117188 21.085938 4.492188 20.625 4.359375 C 20.398438 4.292969 20.300781 4.304688 20.085938 4.402344 Z M 20.085938 4.402344 \\\"></path><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 17.585938 6.847656 C 17.328125 6.976562 16.976562 7.367188 16.941406 7.570312 C 16.890625 7.84375 16.960938 7.996094 17.324219 8.398438 C 17.9375 9.078125 18.300781 9.707031 18.535156 10.503906 C 18.886719 11.722656 18.769531 12.988281 18.195312 14.132812 C 17.96875 14.597656 17.722656 14.945312 17.320312 15.371094 C 16.925781 15.796875 16.828125 16.007812 16.917969 16.28125 C 16.992188 16.507812 17.304688 16.847656 17.546875 16.964844 C 17.960938 17.164062 18.300781 17.054688 18.730469 16.566406 C 19.8125 15.347656 20.394531 14.011719 20.53125 12.445312 C 20.695312 10.554688 20.023438 8.605469 18.75 7.25 C 18.261719 6.730469 18.003906 6.640625 17.585938 6.847656 Z M 17.585938 6.847656 \\\"></path><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 15.445312 8.992188 C 15.34375 9.042969 15.136719 9.210938 14.992188 9.367188 C 14.757812 9.609375 14.71875 9.675781 14.71875 9.828125 C 14.71875 10.039062 14.785156 10.148438 15.121094 10.5 C 15.445312 10.835938 15.652344 11.273438 15.6875 11.703125 C 15.742188 12.328125 15.539062 12.851562 15.066406 13.34375 C 14.601562 13.828125 14.59375 14.042969 15.007812 14.476562 C 15.285156 14.757812 15.417969 14.835938 15.664062 14.882812 C 16.007812 14.949219 16.320312 14.757812 16.707031 14.253906 C 17.792969 12.84375 17.796875 10.953125 16.71875 9.542969 C 16.367188 9.078125 16.179688 8.9375 15.882812 8.921875 C 15.707031 8.90625 15.578125 8.929688 15.445312 8.992188 Z M 15.445312 8.992188 \\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m6 2h12c1.1000004 0 2 .9000001 2 2v16c0 1.1-.9 2-2 2h-12.01c-1.1 0-1.99-.9-1.99-2v-16c0-1.1.9-2 2-2zm1 15v1.5h10v-1.5zm0-4v1.5h10v-1.5zm7-4v1.5h3v-1.5zm0-3.5v1.5h3v-1.5zm-7 0v5h4.5v-5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m4 8h4v-4h-4zm6 12h4v-4h-4zm-6 0h4v-4h-4zm0-6h4v-4h-4zm6 0h4v-4h-4zm6-10v4h4v-4zm-6 4h4v-4h-4zm6 6h4v-4h-4zm0 6h4v-4h-4z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" viewBox=\\\"0 0 24 24\\\"><defs><path id=\\\"a\\\" d=\\\"M0 0h24v24H0z\\\"></path></defs><clipPath id=\\\"b\\\"><use xlink:href=\\\"#a\\\" overflow=\\\"visible\\\"></use></clipPath><path clip-path=\\\"url(#b)\\\" d=\\\"M15 3l2.3 2.3-2.89 2.87 1.42 1.42L18.7 6.7 21 9V3zM3 9l2.3-2.3 2.87 2.89 1.42-1.42L6.7 5.3 9 3H3zm6 12l-2.3-2.3 2.89-2.87-1.42-1.42L5.3 17.3 3 15v6zm12-6l-2.3 2.3-2.87-2.89-1.42 1.42 2.89 2.87L15 21h6z\\\"></path><path clip-path=\\\"url(#b)\\\" fill=\\\"none\\\" d=\\\"M0 0h24v24H0z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m6 12c-1.1 0-1.99.9-1.99 2l-.00501159 8h15.99501159v-4l-6-6zm7 7v-5.5l5.5 5.5zm-8.99628724-17h15.99628724v6c0 1.1-.9 2-2 2h-12.01c-1.1 0-1.99-.9-1.99-2z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m14.25 5.75c-.6875 0-1.24375.5625-1.24375 1.25l-.00625 10c0 .6875.55625 1.25 1.24375 1.25h7.50625c.6875 0 1.25-.5625 1.25-1.25v-7.5l-3.75-3.75zm-5.56977981 1.43022019.91575059.91575059-.9375.9375-.91575059-.91575059zm-.88388348-.88388348-.9375.9375-.23383671-.23383671h-4.375v10h7.5v-6.875l-.20764574-.20764574.93750004-.9375.5201457.52014574v.625h-1.25v1.25h1.25v1.25h-1.25v1.25h1.25v1.25h-1.25v1.25h1.25v.625c0 .6875-.5625 1.25-1.25 1.25h-.625v-1.25h-1.25v1.25h-1.25v-1.25h-1.25v1.25h-1.25v-1.25h-1.25v1.25h-.63125c-.6875 0-1.24375-.5625-1.24375-1.25l.00039063-.625h1.24960937v-1.25h-1.24882812l.00078124-1.25h1.24804688v-1.25h-1.24726563l.00078125-1.25h1.24648438v-1.25h-1.24570313l.00078125-1.25h1.24492188v-1.25h-1.24414063l.00039063-.625c0-.6875.55625-1.25 1.24375-1.25h.625v1.25h1.25v-1.25h1.25v1.25h1.25v-1.25h.625zm10.82866329 3.82866329v-3.4375l3.4375 3.4375z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m2.25 5.75h5l3.75 3.75v7.5c0 .6875-.5625 1.25-1.25 1.25h-7.50625c-.6875 0-1.24375-.5625-1.24375-1.25l.00625-10c0-.6875.55625-1.25 1.24375-1.25zm4.375 4.375h3.4375l-3.4375-3.4375zm7.625-4.375h5l3.75 3.75v7.5c0 .6875-.5625 1.25-1.25 1.25h-7.50625c-.6875 0-1.24375-.5625-1.24375-1.25l.00625-10c0-.6875.55625-1.25 1.24375-1.25zm4.375 4.375h3.4375l-3.4375-3.4375z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m4 19h12v-2h-12zm0-4h16v-2h-16zm0-4h16v-2h-16zm0-4h16v-2h-16z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m6 2c-1.1 0-1.99.9-1.99 2l-.01 16c0 1.1.89 2 1.99 2h12.01c1.1 0 2-.9 2-2v-12l-6-6zm7 7v-5.5l5.5 5.5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65c-.03-.24-.24-.42-.49-.42h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64zm-7.43 2.52c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M16 21C19.527 19.453 21.999 16.091 21.999 12C21.999 7.909 19.527 4.547 16 3V5C18.387 6.386 19.999 9.047 19.999 12C19.999 14.953 18.387 17.614 16 19V21Z\\\" fill=\\\"#484848\\\"></path><path d=\\\"M16 7V17C17.225 15.9 18 13.771 18 12C18 10.229 17.225 8.1 16 7ZM4 17H6.697L12.445 20.832C12.612 20.943 12.806 21 13 21C13.162 21 13.324 20.961 13.472 20.882C13.797 20.708 14 20.369 14 20V4C14 3.631 13.797 3.292 13.472 3.118C13.148 2.943 12.752 2.964 12.446 3.168L6.697 7H4C2.897 7 2 7.897 2 9V15C2 16.103 2.897 17 4 17ZM4 9H7C7.033 9 7.061 8.984 7.093 8.981C7.157 8.975 7.218 8.961 7.281 8.943C7.349 8.922 7.412 8.898 7.473 8.865C7.499 8.85 7.53 8.848 7.555 8.832L12 5.868V18.132L7.555 15.168C7.53 15.151 7.499 15.148 7.473 15.135C7.412 15.102 7.35 15.077 7.283 15.057C7.219 15.038 7.157 15.025 7.091 15.019C7.059 15.016 7.032 15 7 15H4V9Z\\\" fill=\\\"#484848\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m13 7h-2v4h-4v2h4v4h2v-4h4v-2h-4zm-1-5c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m7 11v2h10v-2zm5-9c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M11.08,18.42h1.84v2.75H11.08ZM16.59,12A4.59,4.59,0,1,1,12,7.41,4.6,4.6,0,0,1,16.59,12Zm-1.83,0A2.76,2.76,0,1,0,12,14.76,2.77,2.77,0,0,0,14.76,12Zm3.66-.92v1.84h2.75V11.08Zm-12.84,0H2.83v1.84H5.58Zm7.34-8.25H11.08V5.58h1.84Zm-8,15,1.3,1.3,1.94-1.95-1.3-1.29ZM19.13,6.17l-1.3-1.3L15.89,6.81l1.3,1.3Zm-11,.65L6.17,4.87l-1.3,1.3,2,1.94Zm7.78,10.36,1.94,1.95,1.3-1.3-1.95-1.94Z\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M18.65,5.66a.93.93,0,0,0,.45-.8.91.91,0,0,0-.45-.79,9.17,9.17,0,1,0,0,15.86.91.91,0,0,0,.45-.79.93.93,0,0,0-.45-.8,7.31,7.31,0,0,1,0-12.68ZM13.15,12a9.21,9.21,0,0,0,3.21,7,7.19,7.19,0,0,1-2.3.37,7.33,7.33,0,0,1,0-14.66,7.19,7.19,0,0,1,2.3.37A9.21,9.21,0,0,0,13.15,12Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - select - line</title><path class=\\\"cls-1\\\" d=\\\"M21.56,15.57l-2.12-2.49L18.33,11.7l1.38-1.11,1.37-1.11a.81.81,0,0,0,.34-.84c-.08-.39-.32-.54-.68-.7l-11-2.7c-.62-.06-1.17.38-1.1.89V17.7a.8.8,0,0,0,.54.81.72.72,0,0,0,.9-.15l1.38-1.11,1.37-1.11,1.67,2.06L16.05,20a1.67,1.67,0,0,0,2.49.27l2.75-2.22A1.66,1.66,0,0,0,21.56,15.57Zm-3.84,3-1.46-1.67L14,14.13l-.67-.7-1,.78-1.79,1.44v-8l7.73,1.71-1.66,1.46-1,.77,2.21,2.76,2.14,2.36ZM5.37,5.24V18.86h.25a.92.92,0,0,1,1,1,.89.89,0,0,1-.87,1H3a.92.92,0,0,1-1-1,1,1,0,0,1,1-1h.38V5.24H3a.92.92,0,0,1-1-1,1,1,0,0,1,1-1H5.62a.92.92,0,0,1,1,1,.89.89,0,0,1-.87,1Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;fill-rule:evenodd;}</style></defs><title>icon - tool - pen and shape - phone</title><path class=\\\"cls-1\\\" d=\\\"M16,13a4.09,4.09,0,1,0,4.08,4.08A4.09,4.09,0,0,0,16,13Zm0,6.37a2.29,2.29,0,1,1,2.28-2.29A2.29,2.29,0,0,1,16,19.35ZM18.57,2.86H13.49A1.69,1.69,0,0,0,11.8,4.54V10.1a1.69,1.69,0,0,0,1.69,1.68h5.08a1.68,1.68,0,0,0,1.68-1.68V4.54A1.68,1.68,0,0,0,18.57,2.86ZM18.45,10H13.6V4.66h4.85ZM8,2.85H5.78a2.19,2.19,0,0,0-1.43.6,2,2,0,0,0-.6,1.43V16.64a.72.72,0,0,0,.12.48s2.21,3.42,2.38,3.58a.9.9,0,0,0,.57.39c.25,0,.39-.05.6-.37l2.52-3.6c.12-.12.12-.24.12-.48V4.88A2.1,2.1,0,0,0,8,2.85Zm.23,12.89H5.56V9.24H8.25Zm0-8.29H5.56V4.69H8.25Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M17.83,2.83H6.17A1.67,1.67,0,0,0,4.5,4.5v15a1.67,1.67,0,0,0,1.67,1.67H17.83A1.67,1.67,0,0,0,19.5,19.5V4.5A1.67,1.67,0,0,0,17.83,2.83ZM6.17,19.5V4.5H17.83v15Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M12.83,6.19h-5V17.81h8.34V6.19H12.83Zm1.78,4.15L13,12l1.65,1.66a.36.36,0,0,1,0,.52l-.43.44a.37.37,0,0,1-.52,0L12,13l-1.66,1.66a.37.37,0,0,1-.52,0l-.44-.44a.37.37,0,0,1,0-.52L11,12,9.38,10.34a.37.37,0,0,1,0-.52l.44-.43a.36.36,0,0,1,.52,0L12,11l1.66-1.65a.36.36,0,0,1,.52,0l.43.43A.36.36,0,0,1,14.61,10.34Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M16.09,16.8,15,15.71l1.09-1.09a.28.28,0,0,0,0-.38l-.58-.58a.26.26,0,0,0-.38,0L14,14.75,13,13.66a.26.26,0,0,0-.38,0l-.58.58a.28.28,0,0,0,0,.38l1.09,1.09L12,16.8a.28.28,0,0,0,0,.38l.58.57a.26.26,0,0,0,.38,0L14,16.66l1.09,1.09a.26.26,0,0,0,.38,0l.58-.57A.28.28,0,0,0,16.09,16.8Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M17.83,2.83H6.17A1.67,1.67,0,0,0,4.5,4.5v15a1.67,1.67,0,0,0,1.67,1.67H17.83A1.67,1.67,0,0,0,19.5,19.5V4.5A1.67,1.67,0,0,0,17.83,2.83ZM6.17,19.5V4.5H17.83v15Z\\\"></path><rect class=\\\"cls-1\\\" x=\\\"7.84\\\" y=\\\"10.66\\\" width=\\\"8.33\\\" height=\\\"1.8\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"7.84\\\" y=\\\"6.61\\\" width=\\\"8.33\\\" height=\\\"1.8\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"7.83\\\" y=\\\"14.83\\\" width=\\\"2.96\\\" height=\\\"1.8\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tools - more</title><g><path class=\\\"cls-1\\\" d=\\\"M12,14.5A2.5,2.5,0,1,1,14.5,12,2.51,2.51,0,0,1,12,14.5Zm2.5-10A2.5,2.5,0,1,0,12,7,2.51,2.51,0,0,0,14.5,4.5Zm0,15A2.5,2.5,0,1,0,12,22,2.51,2.51,0,0,0,14.5,19.5Z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / approved line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-132.000000, -179.000000)\\\" fill=\\\"#239700\\\"><g transform=\\\"translate(130.000000, 176.000000)\\\"><path d=\\\"M20,9 L14.388,9 L15.511,5.633 C15.713,5.025 15.611,4.351 15.236,3.831 C14.861,3.311 14.253,3 13.612,3 L12,3 C11.703,3 11.422,3.132 11.231,3.36 L6.531,9 L4,9 C2.897,9 2,9.897 2,11 L2,20 C2,21.103 2.897,22 4,22 L7,22 L17.307,22 C18.136,22 18.888,21.479 19.18,20.702 L21.937,13.351 C21.979,13.239 22,13.12 22,13 L22,11 C22,9.897 21.103,9 20,9 Z M4,11 L6,11 L6,20 L4,20 L4,11 Z M20,12.819 L17.307,20 L8,20 L8,10.362 L12.468,5 L13.614,5 L12.052,9.683 C11.949,9.988 12.001,10.323 12.189,10.584 C12.377,10.846 12.679,11 13,11 L20,11 L20,12.819 Z\\\"></path></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / cancelled / line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-170.000000, -178.000000)\\\"><g transform=\\\"translate(168.000000, 176.000000)\\\"><path d=\\\"M16,2 L8,2 C4.691,2 2,4.691 2,8 L2,21 C2,21.553 2.447,22 3,22 L16,22 C19.309,22 22,19.309 22,16 L22,8 C22,4.691 19.309,2 16,2 Z M20,16 C20,18.206 18.206,20 16,20 L4,20 L4,8 C4,5.794 5.794,4 8,4 L16,4 C18.206,4 20,5.794 20,8 L20,16 Z\\\" fill=\\\"#868E96\\\"></path><polygon fill=\\\"#BA0000\\\" points=\\\"15.292 7.295 12 10.587 8.708 7.295 7.294 8.709 10.586 12.001 7.294 15.293 8.708 16.707 12 13.415 15.292 16.707 16.706 15.293 13.414 12.001 16.706 8.709\\\"></polygon></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / completed/ line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-213.000000, -178.000000)\\\" fill-rule=\\\"nonzero\\\"><g transform=\\\"translate(211.000000, 176.000000)\\\"><path d=\\\"M16,2 L8,2 C4.691,2 2,4.691 2,8 L2,21 C2,21.553 2.448,22 3,22 L16,22 C19.309,22 22,19.309 22,16 L22,8 C22,4.691 19.309,2 16,2 Z M20,16 C20,18.206 18.206,20 16,20 L4,20 L4,8 C4,5.794 5.794,4 8,4 L16,4 C18.206,4 20,5.794 20,8 L20,16 Z\\\" fill=\\\"#868E96\\\"></path><polygon fill=\\\"#239700\\\" points=\\\"11 13.586 8.707 11.293 7.293 12.707 11 16.414 17.207 10.207 15.793 8.793\\\"></polygon></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>forms / marked</title><g id=\\\"forms-/-marked\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-/-forms-/-radio-button\\\" fill=\\\"#868E96\\\" fill-rule=\\\"nonzero\\\"><path d=\\\"M17,2.15 L7,2.15 C4.32141896,2.15 2.15,4.32141896 2.15,7 L2.15,17 C2.15,19.678581 4.32141896,21.85 7,21.85 L17,21.85 C19.678581,21.85 21.85,19.678581 21.85,17 L21.85,7 C21.85,4.32141896 19.678581,2.15 17,2.15 Z M7,3.85 L17,3.85 C18.739697,3.85 20.15,5.26030304 20.15,7 L20.15,17 C20.15,18.739697 18.739697,20.15 17,20.15 L7,20.15 C5.26030304,20.15 3.85,18.739697 3.85,17 L3.85,7 C3.85,5.26030304 5.26030304,3.85 7,3.85 Z\\\" id=\\\"Rectangle\\\"></path></g><circle id=\\\"Oval\\\" fill=\\\"#868E96\\\" cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"5\\\"></circle></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / none / line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-250.000000, -178.000000)\\\"><g transform=\\\"translate(248.000000, 176.000000)\\\"><path d=\\\"M16,2 L8,2 C4.691,2 2,4.691 2,8 L2,21 C2,21.553 2.447,22 3,22 L16,22 C19.309,22 22,19.309 22,16 L22,8 C22,4.691 19.309,2 16,2 Z M20,16 C20,18.206 18.206,20 16,20 L4,20 L4,8 C4,5.794 5.794,4 8,4 L16,4 C18.206,4 20,5.794 20,8 L20,16 Z\\\"></path><polygon points=\\\"8 11 16 11 16 13 8 13\\\"></polygon></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / rejected / fill</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-89.000000, -179.000000)\\\" fill=\\\"#BA0000\\\"><g transform=\\\"translate(87.000000, 176.000000)\\\"><path d=\\\"M20,3 L17,3 L6.693,3 C5.864,3 5.112,3.521 4.82,4.298 L2.063,11.649 C2.021,11.761 2,11.88 2,12 L2,14 C2,15.103 2.897,16 4,16 L9.612,16 L8.49,19.367 C8.287,19.975 8.389,20.649 8.764,21.169 C9.14,21.689 9.746,22 10.388,22 L12,22 C12.297,22 12.578,21.868 12.769,21.64 L17.469,16 L20,16 C21.103,16 22,15.103 22,14 L22,5 C22,3.897 21.103,3 20,3 Z M11.531,20 L10.386,20 L11.948,15.316 C12.051,15.011 11.999,14.676 11.811,14.415 C11.623,14.154 11.321,14 11,14 L4,14 L4,12.181 L6.693,5 L16,5 L16,14.638 L11.531,20 Z M18,14 L18,5 L20,5 L20.001,14 L18,14 Z\\\"></path></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>forms / unmarked</title><g id=\\\"forms-/-unmarked\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-/-forms-/-radio-button\\\" fill=\\\"#868E96\\\" fill-rule=\\\"nonzero\\\"><path d=\\\"M17,2.15 L7,2.15 C4.32141896,2.15 2.15,4.32141896 2.15,7 L2.15,17 C2.15,19.678581 4.32141896,21.85 7,21.85 L17,21.85 C19.678581,21.85 21.85,19.678581 21.85,17 L21.85,7 C21.85,4.32141896 19.678581,2.15 17,2.15 Z M7,3.85 L17,3.85 C18.739697,3.85 20.15,5.26030304 20.15,7 L20.15,17 C20.15,18.739697 18.739697,20.15 17,20.15 L7,20.15 C5.26030304,20.15 3.85,18.739697 3.85,17 L3.85,7 C3.85,5.26030304 5.26030304,3.85 7,3.85 Z\\\" id=\\\"Rectangle\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12 19L18 12H13V6H11V12H6L12 19Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5 12L12 18L12 13L18 13L18 11L12 11L12 6L5 12Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19 12L12 6V11H6V13H12L12 18L19 12Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M6 18H18V20H6V18ZM11 4V10H6L12 16L18 10H13V4H11Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M13 5V4.382V2H11V4.382V5H8L12 9L16 5H13ZM13 22V19H16L12 15L8 19H11V22H13ZM3 11H6V13H3V11ZM8 11H11V13H8V11ZM13 11H16V13H13V11ZM18 11H21V13H18V11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" fill=\\\"none\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M6 4H18V6H6V4ZM11 14V20H13V14H18L12 8L6 14H11Z\\\" class=\\\"color484848 svgShape\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12 5L6 12L11 12L11 18L13 18L13 12L18 12L12 5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 12 12\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.66666 1.5H2.33332C1.82916 1.5 1.41666 1.9125 1.41666 2.41667V7C1.41666 7.50417 1.82916 7.91667 2.33332 7.91667H3.70832V10.2542L6.64166 7.91667H9.66666C10.1708 7.91667 10.5833 7.50417 10.5833 7V2.41667C10.5833 1.9125 10.1708 1.5 9.66666 1.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - down - bold</title><path class=\\\"cls-1\\\" d=\\\"M5.67,8.35a.44.44,0,0,0,.66,0L9.93,4a.3.3,0,0,0,0-.35A.4.4,0,0,0,9.6,3.5H2.4a.4.4,0,0,0-.35.18.3.3,0,0,0,0,.35Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - down</title><path class=\\\"cls-1\\\" d=\\\"M9,3.5l-3,3-3-3-1,1,4,4,4-4Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - left</title><path class=\\\"cls-1\\\" d=\\\"M7.5,2l-4,4,4,4,1-1-3-3,3-3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - right</title><path class=\\\"cls-1\\\" d=\\\"M4.5,10l4-4-4-4-1,1,3,3-3,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - up</title><path class=\\\"cls-1\\\" d=\\\"M10,7.5l-4-4-4,4,1,1,3-3,3,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - close</title><path class=\\\"cls-1\\\" d=\\\"M16.22,6.28,12,10.5,7.78,6.28a.4.4,0,0,0-.56,0l-.94.94a.4.4,0,0,0,0,.56L10.5,12,6.28,16.22a.4.4,0,0,0,0,.56l.94.94a.4.4,0,0,0,.56,0L12,13.5l4.22,4.22a.4.4,0,0,0,.56,0l.94-.94a.4.4,0,0,0,0-.56L13.5,12l4.22-4.22a.4.4,0,0,0,0-.56l-.94-.94A.4.4,0,0,0,16.22,6.28Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - colour - none</title><path class=\\\"cls-1\\\" d=\\\"M4.59,17.64,17.66,4.57a.65.65,0,0,1,.9-.05l.92.92a.65.65,0,0,1-.05.9L6.36,19.41a.62.62,0,0,1-.89,0l-.92-.92A.62.62,0,0,1,4.59,17.64Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm0,17.5A7.5,7.5,0,1,1,19.5,12,7.51,7.51,0,0,1,12,19.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-3 -6 22 18\\\" fill=\\\"#868E96\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3 4H13V6H3V4ZM0 0H16V2H0V0ZM6 8H10V10H6V8Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - delete - fill</title><path class=\\\"cls-1\\\" d=\\\"M18,6H17V4a2,2,0,0,0-2-2H9A2,2,0,0,0,7,4V6H3V8H5V20a2,2,0,0,0,2,2H17a2,2,0,0,0,2-2V8h2V6ZM11,18H9V10h2Zm4,0H13V10h2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - delete - line</title><path class=\\\"cls-1\\\" d=\\\"M18,6H17V4a2,2,0,0,0-2-2H9A2,2,0,0,0,7,4V6H3V8H5V20a2,2,0,0,0,2,2H17a2,2,0,0,0,2-2V8h2V6ZM9,4h6V6H9ZM7,20V8H17V20Zm6-10h2v8H13ZM9,10h2v8H9Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - panel - detach</title><path class=\\\"cls-1\\\" d=\\\"M14,4.8V6.4a.4.4,0,0,1-.4.4H2.4A.4.4,0,0,1,2,6.4V4.8a.4.4,0,0,1,.4-.4H13.6A.4.4,0,0,1,14,4.8Zm-.4,4.4H2.4a.4.4,0,0,0-.4.4v1.6a.4.4,0,0,0,.4.4H13.6a.4.4,0,0,0,.4-.4V9.6A.4.4,0,0,0,13.6,9.2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - detach</title><path class=\\\"cls-1\\\" d=\\\"M4.8,2H6.4a.4.4,0,0,1,.4.4V13.6a.4.4,0,0,1-.4.4H4.8a.4.4,0,0,1-.4-.4V2.4A.4.4,0,0,1,4.8,2Zm4.4.4V13.6a.4.4,0,0,0,.4.4h1.6a.4.4,0,0,0,.4-.4V2.4a.4.4,0,0,0-.4-.4H9.6A.4.4,0,0,0,9.2,2.4Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - download</title><path class=\\\"cls-1\\\" d=\\\"M11.55,17,5.09,9.66a.6.6,0,0,1,.45-1H8.67V2.6a.6.6,0,0,1,.6-.6h5.46a.6.6,0,0,1,.6.6V8.67h3.13a.6.6,0,0,1,.45,1L12.45,17A.6.6,0,0,1,11.55,17ZM3.11,20.18V21.6a.4.4,0,0,0,.4.4h17a.4.4,0,0,0,.4-.4V20.18a.4.4,0,0,0-.4-.4h-17A.4.4,0,0,0,3.11,20.18Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-3 -2 14 12\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 29</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-545.000000, -716.000000)\\\" fill=\\\"#E7E7E7\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-29\\\" transform=\\\"translate(0.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" cx=\\\"1\\\" cy=\\\"1\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"1\\\" cy=\\\"4\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"1\\\" cy=\\\"7\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"4\\\" cy=\\\"1\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"4\\\" cy=\\\"4\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"4\\\" cy=\\\"7\\\" r=\\\"1\\\"></circle></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Shape</title><g id=\\\"Symbols---Light\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-/-operation-/-annotations-/-line\\\" transform=\\\"translate(-3.000000, -3.000000)\\\" fill=\\\"#868E96\\\"><path d=\\\"M19.0416689,12.7184193 L20.7833366,10.7017527 L20.7833366,19.3184193 C20.7844507,20.3973559 19.9361575,21.286044 18.8583355,21.335086 L5.10833553,21.335086 C4.56059488,21.3498468 4.02967481,21.1450706 3.63371079,20.7663225 C3.23774678,20.3875743 3.00958797,19.866275 3.0000011,19.3184193 L3.0000011,5.47675266 C2.99888704,4.3978161 3.84718022,3.50912801 4.92500219,3.46008599 L13.6333355,3.46008599 L11.8916689,5.20175266 L4.65000219,5.20175266 L4.65000219,19.5934193 L18.9500022,19.5934193 L18.9500022,12.7184193 L19.0416689,12.7184193 Z M21.3333355,6.57675266 C21.3310126,7.0882508 21.1344108,7.57975545 20.7833355,7.95175266 L11.2500022,17.3934193 L6.94166886,17.3934193 L6.94166886,12.9934193 L16.4750022,3.55175266 C17.244066,2.81608245 18.4559384,2.81608245 19.2250022,3.55175266 L20.7833355,5.11008599 C21.1507066,5.50867428 21.3480365,6.03488736 21.3333355,6.57675266 L21.3333355,6.57675266 Z M16.6583355,9.60175266 L14.6416689,7.58508599 L8.50000219,13.8184193 L8.50000219,15.835086 L10.4250022,15.835086 L16.6583355,9.60175266 Z M19.6833355,6.66841933 L17.6666689,4.65175266 L15.9250022,6.39341933 L17.9416689,8.41008599 L19.6833355,6.66841933 Z\\\" id=\\\"Shape\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / checkmark / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-585.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-checkmark-/-line\\\" transform=\\\"translate(135.000000, 1.000000)\\\"><path d=\\\"M19.19,3 L4.8,3 C3.80588745,3 3,3.80588745 3,4.8 L3,19.2 C3,20.1941125 3.80588745,21 4.8,21 L19.19,21 C20.1818401,20.9945352 20.9845352,20.1918401 20.99,19.2 L20.99,4.8 C20.9845352,3.80815987 20.1818401,3.00546481 19.19,3 Z M4.8,19.2 L4.8,4.8 L19.19,4.8 L19.19,19.2 L4.8,19.2 Z\\\" id=\\\"box\\\"></path><polygon id=\\\"checkmark\\\" points=\\\"11.01 12.99 9 10.99 7.73 12.26 11.13 15.66 16.26 9.5 14.88 8.35\\\"></polygon></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / combo box / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-675.000000, -45.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-combo-box-/-line\\\" transform=\\\"translate(225.000000, 0.000000)\\\"><path d=\\\"M20,2 L4,2 C3.04293208,2.00550048 2.27,2.78291627 2.27,3.74 L2.27,20.26 C2.27,21.2170837 3.04293208,21.9944995 4,22 L13.56,22 C14.5209755,22 15.3,21.2209755 15.3,20.26 L15.3,10.32 L20,10.32 C20.9609755,10.32 21.74,9.54097546 21.74,8.58 L21.74,3.74 C21.74,2.77902454 20.9609755,2 20,2 Z M13.6,20.28 L4,20.28 L4,10.28 L13.56,10.28 L13.6,20.28 Z M13.6,8.58 L4,8.58 L4,3.76 L13.56,3.76 L13.6,8.58 Z M20.02,8.58 L15.34,8.58 L15.34,3.74 L20,3.74 L20.02,8.58 Z M11.89,14.4 L5.89,14.4 L5.89,12.66 L11.89,12.66 L11.89,14.4 Z M11.89,18.75 L5.89,18.75 L5.89,17 L11.89,17 L11.89,18.75 Z M11.88,7 L6,7 L6,5.3 L11.9,5.3 L11.88,7 Z M17.14,6.13 L16.52,5.26 L19,5.26 L18.37,6.13 L17.78,7 L17.14,6.13 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / list box / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-540.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-list-box-/-line\\\" transform=\\\"translate(90.000000, 1.000000)\\\"><path d=\\\"M19.2,3.9 L4.8,3.9 C3.80815987,3.90546481 3.00546481,4.70815987 3,5.7 L3,18.3 C3.00546481,19.2918401 3.80815987,20.0945352 4.8,20.1 L19.2,20.1 C20.1918401,20.0945352 20.9945352,19.2918401 21,18.3 L21,5.7 C20.9945352,4.70815987 20.1918401,3.90546481 19.2,3.9 Z M4.8,18.3 L4.8,5.7 L19.2,5.7 L19.2,18.3 L4.8,18.3 Z M10.2,11.1 L17.4,11.1 L17.4,12.9 L10.2,12.9 L10.2,11.1 Z M10.2,7.5 L17.4,7.5 L17.4,9.3 L10.2,9.3 L10.2,7.5 Z M6.6,7.5 L8.4,7.5 L8.4,9.3 L6.6,9.3 L6.6,7.5 Z M10.2,14.7 L17.4,14.7 L17.4,16.5 L10.2,16.5 L10.2,14.7 Z M6.6,11.11 L8.4,11.11 L8.4,12.91 L6.6,12.91 L6.6,11.11 Z M6.6,14.7 L8.4,14.7 L8.4,16.5 L6.6,16.5 L6.6,14.7 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / radio button / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-630.000000, -45.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-radio-button-/-line\\\" transform=\\\"translate(180.000000, 0.000000)\\\"><path d=\\\"M12,3 C7.02943725,3 3,7.02943725 3,12 C3,16.9705627 7.02943725,21 12,21 C16.9705627,21 21,16.9705627 21,12 C21,7.02943725 16.9705627,3 12,3 Z M12,18.71 C8.29416933,18.71 5.29,15.7058307 5.29,12 C5.29,8.29416933 8.29416933,5.29 12,5.29 C15.7058307,5.29 18.71,8.29416933 18.71,12 L18.71,12 C18.6990169,15.7012718 15.7012718,18.6990169 12,18.71 L12,18.71 Z M15.66,12 C15.66,14.0213622 14.0213622,15.66 12,15.66 C9.97863782,15.66 8.34,14.0213622 8.34,12 C8.34,9.97863782 9.97863782,8.34 12,8.34 L12,8.34 C14.0123305,8.36163983 15.6383602,9.98766948 15.66,12 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / signature field</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-495.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-signature-field\\\" transform=\\\"translate(45.000000, 1.000000)\\\"><rect id=\\\"line-field\\\" x=\\\"4.16\\\" y=\\\"19.33\\\" width=\\\"3.95\\\" height=\\\"1.84\\\"></rect><rect id=\\\"line-field\\\" x=\\\"15.47\\\" y=\\\"19.33\\\" width=\\\"3.97\\\" height=\\\"1.84\\\"></rect><rect id=\\\"line-field\\\" x=\\\"10.37\\\" y=\\\"19.33\\\" width=\\\"2.85\\\" height=\\\"1.84\\\"></rect><path d=\\\"M19.3,12.6 C18.8011172,12.4852642 18.2961435,12.7658051 18.13,13.25 C17.94,13.95 17.26,16.02 15.94,16.41 C16.01,16.02 16.14,15.53 16.23,15.19 C16.61,13.75 16.89,12.71 16.02,12.19 C15.6305081,11.9024916 15.1425194,11.7820074 14.6639713,11.8551971 C14.1854232,11.9283868 13.7557535,12.1892188 13.47,12.58 C13.2677271,12.8426752 13.096585,13.1279121 12.96,13.43 C12.5316039,14.4369418 11.8577559,15.3205077 11,16 C10.6861675,16.1561782 10.3479766,16.2576354 10,16.3 C9.63781935,16.2361941 9.29545661,16.0889781 9,15.87 C8.9247858,15.7926735 8.86082555,15.705149 8.81,15.61 C13.7,11 14,6.89 13.91,5.68 C13.972568,4.66130281 13.5588159,3.67125316 12.79,3 C12.5592553,2.84166356 12.2727216,2.78725842 12,2.85 C9.38,3.4 7.76,6.55 6.9,12.78 C6.9,12.84 6.9,12.92 6.9,13.01 C6.74597659,13.6647619 6.69203125,14.3390787 6.74,15.01 C6.5,15.23 6.24,15.45 5.98,15.66 C5.63702664,16.0240749 5.23032934,16.3223196 4.78,16.54 C4.7855838,16.3090848 4.86242608,16.0855436 5,15.9 C5.14271894,15.6990247 5.19676153,15.4483085 5.14951078,15.2063846 C5.10226003,14.9644608 4.95785172,14.7525045 4.75,14.62 C4.31340093,14.3574805 3.74923757,14.4651452 3.44,14.87 C2.70616674,15.8294173 2.7738487,17.1788265 3.6,18.06 C3.89826724,18.3062994 4.27318448,18.4407037 4.66,18.4400027 C5.67361336,18.3025207 6.59829516,17.7884119 7.25,17 L7.43,16.85 L7.65,17.11 C8.24513418,17.6589582 8.99672851,18.008537 9.8,18.11 C10.620381,18.105293 11.4234173,17.8733816 12.12,17.44 C13.0831903,16.7387801 13.8592846,15.8115878 14.38,14.74 C14,16.19 13.8,17.11 14.25,17.74 C14.4499118,18.0242398 14.7640794,18.2068954 15.11,18.24 C17.29,18.48 19.11,16.77 19.96,13.68 C20.0619294,13.2018163 19.7720279,12.727432 19.3,12.6 Z M11.88,4.87 C11.9748135,5.23881339 12.0152403,5.61949948 12,6 C12,6.89 11.71,9.58 8.81,12.94 C9.29,9.69 10.18,5.89 11.88,4.87 Z M21.11,10.63 C21.1553574,11.1765896 20.8605349,11.6949686 20.3675712,11.9353938 C19.8746076,12.175819 19.2846111,12.0889784 18.8818287,11.7167099 C18.4790464,11.3444414 18.3460901,10.7630983 18.5470152,10.2527586 C18.7479402,9.74241896 19.2415363,9.40775489 19.79,9.41 C20.4895514,9.38737528 21.0775571,9.93083513 21.11,10.63 L21.11,10.63 Z\\\" id=\\\"signature\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / text field</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-450.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-text-field\\\" transform=\\\"translate(0.000000, 1.000000)\\\"><path d=\\\"M4.8,3.12 L6.6,3.12 L6.6,4.92 L4.8,4.92 L4.8,6.72 L3,6.72 L3,4.92 C3.00546481,3.92815987 3.80815987,3.12546481 4.8,3.12 L4.8,3.12 Z M15.6,3.12 L8.4,3.12 L8.4,4.92 L15.6,4.92 L15.6,3.12 Z M4.8,9 L3,9 L3,15.24 L4.8,15.24 L4.8,9 Z M8.4,21 L15.6,21 L15.6,19.2 L8.4,19.2 L8.4,21 Z M4.8,17.4 L3,17.4 L3,19.2 C3.00546481,20.1918401 3.80815987,20.9945352 4.8,21 L6.6,21 L6.6,19.2 L4.8,19.2 L4.8,17.4 Z M19.2,19.2 L17.4,19.2 L17.4,21 L19.2,21 C20.1918401,20.9945352 20.9945352,20.1918401 21,19.2 L21,17.4 L19.2,17.4 L19.2,19.2 Z M19.2,3.11 L17.4,3.11 L17.4,4.91 L19.2,4.91 L19.2,6.71 L21,6.71 L21,4.92 C20.9945352,3.92815987 20.1918401,3.12546481 19.2,3.12 L19.2,3.11 Z M19.2,15.2 L21,15.2 L21,9 L19.2,9 L19.2,15.2 Z M15.8,8 L8.2,8 C8.10312734,8.00633297 8.02185672,8.07541299 8,8.17 L8,9.69 C7.99726713,9.75006018 8.01923348,9.80862219 8.0607914,9.8520691 C8.10234931,9.89551601 8.15987771,9.92006214 8.22,9.92 L8.67,9.92 C8.79702549,9.92 8.9,9.81702549 8.9,9.69 L8.9,9.08 L11.27,9.08 L11.27,15.38 L10.44,15.38 C10.319066,15.3900236 10.2246415,15.4887401 10.22,15.61 L10.22,16.06 L10.22,16.06 C10.2225927,16.1183688 10.248297,16.173309 10.291444,16.2127042 C10.3345911,16.2520993 10.3916366,16.2727133 10.45,16.27 L13.6,16.27 C13.6583476,16.27 13.7143055,16.2468215 13.7555635,16.2055635 C13.7968215,16.1643055 13.82,16.1083476 13.82,16.05 L13.82,15.61 C13.8045398,15.4964187 13.7044578,15.4137422 13.59,15.42 L12.75,15.42 L12.75,9.12 L15.14,9.12 L15.14,9.73 C15.1399379,9.79012229 15.164484,9.84765069 15.2079309,9.8892086 C15.2513778,9.93076652 15.3099398,9.95273287 15.37,9.95 L15.82,9.95 C15.925681,9.93047497 16.0017885,9.83745465 16.0000309,9.73 L16.0000309,8.17 C15.9781433,8.07541299 15.8968727,8.00633297 15.8,8 L15.8,8 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - annotation - fill</title><path class=\\\"cls-1\\\" d=\\\"M7.27,13.57,14.94,5.9,18.1,9.06l-7.67,7.67H7.27ZM22,5.16,18.84,2,16.43,4.41l3.16,3.16ZM19.4,12.6v7.5H3.8V4.4h7.9l1.9-1.9H4.1A2.2,2.2,0,0,0,2,4.7V19.8A2.24,2.24,0,0,0,4.3,22h15a2.2,2.2,0,0,0,2.1-2.2V10.4l-1.9,2.2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - annotation - line</title><path class=\\\"cls-1\\\" d=\\\"M19.5,12.6l1.9-2.2v9.4A2.2,2.2,0,0,1,19.3,22H4.3A2.24,2.24,0,0,1,2,19.8V4.7A2.2,2.2,0,0,1,4.1,2.5h9.5L11.7,4.4H3.8V20.1H19.4V12.6ZM22,5.9a2.2,2.2,0,0,1-.6,1.5L11,17.7H6.3V12.9L16.7,2.6a2.17,2.17,0,0,1,3,0l1.7,1.7A2.27,2.27,0,0,1,22,5.9ZM16.9,9.2,14.7,7,8,13.8V16h2.1ZM20.2,6,18,3.8,16.1,5.7l2.2,2.2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - header - annotations</title><path class=\\\"cls-1\\\" d=\\\"M19.5,12.6l1.9-2.2v9.4A2.2,2.2,0,0,1,19.3,22H4.3A2.24,2.24,0,0,1,2,19.8V4.7A2.2,2.2,0,0,1,4.1,2.5h9.5L11.7,4.4H3.8V20.1H19.4V12.6ZM22,5.9a2.2,2.2,0,0,1-.6,1.5L11,17.7H6.3V12.9L16.7,2.6a2.17,2.17,0,0,1,3,0l1.7,1.7A2.27,2.27,0,0,1,22,5.9ZM16.9,9.2,14.7,7,8,13.8V16h2.1ZM20.2,6,18,3.8,16.1,5.7l2.2,2.2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - chat - fill</title><path class=\\\"cls-1\\\" d=\\\"M18,8.12v8a2,2,0,0,1-2,2H11.28L6.52,21,5,21.88V18.12H4a2,2,0,0,1-2-2v-8a2,2,0,0,1,2-2H16A2,2,0,0,1,18,8.12Zm2-6H7v2H20v9h2v-9A2,2,0,0,0,20,2.12Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - chat - line</title><path class=\\\"cls-1\\\" d=\\\"M16.39,6.12h-12a2,2,0,0,0-2,2v8a2,2,0,0,0,2,2h1v3.76L6.9,21l4.76-2.85h4.73a2,2,0,0,0,2-2v-8A2,2,0,0,0,16.39,6.12Zm0,10H11.11L7.39,18.35V16.12h-3v-8h12Zm6-12v9h-2v-9h-13v-2h13A2,2,0,0,1,22.39,4.12Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.2204 6.27987L12.0004 10.4999L7.78036 6.27987C7.62482 6.12741 7.3759 6.12741 7.22036 6.27987L6.28036 7.21987C6.1279 7.37541 6.1279 7.62433 6.28036 7.77987L10.5004 11.9999L6.28036 16.2199C6.1279 16.3754 6.1279 16.6243 6.28036 16.7799L7.22036 17.7199C7.3759 17.8723 7.62482 17.8723 7.78036 17.7199L12.0004 13.4999L16.2204 17.7199C16.3759 17.8723 16.6248 17.8723 16.7804 17.7199L17.7204 16.7799C17.8728 16.6243 17.8728 16.3754 17.7204 16.2199L13.5004 11.9999L17.7204 7.77987C17.8728 7.62433 17.8728 7.37541 17.7204 7.21987L16.7804 6.27987C16.6248 6.12741 16.3759 6.12741 16.2204 6.27987Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - download</title><path class=\\\"cls-1\\\" d=\\\"M11.55,17,5.09,9.66a.6.6,0,0,1,.45-1H8.67V2.6a.6.6,0,0,1,.6-.6h5.46a.6.6,0,0,1,.6.6V8.67h3.13a.6.6,0,0,1,.45,1L12.45,17A.6.6,0,0,1,11.55,17ZM3.11,20.18V21.6a.4.4,0,0,0,.4.4h17a.4.4,0,0,0,.4-.4V20.18a.4.4,0,0,0-.4-.4h-17A.4.4,0,0,0,3.11,20.18Z\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M3.16,19.22a.93.93,0,0,0,.79.43H18.17a1,1,0,0,0,.88-.57l2.84-6.64A1,1,0,0,0,21,11.11h-.95V7.32a1.9,1.9,0,0,0-1.9-1.9H12.39L10.22,3.73a.93.93,0,0,0-.58-.2H4.9A1.9,1.9,0,0,0,3,5.42V18.7H3A.88.88,0,0,0,3.16,19.22Zm14.39-1.47H5.39l2-4.74H19.58Zm.62-10.43v3.79H6.79a1,1,0,0,0-.87.58l-1,2.39V7.32H18.17Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - exit full screen</title><path class=\\\"cls-1\\\" d=\\\"M9.5,2H7V7H2V9.5H9.5ZM7,22H9.5V14.5H2V17H7Zm15-7.5H14.5V22H17V17h5ZM22,7H17V2H14.5V9.5H22Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - full screen - exit</title><path class=\\\"cls-1\\\" d=\\\"M9.5,2H7V7H2V9.5H9.5ZM7,22H9.5V14.5H2V17H7Zm15-7.5H14.5V22H17V17h5ZM22,7H17V2H14.5V9.5H22Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - full screen</title><path class=\\\"cls-1\\\" d=\\\"M4.22,4.22H9.78V2H2V9.78H4.22ZM9.78,19.78H4.22V14.22H2V22H9.78ZM22,14.22H19.78v5.56H14.22V22H22ZM19.78,9.78H22V2H14.22V4.22h5.56Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12.2181 14.4298L12.9145 12.5597C11.5508 11.9666 10.4666 11.2731 9.5878 10.5445C10.9896 8.9062 11.6839 7.2429 12.012 6H13.75C13.8881 6 14 5.8881 14 5.75V4.25C14 4.1119 13.8881 4 13.75 4H9V2.25C9 2.1119 8.8881 2 8.75 2H7.25C7.1119 2 7 2.1119 7 2.25V4H2.25C2.1119 4 2 4.1119 2 4.25V5.75C2 5.8881 2.1119 6 2.25 6H4.315C4.6456 7.2454 5.3248 8.9109 6.7368 10.5535C5.6201 11.4777 4.156 12.3424 2.2352 13.0211C2.1072 13.0663 2.0347 13.2051 2.0783 13.3337L2.5594 14.7543C2.6045 14.8874 2.7563 14.9584 2.8888 14.9116C5.1511 14.1143 6.8698 13.0797 8.1771 11.9658C9.2366 12.8661 10.5507 13.717 12.2181 14.4298ZM9.9241 6C9.6251 6.9048 9.0998 8.0129 8.1639 9.1339C7.2299 8.0155 6.6925 6.9036 6.3928 6H9.9241Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M21.875 21.663L18.1016 11.4892C17.9926 11.1951 17.7121 11 17.3985 11H15.6163C15.303 11 15.0227 11.1947 14.9134 11.4883L11.1255 21.6627C11.0647 21.8261 11.1856 22 11.3599 22H13.25L14 20H19L19.75 22H21.6406C21.8148 22 21.9356 21.8263 21.875 21.663ZM14.6 18.0748L16.5083 13L18.4 18.0748H14.6Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - header - page manipulation</title><path class=\\\"cls-1\\\" d=\\\"M10.75,10.43v.7a4,4,0,0,0-.84.5l-.61-.36a.45.45,0,0,0-.61.16L7.82,13a.44.44,0,0,0,.17.6H8l.6.35a4.18,4.18,0,0,0,0,1L8,15.3a.44.44,0,0,0-.17.58l.89,1.53a.45.45,0,0,0,.61.16l.61-.36a4,4,0,0,0,.84.5v.71a.46.46,0,0,0,.45.44H13a.44.44,0,0,0,.44-.44v-.71a3.39,3.39,0,0,0,.84-.5l.62.36a.45.45,0,0,0,.61-.16l.89-1.53a.45.45,0,0,0-.17-.61l-.6-.35a4.18,4.18,0,0,0,0-1l.6-.35a.44.44,0,0,0,.17-.6h0l-.89-1.54a.45.45,0,0,0-.61-.16l-.62.36a3.39,3.39,0,0,0-.84-.5v-.7A.44.44,0,0,0,13,10H11.2A.45.45,0,0,0,10.75,10.43Zm1.35,2.22a1.78,1.78,0,1,1-1.77,1.79h0a1.78,1.78,0,0,1,1.75-1.78Zm7.84-4V8.6a.84.84,0,0,0-.2-.29l-6-6a1.15,1.15,0,0,0-.29-.2h-.1A.79.79,0,0,0,13.06,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V8.94A1,1,0,0,0,19.94,8.69ZM18,20H6V4h6l6,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - fill</title><path class=\\\"cls-1\\\" d=\\\"M13.82,14.43v0a1.78,1.78,0,1,1-1.74-1.82A1.78,1.78,0,0,1,13.82,14.47ZM20,9V20a2,2,0,0,1-2,2H6a2,2,0,0,1-2-2V4A2,2,0,0,1,6,2h7.06a.75.75,0,0,1,.29.16h.1a1.15,1.15,0,0,1,.29.2l6,6a.84.84,0,0,1,.2.29v.09A1.09,1.09,0,0,1,20,9ZM15.6,14l.6-.35h0a.44.44,0,0,0,.17-.6l-.87-1.54a.45.45,0,0,0-.61-.16l-.62.36a3.39,3.39,0,0,0-.84-.5v-.7h0A.44.44,0,0,0,13,10H11.22a.45.45,0,0,0-.45.45v.7a4,4,0,0,0-.84.5l-.61-.36a.45.45,0,0,0-.61.16L7.82,13a.44.44,0,0,0,.17.57l.6.35a4.18,4.18,0,0,0,0,1l-.6.35H8a.44.44,0,0,0-.16.6l.87,1.58a.45.45,0,0,0,.61.16l.61-.36a4,4,0,0,0,.84.5v.71a.46.46,0,0,0,.45.44H13a.44.44,0,0,0,.44-.44v-.71a3.39,3.39,0,0,0,.84-.5l.62.36a.45.45,0,0,0,.61-.16l.89-1.53v0a.45.45,0,0,0-.17-.58L15.6,15A4.18,4.18,0,0,0,15.6,14Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.825 6.68301L15.85 2.83301L18.875 6.68301H16.675C17.0417 8.88301 18.9667 10.533 21.1667 10.533V11.9997C18.05 11.9997 15.4833 9.70801 15.1167 6.68301H12.825ZM13.8333 12.1831V19.7915C13.8333 20.5248 13.1916 21.1665 12.4583 21.1665H4.20825C3.47492 21.1665 2.83325 20.5248 2.83325 19.7915V8.79145C2.83325 8.05812 3.47492 7.41645 4.20825 7.41645H9.06659C9.15825 7.41645 9.15825 7.41645 9.24992 7.41645H9.34159C9.43325 7.41645 9.52492 7.50812 9.52492 7.59978L13.6499 11.7248C13.7416 11.8165 13.7416 11.8165 13.7416 11.9081V11.9998C13.8333 11.9998 13.8333 12.0915 13.8333 12.1831ZM11.9999 19.3331V12.9165H9.06659C8.60825 12.9165 8.33325 12.6414 8.33325 12.1831V9.24978H4.66659V19.3331H11.9999Z\\\" fill=\\\"#868E96\\\"></path><line x1=\\\"15\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"21\\\" x2=\\\"18\\\" y2=\\\"15\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M20.7998 2.4668V4.02513C18.5998 4.02513 16.6748 5.67513 16.3082 7.87513H18.5082L15.3915 11.6335L12.3665 7.78346H14.7498C15.1165 4.75846 17.6832 2.4668 20.7998 2.4668ZM13.8333 12.1834V19.7918C13.8333 20.5251 13.1916 21.1668 12.4583 21.1668H4.20825C3.47492 21.1668 2.83325 20.5251 2.83325 19.7918V8.79178C2.83325 8.05845 3.47492 7.41678 4.20825 7.41678H9.06659C9.15825 7.41678 9.15825 7.41678 9.24992 7.41678H9.34159C9.43325 7.41678 9.52492 7.50845 9.52492 7.60011L13.6499 11.7251C13.7416 11.8168 13.7416 11.8168 13.7416 11.9084V12.0001C13.8333 12.0001 13.8333 12.0918 13.8333 12.1834ZM11.9999 19.3334V12.9168H9.06659C8.60825 12.9168 8.33325 12.6418 8.33325 12.1834V9.25012H4.66659V19.3334H11.9999Z\\\" fill=\\\"#868E96\\\"></path><line x1=\\\"15\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"21\\\" x2=\\\"18\\\" y2=\\\"15\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - line</title><path class=\\\"cls-1\\\" d=\\\"M10.75,10.43v.7a4,4,0,0,0-.84.5l-.61-.36a.45.45,0,0,0-.61.16L7.82,13a.44.44,0,0,0,.17.6H8l.6.35a4.18,4.18,0,0,0,0,1L8,15.3a.44.44,0,0,0-.17.58l.89,1.53a.45.45,0,0,0,.61.16l.61-.36a4,4,0,0,0,.84.5v.71a.46.46,0,0,0,.45.44H13a.44.44,0,0,0,.44-.44v-.71a3.39,3.39,0,0,0,.84-.5l.62.36a.45.45,0,0,0,.61-.16l.89-1.53a.45.45,0,0,0-.17-.61l-.6-.35a4.18,4.18,0,0,0,0-1l.6-.35a.44.44,0,0,0,.17-.6h0l-.89-1.54a.45.45,0,0,0-.61-.16l-.62.36a3.39,3.39,0,0,0-.84-.5v-.7A.44.44,0,0,0,13,10H11.2A.45.45,0,0,0,10.75,10.43Zm1.35,2.22a1.78,1.78,0,1,1-1.77,1.79h0a1.78,1.78,0,0,1,1.75-1.78Zm7.84-4V8.6a.84.84,0,0,0-.2-.29l-6-6a1.15,1.15,0,0,0-.29-.2h-.1A.79.79,0,0,0,13.06,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V8.94A1,1,0,0,0,19.94,8.69ZM18,20H6V4h6l6,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - header - page manipulation - page layout - single page</title><path class=\\\"cls-1\\\" d=\\\"M20,8.94a2,2,0,0,0,0-.26.36.36,0,0,0,0-.09,1.17,1.17,0,0,0-.19-.3l-6-6a1.17,1.17,0,0,0-.3-.19l-.09,0L13.06,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V9S20,9,20,8.94ZM6,20V4h6V9a1,1,0,0,0,1,1h5V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - cover - fill</title><path class=\\\"cls-1\\\" d=\\\"M3.13,8.68H2V7.5A1.12,1.12,0,0,1,3.13,6.38H4.31V7.5H3.13Zm0,1.19H2v1.54H3.13Zm0,2.72H2v1.54H3.13Zm0,2.72H2V16.5a1.12,1.12,0,0,0,1.13,1.12H4.31V16.5H3.13Zm4.2-7,1-1-.83-.83a.57.57,0,0,0-.16-.11l-.06,0-.14,0H5.49V7.5h1Zm3.1,1.18-1.3-1.3-1,1,1.3,1.3Zm-.55,4.62H11V10.61L9.88,11.74ZM5.49,17.62h2V16.5h-2ZM9.88,16.5H8.69v1.12H9.88A1.12,1.12,0,0,0,11,16.5V15.32H9.88ZM22,9.75V16.5a1.12,1.12,0,0,1-1.13,1.12H14.12A1.12,1.12,0,0,1,13,16.5v-9a1.12,1.12,0,0,1,1.12-1.12h4.51Zm-1.13.56L18.06,7.5v2.81h2.81Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - cover - line</title><path class=\\\"cls-1\\\" d=\\\"M2.13,14.13H1V12.59H2.13Zm0,1.18H1V16.5a1.12,1.12,0,0,0,1.13,1.12H3.31V16.5H2.13Zm0-5.44H1v1.54H2.13Zm0-2.37H3.31V6.38H2.13A1.12,1.12,0,0,0,1,7.5V8.68H2.13Zm4.2.83,1-1-.83-.83a.57.57,0,0,0-.16-.11l-.06,0-.14,0H4.49V7.5h1ZM8.88,16.5H7.69v1.12H8.88A1.12,1.12,0,0,0,10,16.5V15.32H8.88ZM4.49,17.62h2V16.5h-2Zm4.39-3.49H10V10.61L8.88,11.74Zm.55-4.62-1.3-1.3-1,1,1.3,1.3Zm11.57.8V16.5a1.12,1.12,0,0,1-1.13,1.12H13.12A1.12,1.12,0,0,1,12,16.5v-9a1.12,1.12,0,0,1,1.12-1.12h4l.14,0,.06,0a.57.57,0,0,1,.16.11l3.38,3.37a1,1,0,0,1,.11.17s0,0,0,.05a.4.4,0,0,1,0,.15ZM19.88,16.5V10.88H17.06a.57.57,0,0,1-.56-.57V7.5H13.12v9Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - header - page manipulation - page layout - cover page</title><path class=\\\"cls-1\\\" d=\\\"M3.13,14.13H2V12.59H3.13Zm0,1.18H2V16.5a1.12,1.12,0,0,0,1.13,1.12H4.31V16.5H3.13Zm0-5.44H2v1.54H3.13Zm0-2.37H4.31V6.38H3.13A1.12,1.12,0,0,0,2,7.5V8.68H3.13Zm4.2.83,1-1-.83-.83a.57.57,0,0,0-.16-.11l-.06,0-.14,0H5.49V7.5h1ZM9.88,16.5H8.69v1.12H9.88A1.12,1.12,0,0,0,11,16.5V15.32H9.88ZM5.49,17.62h2V16.5h-2Zm4.39-3.49H11V10.61L9.88,11.74Zm.55-4.62-1.3-1.3-1,1,1.3,1.3Zm11.57.8V16.5a1.12,1.12,0,0,1-1.13,1.12H14.12A1.12,1.12,0,0,1,13,16.5v-9a1.12,1.12,0,0,1,1.12-1.12h4l.14,0,.06,0a.57.57,0,0,1,.16.11l3.38,3.37a1,1,0,0,1,.11.17s0,0,0,.05a.4.4,0,0,1,0,.15ZM20.88,16.5V10.88H18.06a.57.57,0,0,1-.56-.57V7.5H14.12v9Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - double page - fill</title><path class=\\\"cls-1\\\" d=\\\"M3.12,6.38A1.12,1.12,0,0,0,2,7.5v9a1.12,1.12,0,0,0,1.12,1.12H9.88A1.12,1.12,0,0,0,11,16.5V9.75L7.63,6.38Zm4.51,3.93H7.06V7.5l2.82,2.81Zm11-3.93H14.12A1.12,1.12,0,0,0,13,7.5v9a1.12,1.12,0,0,0,1.12,1.12h6.75A1.12,1.12,0,0,0,22,16.5V9.75Zm0,3.93h-.57V7.5l2.81,2.81Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - double page - line</title><path class=\\\"cls-1\\\" d=\\\"M11,10.13s0,0,0-.05a1,1,0,0,0-.11-.17L7.46,6.54a.57.57,0,0,0-.16-.11l-.06,0-.14,0h-4A1.12,1.12,0,0,0,2,7.5v9a1.12,1.12,0,0,0,1.13,1.12H9.88A1.12,1.12,0,0,0,11,16.5V10.28A.4.4,0,0,0,11,10.13ZM3.13,16.5v-9H6.5v2.81a.57.57,0,0,0,.56.57H9.88V16.5ZM22,10.28a.4.4,0,0,0,0-.15s0,0,0-.05a1,1,0,0,0-.11-.17L18.46,6.54a.57.57,0,0,0-.16-.11l-.06,0-.14,0h-4A1.12,1.12,0,0,0,13,7.5v9a1.12,1.12,0,0,0,1.13,1.12h6.74A1.12,1.12,0,0,0,22,16.5V10.28ZM14.13,16.5v-9H17.5v2.81a.57.57,0,0,0,.56.57h2.81V16.5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - single page - fill</title><path class=\\\"cls-1\\\" d=\\\"M14,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V8Zm0,7H13V4l5,5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - single page - line</title><path class=\\\"cls-1\\\" d=\\\"M20,8.94a2,2,0,0,0,0-.26.36.36,0,0,0,0-.09,1.17,1.17,0,0,0-.19-.3l-6-6a1.17,1.17,0,0,0-.3-.19l-.09,0L13.06,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V9S20,9,20,8.94ZM6,20V4h6V9a1,1,0,0,0,1,1h5V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page rotation - clockwise - fill</title><path class=\\\"cls-1\\\" d=\\\"M22,7.83,18.67,12,15.33,7.83h2.43a5,5,0,0,0-4.93-4.16V2a6.64,6.64,0,0,1,6.61,5.83ZM9.5,7,14,11.5v9A1.5,1.5,0,0,1,12.5,22h-9A1.5,1.5,0,0,1,2,20.5V8.5A1.5,1.5,0,0,1,3.5,7Zm3,5.25L8.75,8.5v3.75H12.5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page rotation - clockwise - line</title><path class=\\\"cls-1\\\" d=\\\"M22,7.83,18.67,12,15.33,7.83h2.43a5,5,0,0,0-4.93-4.16V2a6.64,6.64,0,0,1,6.61,5.83ZM14,12.2s0,0,0,.05V20.5A1.5,1.5,0,0,1,12.5,22h-9A1.5,1.5,0,0,1,2,20.5V8.5A1.5,1.5,0,0,1,3.5,7H8.8a.65.65,0,0,1,.19,0l.07,0a.86.86,0,0,1,.22.15l4.5,4.5a.66.66,0,0,1,.15.22s0,.05,0,.07A.65.65,0,0,1,14,12.2ZM12,20V13H8.75A.76.76,0,0,1,8,12.25V9H4V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page rotation - counterclockwise - fill</title><path class=\\\"cls-1\\\" d=\\\"M22,11.17H20.33a5,5,0,0,0-4.16-4.93V8.67L12,5.33,16.17,2V4.56A6.64,6.64,0,0,1,22,11.17ZM9.5,7,14,11.5v9A1.5,1.5,0,0,1,12.5,22h-9A1.5,1.5,0,0,1,2,20.5V8.5A1.5,1.5,0,0,1,3.5,7Zm3,5.25L8.75,8.5v3.75H12.5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page rotation - counterclockwise - line</title><path class=\\\"cls-1\\\" d=\\\"M22.39,11.17H20.72a5,5,0,0,0-4.17-4.93V8.67L12.39,5.33,16.55,2V4.56a6.66,6.66,0,0,1,5.84,6.61Zm-8,1s0,0,0,.05V20.5a1.5,1.5,0,0,1-1.5,1.5h-9a1.5,1.5,0,0,1-1.5-1.5V8.5A1.5,1.5,0,0,1,3.89,7H9.18a.71.71,0,0,1,.2,0l.07,0a1.07,1.07,0,0,1,.22.15l4.5,4.5a.86.86,0,0,1,.15.22.19.19,0,0,0,0,.07A1.29,1.29,0,0,1,14.38,12.2Zm-2,7.8V13H9.14a.75.75,0,0,1-.75-.75V9h-4V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page transition - continuous page - fill</title><path class=\\\"cls-1\\\" d=\\\"M20,2V9a2,2,0,0,1-2,2H6A2,2,0,0,1,4,9V2ZM14,13l6,6v3H4V15a2,2,0,0,1,2-2Zm4,7-5-5v5h5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page transition - continuous page - line</title><path class=\\\"cls-1\\\" d=\\\"M20,2V9a2,2,0,0,1-2,2H6A2,2,0,0,1,4,9V2H6V9H18V2Zm0,17.94s0,0,0,.06v2H18V21H13a1,1,0,0,1-1-1V15H6v7H4V15a2,2,0,0,1,2-2h7.06l.26.05.09,0a1.17,1.17,0,0,1,.3.19l6,6a1.17,1.17,0,0,1,.19.3.36.36,0,0,1,0,.09A2,2,0,0,1,20,19.94Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page transition - page by page - fill</title><path class=\\\"cls-1\\\" d=\\\"M20.33,9.5V20.33A1.67,1.67,0,0,1,18.66,22H11.17V20.33h7.49V9.5Zm-5,9.16h-10A1.67,1.67,0,0,1,3.67,17V3.67A1.67,1.67,0,0,1,5.34,2H12l5,5V17A1.67,1.67,0,0,1,15.33,18.66ZM12,7.83h3.33L11.17,3.67V7.83Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page transition - page by page - line</title><path class=\\\"cls-1\\\" d=\\\"M17,17V7.83s0,0,0,0a1.7,1.7,0,0,0,0-.22l0-.07a.82.82,0,0,0-.16-.25l-5-5a.82.82,0,0,0-.25-.16l-.08,0-.21,0H5.34A1.67,1.67,0,0,0,3.67,3.67V17a1.67,1.67,0,0,0,1.67,1.67h10A1.67,1.67,0,0,0,17,17ZM5.67,4h4.66V7.83a.84.84,0,0,0,.84.83H15v8H5.67ZM20.33,9.51V20.33A1.67,1.67,0,0,1,18.66,22H11.17V20h7.16V9.51Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / page manipulation / reflow / reader</title><g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"D---view\\\" transform=\\\"translate(-75.000000, -147.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-Copy\\\" transform=\\\"translate(63.000000, 37.000000)\\\"><g id=\\\"page-transitions\\\" transform=\\\"translate(0.000000, 10.000000)\\\"><g id=\\\"page-by-page-copy\\\" transform=\\\"translate(0.000000, 96.000000)\\\"><g id=\\\"icon-/-page-manipulation-/-reflow-/-reader\\\" transform=\\\"translate(12.000000, 4.000000)\\\"><path d=\\\"M17.33,3 L5.67,3 C4.74768447,3 4,3.74768447 4,4.67 L4,19.67 C4,20.5923155 4.74768447,21.34 5.67,21.34 L17.33,21.34 C18.2523155,21.34 19,20.5923155 19,19.67 L19,4.67 C19,3.74768447 18.2523155,3 17.33,3 Z M5.67,19.67 L5.67,4.67 L17.33,4.67 L17.33,19.67 L5.67,19.67 Z\\\" id=\\\"page\\\"></path><path d=\\\"M13.66,15 L13.66,16.8 L7.33,16.8 L7.33,15 L13.66,15 Z M15.67,10.83 L15.67,12.63 L7.34,12.63 L7.34,10.83 L15.67,10.83 Z M15.67,6.78 L15.67,8.58 L7.34,8.58 L7.34,6.78 L15.67,6.78 Z\\\" id=\\\"text-2\\\"></path></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon-header-pan20</title><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-369.000000, -78.000000)\\\"><g transform=\\\"translate(-22.000000, 0.000000)\\\"><g transform=\\\"translate(391.000000, 78.000000)\\\"><rect fill=\\\"none\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"20\\\" height=\\\"20\\\"></rect><path d=\\\"M4.84116789,10.6404137 C4.46186271,10.6404137 3.96297997,10.9126703 3.804829,11.1798615 C3.56953121,11.5774827 3.81897258,11.930783 3.98998135,12.1055337 L4.90417112,13.043869 C5.82350401,13.9872696 6.74283689,14.9294038 7.66345556,15.8690054 C9.43397498,17.6696974 11.5349399,18.024264 13.7413389,16.8921834 C15.5478601,15.9639786 16.5301962,14.4798639 16.66006,12.4816276 C16.7089197,11.7281735 16.7024908,10.9506595 16.6947761,10.1984717 L16.689633,9.37283798 C16.689633,9.37283798 16.6909188,7.17705742 16.6857756,6.07663452 C16.6844899,5.86516085 16.6214866,5.70560586 16.4993375,5.60176848 C16.3797599,5.49919742 16.1971792,5.44474611 15.9721676,5.44474611 L15.9631671,5.44474611 C15.5607179,5.44601242 15.1454109,5.73346466 15.1454109,6.20959701 L15.1441251,9.50833309 C15.1441251,9.63876296 15.1454109,9.78945378 15.0618352,9.92494889 C14.8496814,10.2630535 14.5938112,10.4302064 14.2955101,10.4302064 C13.8622022,10.4302064 13.5960457,10.0515798 13.5021837,9.88949223 C13.4288942,9.77045914 13.43018,9.63496403 13.4314658,9.54505606 L13.4314658,8.23949103 C13.4327516,6.96431743 13.4327516,5.68661122 13.4288942,4.41017131 C13.4327516,4.10372442 13.1254501,3.7656198 12.6239958,3.74789147 C12.3899838,3.75675564 12.2151177,3.84666361 12.1199699,3.9391042 C11.9605332,4.09359395 11.8923868,4.29493715 11.8949584,4.42663333 C11.9232456,5.8993512 11.9219598,7.41765621 11.9193882,8.90050456 L11.9193882,9.48427321 C11.9193882,9.61090415 11.9103878,9.74260033 11.8460987,9.86923128 C11.7830955,9.9933296 11.5426546,10.3985486 11.0939173,10.3985486 C10.6541804,10.3985486 10.3725946,10.0249873 10.3083056,9.89329116 C10.2337303,9.7375351 10.2337303,9.5767138 10.2337303,9.44881654 L10.2337303,7.43031931 C10.2337303,6.08423238 10.2337303,4.74067807 10.229873,3.39585745 C10.2388734,3.22743829 10.1758702,3.06914962 10.0562926,2.94378498 C9.89557009,2.77663214 9.65770074,2.68419155 9.38768689,2.68419155 C8.82708669,2.68419155 8.52621411,3.11726937 8.52492833,3.4300478 C8.52364255,4.64950379 8.52492833,5.78791597 8.52621411,6.94025756 L8.52878567,9.50200154 L8.52492833,10.8506211 C8.72551005,11.0063771 9.30539695,11.4470528 9.70913195,11.754766 C10.0640073,12.0257562 10.381595,12.2650887 10.487029,12.3511978 C10.6593236,12.4904918 10.6914681,12.8159333 10.6708956,12.9995482 C10.6400369,13.2756037 10.4960295,13.4896099 10.2671606,13.6048441 C10.0112903,13.7327414 9.60755531,13.7276761 9.41725983,13.5947136 C9.09452899,13.362979 8.38092094,12.8627868 7.84475058,12.4866929 C7.4783032,12.2296321 7.19414576,12.0308215 7.1658586,12.0080279 C6.73897955,11.7142441 5.72449892,11.0127087 5.56377639,10.9000072 C5.36319467,10.7936372 5.18832856,10.7163923 5.02117712,10.6657399 C4.96588857,10.6480116 4.9054569,10.6404137 4.84116789,10.6404137 M11.253354,19.2323232 C9.51112179,19.2323232 7.84475058,18.4750702 6.43424963,17.0403416 C5.66792459,16.2577624 4.90288534,15.4726505 4.13784608,14.688805 L2.75691808,13.2705384 C1.9353045,12.429709 1.76686728,11.2748347 2.32875326,10.3301679 C2.87392409,9.41335988 4.28442503,8.68396565 5.52134564,9.05499431 C5.80678886,9.14110335 6.09223208,9.26520168 6.42139183,9.44501762 L6.81869793,9.71220891 L6.81612637,3.42751519 C6.81741215,2.25997789 7.80103405,1 9.38768689,1 C10.1334394,1 10.8136172,1.27858808 11.2996421,1.78764447 C11.4359348,1.92820482 11.5542266,2.0877598 11.6493744,2.25617896 C11.9631048,2.12321647 12.3051223,2.05230314 12.6805701,2.06496623 C13.851916,2.10802075 14.8355379,2.89946415 15.0798361,3.9125117 C15.3575646,3.81373956 15.6532941,3.76308719 15.9554525,3.76182088 C16.6729178,3.76182088 17.2798061,3.99228919 17.7259719,4.42663333 C18.1605656,4.8521133 18.3920061,5.41941993 18.3945776,6.06903666 C18.4010065,7.17199218 18.398435,9.37410429 18.398435,9.37410429 L18.4035781,10.1883413 C18.4112928,10.9671216 18.4190074,11.7724944 18.3662905,12.5879976 C18.2004248,15.1776004 16.8734996,17.1821683 14.5320937,18.3851622 C13.4353231,18.9486699 12.3321237,19.2323232 11.253354,19.2323232\\\"></path></g></g></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - print - fill</title><path class=\\\"cls-1\\\" d=\\\"M20,7H18V2H6V7H4A2,2,0,0,0,2,9v8a2,2,0,0,0,2,2H6v3H18V19h2a2,2,0,0,0,2-2V9A2,2,0,0,0,20,7ZM8,4h8V7H8Zm7,6v2H13V10Zm1,10H8V16h8Zm2-8H16V10h2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - print - line</title><path class=\\\"cls-1\\\" d=\\\"M20,6H18V2H6V6H4A2,2,0,0,0,2,8v9a2,2,0,0,0,2,2H6v3H18V19h2a2,2,0,0,0,2-2V8A2,2,0,0,0,20,6ZM8,4h8V6H8Zm8,16H8V16h8Zm4-3H18V14H6v3H4V8H20Zm-4-7h2v2H16Zm-3,0h2v2H13Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - search</title><path class=\\\"cls-1\\\" d=\\\"M17.69,15.79a8.63,8.63,0,1,0-1.52,1.51l4.42,4.42a.42.42,0,0,0,.57,0l.94-.95a.39.39,0,0,0,0-.56Zm-5.28,1A6.42,6.42,0,1,1,17.19,12,6.43,6.43,0,0,1,12.41,16.8Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - select - fill</title><path class=\\\"cls-1\\\" d=\\\"M21.29,18.05l-2.75,2.22A1.67,1.67,0,0,1,16.05,20l-1.56-1.8-1.67-2.06-1.37,1.11-1.38,1.11a.72.72,0,0,1-.9.15.8.8,0,0,1-.54-.81V6.13c-.07-.51.48-1,1.1-.89l11,2.7c.36.16.6.31.68.7a.81.81,0,0,1-.34.84l-1.37,1.11L18.33,11.7l1.11,1.38,2.12,2.49A1.66,1.66,0,0,1,21.29,18.05ZM5.75,5.24a.9.9,0,0,0,.88-1,.92.92,0,0,0-1-1H3a1,1,0,0,0-1,1,.92.92,0,0,0,1,1h.38V18.86H3a1,1,0,0,0-1,1,.92.92,0,0,0,1,1H5.75a.89.89,0,0,0,.88-1,.92.92,0,0,0-1-1H5.38V5.24Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - select - line</title><path class=\\\"cls-1\\\" d=\\\"M21.56,15.57l-2.12-2.49L18.33,11.7l1.38-1.11,1.37-1.11a.81.81,0,0,0,.34-.84c-.08-.39-.32-.54-.68-.7l-11-2.7c-.62-.06-1.17.38-1.1.89V17.7a.8.8,0,0,0,.54.81.72.72,0,0,0,.9-.15l1.38-1.11,1.37-1.11,1.67,2.06L16.05,20a1.67,1.67,0,0,0,2.49.27l2.75-2.22A1.66,1.66,0,0,0,21.56,15.57Zm-3.84,3-1.46-1.67L14,14.13l-.67-.7-1,.78-1.79,1.44v-8l7.73,1.71-1.66,1.46-1,.77,2.21,2.76,2.14,2.36ZM5.37,5.24V18.86h.25a.92.92,0,0,1,1,1,.89.89,0,0,1-.87,1H3a.92.92,0,0,1-1-1,1,1,0,0,1,1-1h.38V5.24H3a.92.92,0,0,1-1-1,1,1,0,0,1,1-1H5.62a.92.92,0,0,1,1,1,.89.89,0,0,1-.87,1Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - settings - fill</title><path class=\\\"cls-1\\\" d=\\\"M21.29,13.9l-1.37-.79a7.74,7.74,0,0,0,0-2.22l1.37-.79a1,1,0,0,0,.37-1.37l-2-3.46a1,1,0,0,0-1.37-.37l-1.4.81A8,8,0,0,0,15,4.6V3a1,1,0,0,0-1-1H10A1,1,0,0,0,9,3V4.6A8.28,8.28,0,0,0,7.1,5.71L5.71,4.9a1,1,0,0,0-1.37.37l-2,3.46a1,1,0,0,0,.37,1.37l1.37.79a7.74,7.74,0,0,0,0,2.22l-1.37.79a1,1,0,0,0-.37,1.37l2,3.46a1,1,0,0,0,1.37.37l1.4-.81A8,8,0,0,0,9,19.4V21a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V19.4a8.28,8.28,0,0,0,1.9-1.11l1.39.81a1,1,0,0,0,1.37-.37l2-3.46A1,1,0,0,0,21.29,13.9ZM12,16a4,4,0,1,1,4-4A4,4,0,0,1,12,16Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - settings - line</title><path class=\\\"cls-1\\\" d=\\\"M12,8a4,4,0,1,0,4,4A4,4,0,0,0,12,8Zm0,6a2,2,0,1,1,2-2A2,2,0,0,1,12,14Zm8.42-.6-.5-.29a7.74,7.74,0,0,0,0-2.22l.5-.29a2,2,0,0,0,.73-2.74l-1-1.72a2.06,2.06,0,0,0-2.73-.74l-.53.31A8.07,8.07,0,0,0,15,4.6V4a2,2,0,0,0-2-2H11A2,2,0,0,0,9,4v.6A8.07,8.07,0,0,0,7.1,5.71L6.57,5.4a2.07,2.07,0,0,0-2.73.73l-1,1.73a2,2,0,0,0,.73,2.74l.5.29a7.74,7.74,0,0,0,0,2.22l-.5.29a2,2,0,0,0-.73,2.74l1,1.73a2.05,2.05,0,0,0,2.72.73l.53-.31A8.07,8.07,0,0,0,9,19.4V20a2,2,0,0,0,2,2h2a2,2,0,0,0,2-2v-.6a8.07,8.07,0,0,0,1.9-1.11l.53.31a2.07,2.07,0,0,0,2.73-.73l1-1.73A2,2,0,0,0,20.42,13.4Zm-2.59-2.78A5.86,5.86,0,0,1,18,12a5.92,5.92,0,0,1-.17,1.38,1,1,0,0,0,.47,1.11l1.12.64-1,1.73-1.15-.66a1,1,0,0,0-1.19.15,6.05,6.05,0,0,1-2.38,1.39,1,1,0,0,0-.71,1V20H11V18.7a1,1,0,0,0-.71-1,6.05,6.05,0,0,1-2.38-1.39,1,1,0,0,0-.69-.28,1,1,0,0,0-.5.13l-1.14.67-1-1.73,1.12-.65a1,1,0,0,0,.47-1.11A5.92,5.92,0,0,1,6,12a5.86,5.86,0,0,1,.17-1.38A1,1,0,0,0,5.7,9.51L4.58,8.86l1-1.73,1.15.67a1,1,0,0,0,1.19-.15,6.05,6.05,0,0,1,2.38-1.39,1,1,0,0,0,.71-1V4h2V5.3a1,1,0,0,0,.71,1,6.05,6.05,0,0,1,2.38,1.39,1,1,0,0,0,1.19.15l1.14-.66,1,1.73-1.12.64A1,1,0,0,0,17.83,10.62Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - sidebar - fill</title><path class=\\\"cls-1\\\" d=\\\"M22,19.78V4.22A2.23,2.23,0,0,0,19.78,2H4.22A2.23,2.23,0,0,0,2,4.22V19.78A2.23,2.23,0,0,0,4.22,22H19.78A2.23,2.23,0,0,0,22,19.78Zm-12.22,0V4.22h10V19.78Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M19.78,2H4.22A2.24,2.24,0,0,0,2,4.22V19.78A2.24,2.24,0,0,0,4.22,22H19.78A2.24,2.24,0,0,0,22,19.78V4.22A2.24,2.24,0,0,0,19.78,2ZM7.56,19.78H4.22V4.22H7.56Z\\\" transform=\\\"translate(-2 -2)\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - sidebar - line</title><path class=\\\"cls-1\\\" d=\\\"M19.78,2H4.22A2.23,2.23,0,0,0,2,4.22V19.78A2.23,2.23,0,0,0,4.22,22H19.78A2.23,2.23,0,0,0,22,19.78V4.22A2.23,2.23,0,0,0,19.78,2ZM7.56,19.78H4.22V4.22H7.56Zm2.22,0V4.22h10V19.78Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - fit to page</title><path class=\\\"cls-1\\\" d=\\\"M9.76,13.06l-5,5L3.07,16.4a.4.4,0,0,0-.68.28V21.6a.4.4,0,0,0,.4.4H7.71A.4.4,0,0,0,8,21.32L6.32,19.64l5-5a.4.4,0,0,0,0-.57l-1-1A.39.39,0,0,0,9.76,13.06Zm7-10.38,1.67,1.68-5,5a.4.4,0,0,0,0,.57l1,1A.4.4,0,0,0,15,11l5-5L21.71,7.6a.4.4,0,0,0,.68-.28V2.4A.4.4,0,0,0,22,2H17.07A.4.4,0,0,0,16.79,2.68Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - fit to width</title><path class=\\\"cls-1\\\" d=\\\"M5.93,4.36,9.17,7.6a.39.39,0,0,1,0,.56l-1,1a.39.39,0,0,1-.56,0L4.36,5.93,2.68,7.6A.4.4,0,0,1,2,7.32V2.4A.4.4,0,0,1,2.4,2H7.32a.4.4,0,0,1,.28.68ZM7.6,14.83,4.36,18.07,2.68,16.4a.4.4,0,0,0-.68.28V21.6a.4.4,0,0,0,.4.4H7.32a.4.4,0,0,0,.28-.68L5.93,19.64,9.17,16.4a.39.39,0,0,0,0-.56l-1-1A.39.39,0,0,0,7.6,14.83ZM16.4,2.68l1.67,1.68L14.83,7.6a.39.39,0,0,0,0,.56l1,1a.39.39,0,0,0,.56,0l3.24-3.24L21.32,7.6A.4.4,0,0,0,22,7.32V2.4a.4.4,0,0,0-.4-.4H16.68A.4.4,0,0,0,16.4,2.68Zm-.56,12.15-1,1a.39.39,0,0,0,0,.56l3.24,3.24L16.4,21.32a.4.4,0,0,0,.28.68H21.6a.4.4,0,0,0,.4-.4V16.68a.4.4,0,0,0-.68-.28l-1.68,1.67L16.4,14.83A.39.39,0,0,0,15.84,14.83Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - in - fill</title><path class=\\\"cls-1\\\" d=\\\"M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm5,11H13v4H11V13H7V11h4V7h2v4h4Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - in - line</title><path class=\\\"cls-1\\\" d=\\\"M13,11h4v2H13v4H11V13H7V11h4V7h2Zm9,1A10,10,0,1,1,12,2,10,10,0,0,1,22,12Zm-2,0a8,8,0,1,0-8,8A8,8,0,0,0,20,12Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - marquee</title><path class=\\\"cls-1\\\" d=\\\"M3.05,18.84H6.21v-2.1H4.11V14.63H2v3.16A1,1,0,0,0,3.05,18.84ZM18.84,3.05a1,1,0,0,0-1.05-1H14.63V4.11h2.11v2.1h2.1ZM4.11,4.11h2.1V2H3.05a1,1,0,0,0-1,1V6.21H4.11ZM2,8.32H4.11v4.21H2Zm14.74,0h2.1v3.15h-2.1ZM22,21l-1.81-1.82a3.53,3.53,0,0,0,.59-1.95,3.64,3.64,0,1,0-1.65,3L21,22Zm-6.9-3.77a2.08,2.08,0,1,1,2.08,2.08A2.08,2.08,0,0,1,15.1,17.18ZM8.32,2h4.21V4.11H8.32Zm0,14.74h3.15v2.1H8.32Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - out - fill</title><path class=\\\"cls-1\\\" d=\\\"M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm5,11H7V11H17Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - out - line</title><path class=\\\"cls-1\\\" d=\\\"M7,11H17v2H7Zm15,1A10,10,0,1,1,12,2,10,10,0,0,1,22,12Zm-2,0a8,8,0,1,0-8,8A8,8,0,0,0,20,12Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M8.66671 11.3333V7.33325H7.33337V11.3333H8.66671Z\\\"></path><path d=\\\"M8.66671 5.99992V4.66659H7.33337V5.99992H8.66671Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.33337 7.99992C1.33337 4.32392 4.32404 1.33325 8.00004 1.33325C11.676 1.33325 14.6667 4.32392 14.6667 7.99992C14.6667 11.6759 11.676 14.6666 8.00004 14.6666C4.32404 14.6666 1.33337 11.6759 1.33337 7.99992ZM2.66671 7.99992C2.66671 10.9406 5.05937 13.3333 8.00004 13.3333C10.9407 13.3333 13.3334 10.9406 13.3334 7.99992C13.3334 5.05925 10.9407 2.66659 8.00004 2.66659C5.05937 2.66659 2.66671 5.05925 2.66671 7.99992Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 6.7H3C2.83431 6.7 2.7 6.83431 2.7 7V17C2.7 17.1657 2.83431 17.3 3 17.3H21C21.1657 17.3 21.3 17.1657 21.3 17V7C21.3 6.83431 21.1657 6.7 21 6.7ZM3 5C1.89543 5 1 5.89543 1 7V17C1 18.1046 1.89543 19 3 19H21C22.1046 19 23 18.1046 23 17V7C23 5.89543 22.1046 5 21 5H3Z\\\" fill=\\\"#868E96\\\"></path><rect x=\\\"5\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"5\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"9\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"9\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"13\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"13\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"17\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"17\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"7\\\" y=\\\"14.3\\\" width=\\\"10\\\" height=\\\"1.7\\\" fill=\\\"#868E96\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M26.6667 2.5H0V3.5H26.6667L30 6V0L26.6667 2.5ZM29 2V4L27.6667 3L29 2Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M25.8333 3.5H0V2.5H25.8333V0L30 3L25.8333 6L25.8333 3.5ZM26.8333 4.04777V1.95223L28.2886 3L26.8333 4.04777Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M29.2929 0L30 0.707092L27.7071 3L30 5.29291L29.2929 6L27 3.70709L26.9948 3.71228L26.7825 3.5H0V2.5H26.7825L26.9948 2.28772L27 2.29291L29.2929 0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M27.996 0L27.2889 0.707092L29.0818 2.5H0.995972V3.5H29.0777L27.2848 5.29291L27.9919 6L30.2869 3.70508L30.2929 3.71112L31 3.00403L30.994 2.99799L30.996 2.99597L30.2889 2.28888L30.2869 2.29089L27.996 0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M29 0H30V6H29V3.5H0V2.5H29V0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M26.03 3.30107L25.9689 3L26.03 2.69893C26.1689 2.01468 26.7755 1.5 27.5 1.5C28.3284 1.5 29 2.17157 29 3C29 3.82843 28.3284 4.5 27.5 4.5C26.7755 4.5 26.1689 3.98532 26.03 3.30107ZM25.05 3.5C25.2816 4.64112 26.2905 5.5 27.5 5.5C28.8807 5.5 30 4.38071 30 3C30 1.61929 28.8807 0.5 27.5 0.5C26.2905 0.5 25.2816 1.35888 25.05 2.5H0V3.5H25.05Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24.5 3.5H0V2.5H24.5L27 0L30 3L27 6L24.5 3.5ZM27 4.58579L25.4142 3L27 1.41421L28.5858 3L27 4.58579Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M26.004 5.49262L26.8701 6L29.9951 0.50739L29.129 5.09238e-06L27.7067 2.5L0.00402893 2.5L0.00402876 3.5L27.1377 3.5L26.004 5.49262Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M25 3.5H0V2.5H25V0.5H30V5.5H25V3.5ZM26 4.5V1.5H29V4.5H26Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line y1=\\\"1\\\" x2=\\\"30\\\" y2=\\\"1\\\" stroke=\\\"#485056\\\"></line></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.33736 2.5H30.004V3.5H3.33736L0.00402832 6V0L3.33736 2.5ZM1.00403 2V4L2.33736 3L1.00403 2Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4.16667 3.5H30V2.5H4.16667V0L0 3L4.16667 6L4.16667 3.5ZM3.16667 4.04777V1.95223L1.71144 3L3.16667 4.04777Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0.711136 0L0.00402832 0.707092L2.29695 3L0.00402832 5.29291L0.711136 6L3.00404 3.70709L3.00923 3.71228L3.22152 3.5H30.004V2.5H3.22152L3.00923 2.28772L3.00404 2.29291L0.711136 0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3.00403 0L3.71114 0.707092L1.91823 2.5H30.004V3.5H1.92226L3.71516 5.29291L3.00806 6L0.713135 3.70508L0.707108 3.71112L0 3.00403L0.00604248 2.99799L0.00402832 2.99597L0.711136 2.28888L0.713135 2.29089L3.00403 0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.33333 2.5H30V3.5H3.33333L0 6V0L3.33333 2.5ZM1 2V4L2.33333 3L1 2Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1.00403 0H0.00402832V6H1.00403V3.5H30.004V2.5H1.00403V0Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.96998 3.30107L4.03109 3L3.96998 2.69893C3.83108 2.01468 3.22452 1.5 2.5 1.5C1.67157 1.5 1 2.17157 1 3C1 3.82843 1.67157 4.5 2.5 4.5C3.22452 4.5 3.83108 3.98532 3.96998 3.30107ZM4.94999 3.5C4.71836 4.64112 3.70948 5.5 2.5 5.5C1.11929 5.5 0 4.38071 0 3C0 1.61929 1.11929 0.5 2.5 0.5C3.70948 0.5 4.71836 1.35888 4.94999 2.5H30V3.5H4.94999Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.50403 3.5H30.004V2.5H5.50403L3.00403 0L0.00402832 3L3.00403 6L5.50403 3.5ZM3.00403 4.58579L4.58981 3L3.00403 1.41421L1.41824 3L3.00403 4.58579Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0.870054 6L0.00402828 5.49261L3.12903 -2.73196e-07L3.99505 0.507385L2.86555 2.49264L30.004 2.49264L30.004 3.50741L2.2882 3.50742L0.870054 6Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.00403 3.5H30.004V2.5H5.00403V0.5H0.00402832V5.5H5.00403V3.5ZM4.00403 4.5V1.5H1.00403V4.5H4.00403Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 15 15\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon-lock</title><g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-lock\\\"><rect id=\\\"15-x-15\\\" fill=\\\"#D8D8D8\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"15\\\" height=\\\"15\\\"></rect><path d=\\\"M13.5,7.5 C13.5,6.67275 12.82725,6 12,6 L11.25,6 L11.25,3.75 C11.25,1.68225 9.56775,0 7.5,0 C5.43225,0 3.75,1.68225 3.75,3.75 L3.75,6 L3,6 C2.17275,6 1.5,6.67275 1.5,7.5 L1.5,13.5 C1.5,14.32725 2.17275,15 3,15 L12,15 C12.82725,15 13.5,14.32725 13.5,13.5 L13.5,7.5 Z M5.25,3.75 C5.25,2.5095 6.2595,1.5 7.5,1.5 C8.7405,1.5 9.75,2.5095 9.75,3.75 L9.75,6 L5.25,6 L5.25,3.75 Z\\\" id=\\\"Shape\\\" fill=\\\"#868E96\\\" fill-rule=\\\"nonzero\\\"></path></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - add style - fill</title><path class=\\\"cls-1\\\" d=\\\"M22,18.28V20H20.13v1.87h-1.7V20H16.56V18.28h1.87V16.41h1.7v1.87ZM15,15a2,2,0,0,0-.39,2.28l.2.41a3,3,0,0,1-.15,2.88A3,3,0,0,1,12.14,22H12a10,10,0,0,1-9.9-8.6,10,10,0,0,1,19.55-4A10.4,10.4,0,0,1,22,12.14a3,3,0,0,1-4.31,2.67l-.41-.2h0A2,2,0,0,0,15,15ZM6.5,12A1.5,1.5,0,1,0,5,10.51,1.5,1.5,0,0,0,6.5,12ZM9,15.51A1.5,1.5,0,1,0,7.5,17,1.5,1.5,0,0,0,9,15.51Zm3-9A1.5,1.5,0,1,0,10.5,8,1.5,1.5,0,0,0,12,6.5ZM15.5,9A1.5,1.5,0,1,0,14,7.5,1.5,1.5,0,0,0,15.5,9Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - add style - line</title><path class=\\\"cls-1\\\" d=\\\"M9,14.5A1.5,1.5,0,1,1,7.5,13,1.5,1.5,0,0,1,9,14.5ZM10.5,6A1.5,1.5,0,1,0,12,7.5,1.5,1.5,0,0,0,10.5,6Zm-3,3A1.5,1.5,0,1,0,9,10.5,1.5,1.5,0,0,0,7.5,9Zm7.2,6.36a2,2,0,0,0-.09,1.92l.2.41A3,3,0,0,1,12.14,22H12a9.74,9.74,0,0,1-2.62-.36A10,10,0,0,1,4.46,5.43,10,10,0,0,1,22,12.14a3,3,0,0,1-3,3,3.09,3.09,0,0,1-1.3-.3l-.41-.2A2,2,0,0,0,14.7,15.36Zm3.44-2.55.42.19A1,1,0,0,0,20,12.11a8,8,0,0,0-6.87-8A7.24,7.24,0,0,0,12,4,8,8,0,0,0,6,6.74a7.92,7.92,0,0,0-1.89,6.39A8.05,8.05,0,0,0,9.9,19.72,8.42,8.42,0,0,0,12,20h.11a1,1,0,0,0,.84-.48,1,1,0,0,0,.05-1l-.2-.42A3.92,3.92,0,0,1,13,14.3,4.05,4.05,0,0,1,18.14,12.81ZM14.5,6A1.5,1.5,0,1,0,16,7.5,1.5,1.5,0,0,0,14.5,6Zm5.63,12.28V16.41h-1.7v1.87H16.56V20h1.87v1.87h1.7V20H22V18.28Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - add</title><path class=\\\"cls-1\\\" d=\\\"M13.6,6.94H9.06V2.4a.4.4,0,0,0-.4-.4H7.34a.4.4,0,0,0-.4.4V6.94H2.4a.4.4,0,0,0-.4.4V8.66a.4.4,0,0,0,.4.4H6.94V13.6a.4.4,0,0,0,.4.4H8.66a.4.4,0,0,0,.4-.4V9.06H13.6a.4.4,0,0,0,.4-.4V7.34A.4.4,0,0,0,13.6,6.94Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - align centre</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm3.33-4.45H17.56v2.23H6.44ZM3.11,10.89H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11ZM6.44,6.44H17.56V8.67H6.44Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - align left</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm0-4.45H15.33v2.23H3.11Zm0-4.44H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11Zm0,4.44H15.33V8.67H3.11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - fill - align right</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm5.56-4.45H20.89v2.23H8.67ZM3.11,10.89H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11ZM8.67,6.44H20.89V8.67H8.67Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - bold</title><path class=\\\"cls-1\\\" d=\\\"M16.81,11.72A4.46,4.46,0,0,0,17.75,9a4.51,4.51,0,0,0-4.5-4.5H5.75v15h8a4.49,4.49,0,0,0,3.06-7.78ZM13.25,7.5a1.5,1.5,0,0,1,0,3H8.75v-3Zm.5,9h-5v-3h5a1.5,1.5,0,0,1,0,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - centre align</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm3.33-4.45H17.56v2.23H6.44ZM3.11,10.89H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11ZM6.44,6.44H17.56V8.67H6.44Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>Artboard 270</title><g><path class=\\\"cls-1\\\" d=\\\"M9.22,15,5.57,11.38,4,13l5.22,5.22L20,7.4,18.43,5.83Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - italic</title><path class=\\\"cls-1\\\" d=\\\"M18.68,6V4.75a.38.38,0,0,0-.38-.38H9.52a.38.38,0,0,0-.38.38V6a.38.38,0,0,0,.38.38h2.82L9.61,17.63H5.7a.38.38,0,0,0-.38.38v1.24a.38.38,0,0,0,.38.38h8.78a.38.38,0,0,0,.38-.38V18a.38.38,0,0,0-.38-.38H11.69L14.42,6.37H18.3A.38.38,0,0,0,18.68,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - left align</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm0-4.45H15.33v2.23H3.11Zm0-4.44H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11Zm0,4.44H15.33V8.67H3.11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - no colour</title><path class=\\\"cls-1\\\" d=\\\"M12,4a8,8,0,1,0,8,8A8,8,0,0,0,12,4Zm0,1.6A6.41,6.41,0,0,1,16,7l-9,9A6.39,6.39,0,0,1,12,5.6Zm0,12.8a6.39,6.39,0,0,1-3.92-1.35l9-8.94A6.39,6.39,0,0,1,12,18.4Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - right align</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm5.56-4.45H20.89v2.23H8.67ZM3.11,10.89H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11ZM8.67,6.44H20.89V8.67H8.67Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - add style - line</title><path class=\\\"cls-1\\\" d=\\\"M9,14.5A1.5,1.5,0,1,1,7.5,13,1.5,1.5,0,0,1,9,14.5ZM10.5,6A1.5,1.5,0,1,0,12,7.5,1.5,1.5,0,0,0,10.5,6Zm-3,3A1.5,1.5,0,1,0,9,10.5,1.5,1.5,0,0,0,7.5,9Zm7.2,6.36a2,2,0,0,0-.09,1.92l.2.41A3,3,0,0,1,12.14,22H12a9.74,9.74,0,0,1-2.62-.36A10,10,0,0,1,4.46,5.43,10,10,0,0,1,22,12.14a3,3,0,0,1-3,3,3.09,3.09,0,0,1-1.3-.3l-.41-.2A2,2,0,0,0,14.7,15.36Zm3.44-2.55.42.19A1,1,0,0,0,20,12.11a8,8,0,0,0-6.87-8A7.24,7.24,0,0,0,12,4,8,8,0,0,0,6,6.74a7.92,7.92,0,0,0-1.89,6.39A8.05,8.05,0,0,0,9.9,19.72,8.42,8.42,0,0,0,12,20h.11a1,1,0,0,0,.84-.48,1,1,0,0,0,.05-1l-.2-.42A3.92,3.92,0,0,1,13,14.3,4.05,4.05,0,0,1,18.14,12.81ZM14.5,6A1.5,1.5,0,1,0,16,7.5,1.5,1.5,0,0,0,14.5,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - text underline</title><path class=\\\"cls-1\\\" d=\\\"M5.32,18H18.68a.32.32,0,0,1,.32.32v1.36a.32.32,0,0,1-.32.32H5.32A.32.32,0,0,1,5,19.68V18.32A.32.32,0,0,1,5.32,18ZM6,4.32V9.79A6.15,6.15,0,0,0,11.21,16,6,6,0,0,0,18,10V4.32A.32.32,0,0,0,17.68,4H16.32a.32.32,0,0,0-.32.32v5.5A4.12,4.12,0,0,1,12.4,14,4,4,0,0,1,8,10V4.32A.32.32,0,0,0,7.68,4H6.32A.32.32,0,0,0,6,4.32Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19.903 8.586C19.854 8.48 19.793 8.379 19.707 8.293L13.707 2.293C13.621 2.207 13.52 2.146 13.414 2.097C13.384 2.083 13.352 2.075 13.32 2.064C13.236 2.036 13.15 2.018 13.061 2.013C13.04 2.011 13.021 2 13 2H6C4.897 2 4 2.897 4 4V20C4 21.103 4.897 22 6 22H18C19.103 22 20 21.103 20 20V9C20 8.979 19.989 8.96 19.987 8.938C19.982 8.849 19.965 8.763 19.936 8.679C19.926 8.647 19.917 8.616 19.903 8.586ZM16.586 8H14V5.414L16.586 8ZM6 20V4H12V9C12 9.553 12.447 10 13 10H18L18.002 20H6Z\\\" fill=\\\"#484848\\\"></path><path d=\\\"M8 12H16V14H8V12ZM8 16H16V18H8V16ZM8 8H10V10H8V8Z\\\" fill=\\\"#484848\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - operation - eraser</title><path class=\\\"cls-1\\\" d=\\\"M12.93,3.1,7.78,8.25,2.62,13.5a2.18,2.18,0,0,0,0,3.05L7.3,21.22a1.07,1.07,0,0,0,.76.32H20.68a.4.4,0,0,0,.4-.4V19.77a.4.4,0,0,0-.4-.4H13.53l7.84-7.84a2.17,2.17,0,0,0,0-3.06L16,3.1A2.17,2.17,0,0,0,12.93,3.1ZM8.51,19.37,4.17,15,9.32,9.78l.8-.81,5.37,5.37-4.94,4.94-.08.09h-2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - operation - redo</title><path class=\\\"cls-1\\\" d=\\\"M8.47,20.13H11.4a.6.6,0,0,0,.6-.6v-1.3a.6.6,0,0,0-.6-.6h-3a3.82,3.82,0,0,1-3.78-3,3.76,3.76,0,0,1,3.67-4.54h7.5V13a.4.4,0,0,0,.65.32l5.21-4.17a.41.41,0,0,0,0-.63L16.4,4.39a.4.4,0,0,0-.65.32V7.62H8.25a6.26,6.26,0,0,0-6.2,7.08A6.41,6.41,0,0,0,8.47,20.13Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - operation - undo</title><path class=\\\"cls-1\\\" d=\\\"M8.25,10.12h7.39a3.82,3.82,0,0,1,3.78,3,3.76,3.76,0,0,1-3.67,4.53H12.6a.6.6,0,0,0-.6.61v1.3a.6.6,0,0,0,.6.6h2.93A6.41,6.41,0,0,0,22,14.7a6.26,6.26,0,0,0-6.2-7.08H8.25V4.71a.4.4,0,0,0-.65-.32L2.39,8.56a.41.41,0,0,0,0,.63L7.6,13.36A.4.4,0,0,0,8.25,13Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6 6H18V15H20V6C20 4.89543 19.1046 4 18 4H6C4.89543 4 4 4.89543 4 6V15H6V6Z\\\" fill=\\\"#868E96\\\"></path><rect width=\\\"20\\\" height=\\\"2\\\" transform=\\\"matrix(1 0 0 -1 2 20)\\\" fill=\\\"#868E96\\\"></rect><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.75 12V14.25H11.25V12H9V10.5H11.25V8.25H12.75V10.5H15V12H12.75Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6 18H18V9H20V18C20 19.1046 19.1046 20 18 20H6C4.89543 20 4 19.1046 4 18V9H6V18Z\\\" fill=\\\"#868E96\\\"></path><rect x=\\\"2\\\" y=\\\"4\\\" width=\\\"20\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.75 12V9.75H11.25V12H9V13.5H11.25V15.75H12.75V13.5H15V12H12.75Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M17.0417 6.95828H16.2014V5.27772C16.2014 4.35342 15.4451 3.59717 14.5208 3.59717H9.47917C8.55486 3.59717 7.79861 4.35342 7.79861 5.27772V6.95828H6.95833H4.4375V8.63883H6.11806V18.7222C6.11806 19.6465 6.87431 20.4027 7.79861 20.4027H16.2014C17.1257 20.4027 17.8819 19.6465 17.8819 18.7222V8.63883H19.5625V6.95828H17.0417ZM9.47917 5.27772H14.5208V6.95828H9.47917V5.27772ZM7.79861 18.7222V8.63883H8.63889H15.3611H16.2014V18.7222H7.79861ZM12.8403 10.3194H14.5208V17.0416H12.8403V10.3194ZM9.47917 10.3194H11.1597V17.0416H9.47917V10.3194Z\\\" fill=\\\"#868E96\\\"></path><mask id=\\\"mask0\\\" mask-type=\\\"alpha\\\" maskUnits=\\\"userSpaceOnUse\\\" x=\\\"4\\\" y=\\\"3\\\" width=\\\"16\\\" height=\\\"18\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M17.0417 6.95828H16.2014V5.27772C16.2014 4.35342 15.4451 3.59717 14.5208 3.59717H9.47917C8.55486 3.59717 7.79861 4.35342 7.79861 5.27772V6.95828H6.95833H4.4375V8.63883H6.11806V18.7222C6.11806 19.6465 6.87431 20.4027 7.79861 20.4027H16.2014C17.1257 20.4027 17.8819 19.6465 17.8819 18.7222V8.63883H19.5625V6.95828H17.0417ZM9.47917 5.27772H14.5208V6.95828H9.47917V5.27772ZM7.79861 18.7222V8.63883H8.63889H15.3611H16.2014V18.7222H7.79861ZM12.8403 10.3194H14.5208V17.0416H12.8403V10.3194ZM9.47917 10.3194H11.1597V17.0416H9.47917V10.3194Z\\\" fill=\\\"white\\\"></path></mask><g mask=\\\"url(#mask0)\\\"></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.4917 13.5493H18.325V9.25016C18.329 9.23204 18.329 9.21328 18.325 9.19516C18.324 9.11363 18.3084 9.03293 18.2792 8.95683V8.87433C18.2352 8.77231 18.1731 8.67913 18.0958 8.59933L12.5958 3.09933C12.518 3.02624 12.4281 2.9673 12.33 2.92516H12.2475L12 2.8335H5.49166C4.47914 2.8335 3.65833 3.65431 3.65833 4.66683V19.3335C3.65833 20.346 4.47914 21.1668 5.49166 21.1668H10.9917V19.3335H5.49166V4.66683H10.9917V9.25016C10.9917 9.75642 11.4021 10.1668 11.9083 10.1668H16.4917V13.5493Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M20.25 17.5L17.0417 14.9975C16.9306 14.9085 16.7781 14.8919 16.6505 14.9547C16.5228 15.0175 16.4431 15.1486 16.4458 15.2908V16.895H12.7792V18.7283H16.4458V20.3417C16.4466 20.4823 16.5278 20.61 16.6547 20.6706C16.7816 20.7311 16.9319 20.7137 17.0417 20.6258L20.25 18.105C20.3461 18.0341 20.4028 17.9219 20.4028 17.8025C20.4028 17.6831 20.3461 17.5708 20.25 17.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M22 16.25L19 20L16 16.25H18.25V11H19.75V16.25H22Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 11H9C8.44772 11 8 10.5523 8 10V7H4V18H12V11ZM2 6.5C2 5.67157 2.67157 5 3.5 5H8.37868C8.7765 5 9.15804 5.15804 9.43934 5.43934L13.5607 9.56066C13.842 9.84197 14 10.2235 14 10.6213V18.5C14 19.3284 13.3284 20 12.5 20H3.5C2.67157 20 2 19.3284 2 18.5V6.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 11H9C8.44772 11 8 10.5523 8 10V7H4V18H12V11ZM2 6.5C2 5.67157 2.67157 5 3.5 5H8.37868C8.7765 5 9.15804 5.15804 9.43934 5.43934L13.5607 9.56066C13.842 9.84197 14 10.2235 14 10.6213V18.5C14 19.3284 13.3284 20 12.5 20H3.5C2.67157 20 2 19.3284 2 18.5V6.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M22 14.75L19 11L16 14.75H18.25V20H19.75V14.75H22Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24\\\" xml:space=\\\"preserve\\\"><path d=\\\"M2 4a2 2 0 0 1 2-2h9a1 1 0 0 1 .707.293l2 2A1 1 0 0 1 16 5h1.812a2 2 0 0 1 1.425.597l2.188 2.222A2 2 0 0 1 22 9.222V20a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2H4a2 2 0 0 1-2-2V4zm10.586 0 1 1H10a2 2 0 0 0-2 2v7a1 1 0 0 1-1-1v-2H5v2a3 3 0 0 0 3 3v2H4V4h8.586zM10 16v4h10V10h-3V7h-7v7h2v-2.414L15.414 15 12 18.414V16h-2z\\\" style=\\\"fill-rule:evenodd;clip-rule:evenodd\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - panel - thumbnail - fill_1</title><path class=\\\"cls-1\\\" d=\\\"M18.08,2H5.92a2,2,0,0,0-2,2V22L12,17.36,20.11,22V4A2,2,0,0,0,18.08,2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - panel - bookmark - line</title><path class=\\\"cls-1\\\" d=\\\"M18.08,1.45H5.92a2,2,0,0,0-2,2v18L12,16.82l8.11,4.63v-18A2,2,0,0,0,18.08,1.45Zm0,7.1V18L12,14.48,5.92,18V3.48H18.08Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - panel - outlines</title><path class=\\\"cls-1\\\" d=\\\"M4.59,12a1.31,1.31,0,1,1-1.31-1.31A1.31,1.31,0,0,1,4.59,12ZM3.28,4.44A1.31,1.31,0,1,0,4.59,5.75,1.31,1.31,0,0,0,3.28,4.44Zm0,12.5a1.31,1.31,0,1,0,1.31,1.31A1.31,1.31,0,0,0,3.28,16.94ZM7,13.25H22v-2.5H7ZM20.53,4.5H7V7H22V4.5ZM7,19.5H22V17H7Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - panel - thumbnail - fill</title><path class=\\\"cls-1\\\" d=\\\"M16.5,5.66H3.81A1.81,1.81,0,0,0,2,7.47V20.15A1.82,1.82,0,0,0,3.81,22H16.5a1.82,1.82,0,0,0,1.81-1.82V7.47A1.81,1.81,0,0,0,16.5,5.66ZM5.62,9.28h4.53v5.44H5.62Zm9.06,9.06H5.62V16.53h9.06Zm0-3.62H12V12.91h2.71Zm0-3.63H12V9.28h2.71ZM22,3.85V12H20.19V3.85H8.41V2H20.19A1.82,1.82,0,0,1,22,3.85Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - panel - thumbnail - line</title><path class=\\\"cls-1\\\" d=\\\"M16.5,5.66H3.81A1.81,1.81,0,0,0,2,7.47V20.15A1.82,1.82,0,0,0,3.81,22H16.5a1.82,1.82,0,0,0,1.81-1.82V7.47A1.81,1.81,0,0,0,16.5,5.66ZM3.81,20.15V7.47H16.5V20.15Zm6.34-5.43H5.62V9.28h4.53ZM12,16.53h2.71v1.81H5.62V16.53H12Zm0-7.25h2.71v1.81H12Zm0,3.63h2.71v1.81H12ZM22,3.85V12H20.19V3.85H8.41V2H20.19A1.82,1.82,0,0,1,22,3.85Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 14 14\\\" fill=\\\"#485056\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2.00223 14.0001C2.05623 14.0001 2.11023 13.9934 2.16356 13.9801L4.83023 13.3134C4.94756 13.2841 5.05489 13.2234 5.14023 13.1381L13.3356 4.94274C13.5876 4.69074 13.7262 4.35607 13.7262 4.00007C13.7262 3.64407 13.5876 3.3094 13.3356 3.0574L12.2782 2.00007C11.7742 1.49607 10.8969 1.49607 10.3929 2.00007L2.19756 10.1954C2.11223 10.2807 2.05156 10.3881 2.02223 10.5047L1.35556 13.1714C1.29823 13.3987 1.36556 13.6387 1.53089 13.8047C1.65689 13.9314 1.82756 14.0001 2.00223 14.0001ZM11.3356 2.94274L12.3929 4.00007L11.3356 5.0574L10.2782 4.00007L11.3356 2.94274ZM3.27089 11.0074L9.33556 4.94274L10.3929 6.00007L4.32756 12.0647L2.91823 12.4167L3.27089 11.0074Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -2 12 9\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 10</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke-linecap=\\\"square\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-544.000000, -777.000000)\\\" stroke=\\\"#4F565E\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-11\\\" transform=\\\"translate(0.500000, 63.000000)\\\"><g id=\\\"Group-15\\\" transform=\\\"translate(0.000000, 2.000000)\\\"><line x1=\\\"0\\\" y1=\\\"3.5\\\" x2=\\\"6\\\" y2=\\\"3.5\\\" id=\\\"Line\\\"></line><line x1=\\\"3\\\" y1=\\\"0.5\\\" x2=\\\"3\\\" y2=\\\"6.5\\\" id=\\\"Line-2\\\"></line></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -2 21 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M18.4261 8.09498L1.42611 0.0949834C1.07611 -0.0680166 0.663114 -0.0170167 0.365114 0.227983C0.0661136 0.472983 -0.0628864 0.867984 0.0301136 1.24198L1.96911 8.99998L0.0301136 16.758C-0.0638864 17.132 0.0661136 17.528 0.365114 17.773C0.548114 17.923 0.772114 18 1.00011 18C1.14511 18 1.29011 17.969 1.42611 17.905L18.4261 9.90498C18.7761 9.73998 19.0001 9.38798 19.0001 8.99998C19.0001 8.61198 18.7761 8.25998 18.4261 8.09498ZM2.48111 15.197L3.32011 11.84L9.00011 8.99998L3.32011 6.15998L2.48111 2.80298L15.6511 8.99998L2.48111 15.197Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -1 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16 2H2L2 16H16V2ZM2 0C0.895431 0 0 0.89543 0 2V16C0 17.1046 0.89543 18 2 18H16C17.1046 18 18 17.1046 18 16V2C18 0.895431 17.1046 0 16 0H2Z\\\"></path><path d=\\\"M12 1H13.5V17H12V1Z\\\"></path><path d=\\\"M4 4H10V5.75H4V4Z\\\"></path><path d=\\\"M4 7.5H10V9.25H4V7.5Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.29815 13.6088L7.53553 14.8462L8.5962 13.7855L7.35881 12.5482L8.59619 11.3108L7.53553 10.2501L6.29815 11.4875L5.06066 10.25L4 11.3107L5.23749 12.5482L4 13.7856L5.06066 14.8463L6.29815 13.6088Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5 21H19C20.103 21 21 20.103 21 19V8C21 7.735 20.895 7.48 20.707 7.293L16.707 3.293C16.52 3.105 16.266 3 16 3H5C3.897 3 3 3.897 3 5V19C3 20.103 3.897 21 5 21ZM15 19H9V14H15V19ZM13 7H11V5H13V7ZM5 5H7V9H9H11H13H14H15V5H15.586L19 8.414L19.001 19H17V14C17 12.897 16.103 12 15 12H9C7.897 12 7 12.897 7 14V19H5V5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - text - bold</title><path class=\\\"cls-1\\\" d=\\\"M16.81,11.72A4.46,4.46,0,0,0,17.75,9a4.51,4.51,0,0,0-4.5-4.5H5.75v15h8a4.49,4.49,0,0,0,3.06-7.78ZM13.25,7.5a1.5,1.5,0,0,1,0,3H8.75v-3Zm.5,9h-5v-3h5a1.5,1.5,0,0,1,0,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - text - italic</title><path class=\\\"cls-1\\\" d=\\\"M18.68,6V4.75a.38.38,0,0,0-.38-.38H9.52a.38.38,0,0,0-.38.38V6a.38.38,0,0,0,.38.38h2.82L9.61,17.63H5.7a.38.38,0,0,0-.38.38v1.24a.38.38,0,0,0,.38.38h8.78a.38.38,0,0,0,.38-.38V18a.38.38,0,0,0-.38-.38H11.69L14.42,6.37H18.3A.38.38,0,0,0,18.68,6Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 7H20V9H4V7ZM4 3H20V5H4V3ZM4 11H20V13H4V11ZM4 15H20V17H4V15ZM6 19H18V21H6V19Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - text - underline</title><path class=\\\"cls-1\\\" d=\\\"M5.32,18H18.68a.32.32,0,0,1,.32.32v1.36a.32.32,0,0,1-.32.32H5.32A.32.32,0,0,1,5,19.68V18.32A.32.32,0,0,1,5.32,18ZM6,4.32V9.79A6.15,6.15,0,0,0,11.21,16,6,6,0,0,0,18,10V4.32A.32.32,0,0,0,17.68,4H16.32a.32.32,0,0,0-.32.32v5.5A4.12,4.12,0,0,1,12.4,14,4,4,0,0,1,8,10V4.32A.32.32,0,0,0,7.68,4H6.32A.32.32,0,0,0,6,4.32Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 0 20 20\\\" fill=\\\"#868E96\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 20L8 18V15H13C13.553 15 14 14.553 14 14V12.414C14 11.888 13.786 11.372 13.414 11L12 9.586V6C12.553 6 13 5.553 13 5V2C13 0.897 12.103 0 11 0H3C1.897 0 1 0.897 1 2V5C1 5.553 1.448 6 2 6V9.586L0.586 11C0.213 11.372 0 11.888 0 12.414V14C0 14.553 0.448 15 1 15H6V18L7 20ZM3 2H11V4H3V2ZM2 12.414L3.707 10.707C3.895 10.52 4 10.266 4 10V6H10V10C10 10.266 10.105 10.52 10.293 10.707L12 12.414V13H2V12.414Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path id=\\\"svg_1\\\" fill=\\\"black\\\" d=\\\"m19.27838,3.27762c-0.0298,-0.11112 -0.1323,-0.18778 -0.2473,-0.18396c-8.04996,0.26687 -14.4939,6.87671 -14.4939,14.99162c0,0.9567 0.08957,1.8925 0.26077,2.7995c0.02206,0.1168 0.12473,0.2005 0.24363,0.2005l1.52753,0c0.1613,0 0.2803,-0.1505 0.24707,-0.3083c-0.18284,-0.8685 -0.279,-1.7689 -0.279,-2.6917c0,-7.1797 5.8203,-13 13,-13c0.1133,0 0.1969,-0.10705 0.1676,-0.21648l-0.4264,-1.59118z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - callout - fill</title><path class=\\\"cls-1\\\" d=\\\"M15.5,12.2v4.42h-8V14.87a.4.4,0,0,0-.65-.31L3.37,17.31a.41.41,0,0,0,0,.63L6.82,20.7a.4.4,0,0,0,.65-.32V18.62h9.11a.93.93,0,0,0,.93-.9l0-5.52Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M17.46,12.2H19.2A1.79,1.79,0,0,0,21,10.4V5a1.79,1.79,0,0,0-1.8-1.8H4.8A1.79,1.79,0,0,0,3,5V10.4a1.79,1.79,0,0,0,1.8,1.8H17.46Z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path fill=\\\"default\\\" class=\\\"st0\\\" d=\\\"M15.2,12.2v4H7.8v-1.6c0-0.3-0.4-0.5-0.6-0.3l-3.2,2.5c-0.2,0.1-0.2,0.4,0,0.6L7.2,20c0.2,0.2,0.6,0,0.6-0.3 v-1.6h8.3c0.5,0,0.9-0.4,0.9-0.8l0-5.1H15.2z\\\"></path><path class=\\\"st0\\\" d=\\\"M17,12.2h1.6c0.9,0,1.7-0.7,1.7-1.7V5.6c0-0.9-0.7-1.7-1.7-1.7H5.4C4.5,4,3.7,4.7,3.7,5.6v4.9 c0,0.9,0.7,1.7,1.7,1.7h9.8H17z M5.6,10.4V5.8h12.8l0,4.6H5.6z\\\"></path><path fill=\\\"none\\\" d=\\\"M5.6,10.4V5.8h12.8l0,4.6H5.6z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"fill: rgba(0, 0, 0, 1);transform: ;msFilter:;\\\"><path d=\\\"M5,2C3.897,2,3,2.897,3,4v12c0,1.103,0.897,2,2,2h3.586L12,21.414L15.414,18H19c1.103,0,2-0.897,2-2V4c0-1.103-0.897-2-2-2 H5z M19,16h-4.414L12,18.586L9.414,16H5V4h14V16z\\\"></path><path d=\\\"M11 6H13V12H11zM11 13H13V15H11z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - check - stamp</title><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.19 3H4.8C3.80589 3 3 3.80589 3 4.8V19.2C3 20.1941 3.80589 21 4.8 21H19.19C20.1818 20.9945 20.9845 20.1918 20.99 19.2V4.8C20.9845 3.80816 20.1818 3.00546 19.19 3ZM4.8 19.2V4.8H19.19V19.2H4.8Z\\\"></path><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11.01 12.99L8.99998 10.99L7.72998 12.26L11.13 15.66L16.26 9.49998L14.88 8.34998L11.01 12.99V12.99Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}.cls-2{fill:#fff;}</style></defs><title>icon - tool - comment - fill</title><path class=\\\"cls-1\\\" d=\\\"M20,2.46H4a2,2,0,0,0-2,2v10a2,2,0,0,0,2,2H7v5.08l6.35-5.08H20a2,2,0,0,0,2-2v-10A2,2,0,0,0,20,2.46Zm-4.5,10H6v-2h9.5Zm2.5-4H6v-2H18Z\\\"></path><path class=\\\"cls-2\\\" d=\\\"M15.5,12.46H6v-2h9.5Zm2.5-4H6v-2H18Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - comment - line</title><path class=\\\"cls-1\\\" d=\\\"M20,2.46H4a2,2,0,0,0-2,2v10a2,2,0,0,0,2,2H7v5.08l6.35-5.08H20a2,2,0,0,0,2-2v-10A2,2,0,0,0,20,2.46Zm0,12H12.65L9,17.38V14.46H4v-10H20Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M18,8.46H6v-2H18Zm-2.5,4H6v-2h9.5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - cross - stamp</title><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.2 3H4.8C3.80816 3.00546 3.00546 3.80816 3 4.8V19.2C3.00546 20.1918 3.80816 20.9945 4.8 21H19.2C20.1918 20.9945 20.9945 20.1918 21 19.2V4.8C20.9945 3.80816 20.1918 3.00546 19.2 3ZM4.8 19.2V4.8H19.2V19.2H4.8Z\\\"></path><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.5399 8.18005L11.9999 10.7301L9.45993 8.18005L8.17993 9.46005L10.7299 12.0001L8.17993 14.5401L9.45993 15.8201L11.9999 13.2701L14.5399 15.8201L15.8199 14.5401L13.2699 12.0001L15.8199 9.46005L14.5399 8.18005V8.18005Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.19 3H4.8C3.80589 3 3 3.80589 3 4.8V19.2C3 20.1941 3.80589 21 4.8 21H19.19C20.1818 20.9945 20.9845 20.1918 20.99 19.2V4.8C20.9845 3.80816 20.1818 3.00546 19.19 3ZM4.8 19.2V4.8H19.19V19.2H4.8Z\\\"></path><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.0001 8.33997C9.97873 8.33997 8.34009 9.9786 8.34009 12C8.34009 14.0213 9.97873 15.66 12.0001 15.66C14.0215 15.66 15.6601 14.0213 15.6601 12C15.6332 9.98986 14.0102 8.36688 12.0001 8.33997Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><defs><style>.cls-1{fill:#abb0c4;} .cls-0{fill: none}</style></defs><title>icon - tool - free highlight - fill</title><rect class=\\\"cls-2\\\" x=\\\"4\\\" y=\\\"5\\\" width=\\\"16\\\" height=\\\"16\\\" rx=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"#868E96\\\" strokestroke-width=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"5\\\" y=\\\"2\\\" width=\\\"2\\\" height=\\\"4\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"17\\\" y=\\\"2\\\" width=\\\"2\\\" height=\\\"4\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"3\\\" y=\\\"8\\\" width=\\\"18\\\" height=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"7\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"11\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"15\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - free highlight - fill</title><path class=\\\"cls-1\\\" d=\\\"M20.87,7a1,1,0,0,1-.29.71L12.8,15.34h0a1.2,1.2,0,0,1-.53.29l-3.81.87L7.18,17.78H4.11l2-2.46,1.09-4.79a1,1,0,0,1,.3-.54l7.82-7.7a.89.89,0,0,1,1.32,0l4,4A.73.73,0,0,1,20.87,7Zm-9,6.48L9.33,11.11a.4.4,0,0,0-.65.2l-.77,3.33a.39.39,0,0,0,.49.46l3.29-1A.39.39,0,0,0,11.84,13.44Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M19,17.59a18.9,18.9,0,0,1,.76,3.31A6.18,6.18,0,0,0,16.29,19a7.6,7.6,0,0,0-3.54.35,37.3,37.3,0,0,0-4.07,1.72,7,7,0,0,1-4.09.9,1.72,1.72,0,0,1-1.06-.74,1.62,1.62,0,0,1-.22-.46,1.71,1.71,0,0,1-.09-.3,2.4,2.4,0,0,1,.1-1.6A2.51,2.51,0,0,1,3.88,18s.39,1.93.39,1.93a.26.26,0,0,0-.22.24c0,.29,1.18.13,2.15-.23a13.24,13.24,0,0,0,2-1,20.92,20.92,0,0,1,4.44-2.15,8.49,8.49,0,0,1,3.88-.36,4.88,4.88,0,0,1,1.72.66C18.42,17.18,19,17.59,19,17.59Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - free highlight - line</title><path class=\\\"cls-1\\\" d=\\\"M19,17.59a18,18,0,0,1,.76,3.31A6.14,6.14,0,0,0,16.28,19a7.74,7.74,0,0,0-3.54.35,37.3,37.3,0,0,0-4.07,1.72,7,7,0,0,1-4.09.9,1.82,1.82,0,0,1-1.06-.74,2,2,0,0,1-.22-.46,1.14,1.14,0,0,0-.09-.3,2.38,2.38,0,0,1,.11-1.6A2.29,2.29,0,0,1,3.88,18l.38,1.93a.27.27,0,0,0-.22.24c0,.29,1.19.13,2.15-.23a12.88,12.88,0,0,0,2-1,20.85,20.85,0,0,1,4.43-2.15,8.52,8.52,0,0,1,3.88-.36,4.88,4.88,0,0,1,1.72.66C18.41,17.18,19,17.59,19,17.59Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M20.69,6.29l-.05,0L16.69,2.3a.94.94,0,0,0-1.33,0,.08.08,0,0,0,0,0L7.45,10.11a.8.8,0,0,0-.29.49L6.07,15.39l-1.9,2.39H7.23l1.21-1.21,3.84-.86a.8.8,0,0,0,.5-.3l7.86-7.79A1,1,0,0,0,20.69,6.29ZM11.9,13.52,9.32,10.94,16.1,4.27l2.58,2.58Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect width=\\\"24\\\" height=\\\"24\\\" rx=\\\"4\\\" fill=\\\"none\\\"></rect><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18.5575 5.37583V8.00667C18.5365 8.18801 18.391 8.32966 18.2092 8.34583H17.4575C17.2499 8.34583 17.0817 8.17757 17.0817 7.97V6.97083H13.0117V17.5125H14.4233C14.6309 17.5125 14.7992 17.6808 14.7992 17.8883V18.64C14.7992 18.8476 14.6309 19.0158 14.4233 19.0158H9.16167C8.9541 19.0158 8.78583 18.8476 8.78583 18.64V17.8883C8.78583 17.6808 8.9541 17.5125 9.16167 17.5125H10.5733V6.97083H6.53083V8.00667C6.5119 8.1998 6.34905 8.34676 6.155 8.34583H5.37583C5.17223 8.33656 5.00927 8.1736 5 7.97V5.37583C5 5.16827 5.16827 5 5.37583 5H18.2092C18.4059 5.01443 18.558 5.17855 18.5575 5.37583Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M20 2H4C2.89543 2 2 2.89543 2 4V20C2 21.1046 2.89543 22 4 22H20C21.1046 22 22 21.1046 22 20V4C22 2.89543 21.1046 2 20 2ZM4 0C1.79086 0 0 1.79086 0 4V20C0 22.2091 1.79086 24 4 24H20C22.2091 24 24 22.2091 24 20V4C24 1.79086 22.2091 0 20 0H4Z\\\" fill=\\\"stroke\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - highlight</title><path class=\\\"cls-1\\\" d=\\\"M9.91,13.07h3.86L11.84,8.46Zm5.46,3.68L14.62,15H9.05L7.77,18H5.63L10.45,6.64a1,1,0,0,1,1-.64h1a1.23,1.23,0,0,1,1,.64l2,4.91V4H5.85A2.22,2.22,0,0,0,3.63,6.22V17.78A2.22,2.22,0,0,0,5.85,20h9.52Z\\\"></path><rect class=\\\"cls-1\\\" x=\\\"18.37\\\" y=\\\"2\\\" width=\\\"2\\\" height=\\\"20\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}.cls-2{fill:#fff;}</style></defs><title>icon - tool - image - fill</title><path class=\\\"cls-1\\\" d=\\\"M19.78,2H4.22A2.23,2.23,0,0,0,2,4.22V19.78A2.23,2.23,0,0,0,4.22,22H19.78A2.23,2.23,0,0,0,22,19.78V4.22A2.23,2.23,0,0,0,19.78,2ZM14.13,9.6l5.65,9H4.22l3.55-5.18,2.06,3Z\\\"></path><polygon class=\\\"cls-2\\\" points=\\\"14.13 9.6 19.78 18.63 11.31 18.63 8.49 18.63 4.22 18.63 7.77 13.45 9.84 16.47 14.13 9.6\\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - image - line</title><path class=\\\"cls-1\\\" d=\\\"M19.89,2H4.33A2.23,2.23,0,0,0,2.11,4.22V19.78A2.23,2.23,0,0,0,4.33,22H19.89a2.22,2.22,0,0,0,2.22-2.22V4.22A2.22,2.22,0,0,0,19.89,2ZM4.33,19.78V4.22H19.89V19.78Z\\\"></path><polygon class=\\\"cls-1\\\" points=\\\"13.94 8.13 18.78 15.87 11.52 15.87 9.1 15.87 5.45 15.87 8.48 11.43 10.26 14.02 13.94 8.13\\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - link</title><g><rect class=\\\"cls-1\\\" x=\\\"5.51\\\" y=\\\"10.92\\\" width=\\\"12.99\\\" height=\\\"2.16\\\" transform=\\\"translate(-4.97 12) rotate(-45)\\\"></rect><path class=\\\"cls-1\\\" d=\\\"M9.7,18.89A3.25,3.25,0,0,1,5.11,14.3l3.06-3.07L6.64,9.7,3.58,12.77a5.41,5.41,0,0,0,7.66,7.65l3.06-3.06-1.53-1.53Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M20.42,3.58a5.41,5.41,0,0,0-7.65,0L9.7,6.64l1.54,1.53L14.3,5.11A3.25,3.25,0,0,1,18.89,9.7l-3.06,3.07,1.53,1.53,3.06-3.07A5.41,5.41,0,0,0,20.42,3.58Z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19 8C19 7.44772 19.4477 7 20 7C20.5523 7 21 7.44772 21 8C21 8.55228 20.5523 9 20 9C19.4477 9 19 8.55228 19 8Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 12C19 11.4477 19.4477 11 20 11C20.5523 11 21 11.4477 21 12C21 12.5523 20.5523 13 20 13C19.4477 13 19 12.5523 19 12Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 16C19 15.4477 19.4477 15 20 15C20.5523 15 21 15.4477 21 16C21 16.5523 20.5523 17 20 17C19.4477 17 19 16.5523 19 16Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 20C15 19.4477 15.4477 19 16 19C16.5523 19 17 19.4477 17 20C17 20.5523 16.5523 21 16 21C15.4477 21 15 20.5523 15 20Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 20C11 19.4477 11.4477 19 12 19C12.5523 19 13 19.4477 13 20C13 20.5523 12.5523 21 12 21C11.4477 21 11 20.5523 11 20Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21 4.90556C21 5.13138 20.7893 5.29793 20.5679 5.25357C19.7378 5.08725 18.8791 5 18 5C10.8203 5 5 10.8203 5 18C5 18.8791 5.08725 19.7378 5.25357 20.5679C5.29793 20.7893 5.13138 21 4.90556 21H3.70876C3.47096 21 3.26516 20.8327 3.22424 20.5984C3.07685 19.7544 3 18.8862 3 18C3 9.71573 9.71573 3 18 3C18.8862 3 19.7544 3.07685 20.5984 3.22424C20.8327 3.26516 21 3.47096 21 3.70876V4.90556Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 20C19 19.4477 19.4477 19 20 19C20.5523 19 21 19.4477 21 20C21 20.5523 20.5523 21 20 21C19.4477 21 19 20.5523 19 20Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M12,2C6.5,2,2,6.5,2,12c0,5.5,4.5,10,10,10c5.5,0,10-4.5,10-10C22,6.5,17.5,2,12,2z M4.2,13.8 C4.1,13.2,4,12.6,4,12c0-4.4,3.6-8,8-8c0.6,0,1.2,0.1,1.8,0.2L4.2,13.8z M5,15.8L15.8,5c1.3,0.7,2.4,1.8,3.1,3.1L8.1,19l0,0 C6.8,18.2,5.7,17.1,5,15.8z M12,20c-0.6,0-1.1-0.1-1.6-0.2l0,0l9.4-9.5c0.1,0.5,0.2,1.1,0.2,1.7C20,16.4,16.4,20,12,20z\\\"></path><path fill=\\\"none\\\" d=\\\"M13.8,4.2l-9.6,9.6C4.1,13.2,4,12.6,4,12c0-4.4,3.6-8,8-8C12.6,4,13.2,4.1,13.8,4.2z M15.8,5L5,15.8 c0.7,1.3,1.8,2.4,3.1,3.1l0,0L19,8.1C18.2,6.8,17.1,5.7,15.8,5z M19.8,10.3l-9.4,9.5l0,0c0.5,0.1,1.1,0.2,1.6,0.2c4.4,0,8-3.6,8-8 C20,11.4,19.9,10.9,19.8,10.3z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}.cls-2{fill:#fff;}</style></defs><title>icon - tool - measurement - area - fill</title><path class=\\\"cls-1\\\" d=\\\"M19.14,2H4.86A2.86,2.86,0,0,0,2,4.86V19.14A2.86,2.86,0,0,0,4.86,22H19.14A2.86,2.86,0,0,0,22,19.14V4.86A2.86,2.86,0,0,0,19.14,2ZM10.22,4H13L4,13V10.22ZM4,20V18.71L18.71,4H20V5.54L5.54,20Zm10.06,0H11.23L20,11.23v2.83Z\\\"></path><path class=\\\"cls-2\\\" d=\\\"M10.22,4H13L4,13V10.22ZM4,20V18.71L18.71,4H20V5.54L5.54,20Zm10.06,0H11.23L20,11.23v2.83Z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M18.5,2.8H5.5C4,2.8,2.8,4,2.8,5.5v13.1c0,1.4,1.2,2.6,2.6,2.6h13.1c1.4,0,2.6-1.2,2.6-2.6V5.5 C21.2,4,20,2.8,18.5,2.8z M4.7,4.7h5.7l-5.7,5.7V4.7z M4.7,18.2v-5.2l0,0l8.3-8.3l0,0h5.2L4.7,18.2z M6.1,19.3L19.3,6.1l0,5.2l-8,8 H6.1z M13.9,19.3l5.4-5.4l0,5.4H13.9z\\\"></path><path fill=\\\"none\\\" d=\\\"M10.4,4.7l-5.7,5.7V4.7H10.4z M12.9,4.7L12.9,4.7l-8.2,8.3l0,0v5.2L18.2,4.7H12.9z M19.3,6.1L6.1,19.3h5.2l8-8 L19.3,6.1z M19.3,13.9l-5.4,5.4h5.4L19.3,13.9z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M21.9,8.9l-9.2-6.7c-0.4-0.3-1-0.3-1.5,0L2.1,8.9c-0.4,0.3-0.6,0.9-0.5,1.4l3.5,10.8C5.3,21.6,5.8,22,6.3,22 h11.3c0.5,0,1-0.4,1.2-0.9l3.5-10.8C22.6,9.8,22.4,9.2,21.9,8.9z M12,4.3l1.9,1.4l-8.9,8.9l0,0l-1.4-4.2L12,4.3z M6.9,20.1l-1.1-3.4 l0,0l9.8-9.8l3.6,2.6h0L8.6,20.1H6.9z M17.1,20.1h-5.4l8.1-8.2h0L17.1,20.1z\\\"></path><path fill=\\\"none\\\" d=\\\"M13.9,5.7l-8.9,8.9l-1.4-4.2l8.3-6L13.9,5.7z M19.2,9.5l-3.6-2.6l-9.8,9.8l1.1,3.4h1.7L19.2,9.5L19.2,9.5z M19.8,11.9l-8.1,8.2h5.4L19.8,11.9L19.8,11.9z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} .st1{fill:none;} </style><path class=\\\"st0\\\" d=\\\"M20.5,10.7c-0.5-4.2-4.2-7.3-8.4-7.3c-3.3,0-6.3,1.9-7.5,4.9C2,9.2,0.1,11.5,0,14.1c0,3.2,2.8,6,6,6h13.2 c2.6,0,4.9-2.2,4.7-4.8C24,13.2,22.6,11.3,20.5,10.7z M18.9,17.4H6.4C4.6,17.4,3,15.8,3,14c0.1-1.7,1.3-3.1,3-3.4l0.7-0.1l0.3-0.6 c0.7-2.2,2.8-3.8,5.1-3.8c3.1,0,5.6,2.5,5.6,5.6v1.2h1.2c1.2,0,2.2,1,2.2,2.2C21.1,16.3,20.1,17.4,18.9,17.4z\\\"></path><path fill=\\\"none\\\" d=\\\"M18.9,17.4H6.4C4.6,17.4,3,15.9,3,14c0.1-1.7,1.3-3.1,3-3.4l0.7-0.1l0.3-0.7c0.7-2.2,2.8-3.8,5.1-3.8 c3.1,0,5.6,2.5,5.6,5.6v1.2h1.2c1.2,0,2.2,1,2.2,2.2C21.1,16.4,20.1,17.4,18.9,17.4z\\\"></path><polygon class=\\\"st0\\\" points=\\\"11.4,4.9 12.6,5.9 4.5,17.1 3.3,16.1 \\\"></polygon><polygon class=\\\"st0\\\" points=\\\"15.5,7.1 16.7,8 9.5,18.3 8.3,17.4 \\\"></polygon><polygon class=\\\"st0\\\" points=\\\"18.3,10.8 19.3,11.6 14.5,18.3 13.5,17.5 \\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - measurement - distance - fill</title><path class=\\\"cls-1\\\" d=\\\"M21.46,6.59l-4.05-4a2,2,0,0,0-2.79.08l-12,12a2,2,0,0,0-.08,2.79l4.05,4.05a2,2,0,0,0,2.79-.08l12-12A2,2,0,0,0,21.46,6.59ZM7.27,16.73l-2-2,1.35-1.35,2,2Zm3.38-2L7.94,12,9.3,10.65l2.7,2.7Zm2-3.38-2-2L12,7.94l2,2Zm3.38-2L13.35,6.59,14.7,5.24l2.71,2.7Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - measurement - distance - line</title><path class=\\\"cls-1\\\" d=\\\"M21.46,6.59l-4.05-4a2,2,0,0,0-2.79.08l-12,12a2,2,0,0,0-.08,2.79l4.05,4.05a2,2,0,0,0,2.79-.08l12-12A2,2,0,0,0,21.46,6.59ZM20,8,8,20a.43.43,0,0,1-.09.06s0,0,0,0l-4-4A.17.17,0,0,1,4,16L5.24,14.7l2,2,1.35-1.35-2-2L7.94,12l2.71,2.7L12,13.35l-2.7-2.7L10.65,9.3l2,2L14,10l-2-2,1.35-1.35L16.06,9.3l1.35-1.36L14.7,5.24,16,4c.06-.05.1-.06.09-.08l4,4A.17.17,0,0,1,20,8Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - measurement - perimeter</title><path class=\\\"cls-1\\\" d=\\\"M16.07,4.3H7.92v-2h8.15ZM4,15.43H2v1.85a1.81,1.81,0,0,0,1.81,1.8h1.8v-2H4ZM4,4.28H5.6v-2H3.8A1.81,1.81,0,0,0,2,4.08V5.89H4ZM4,8.21H2v4.91H4ZM17.71,21.6a.4.4,0,0,0,.68-.28V14.8a.4.4,0,0,0-.68-.28l-3.26,3.26a.4.4,0,0,0,0,.56ZM20,5.89h2V4.09a1.82,1.82,0,0,0-1.81-1.81h-1.8v2H20Zm0,2.32v4.91h2V8.21ZM20,17H18.4v2h1.8A1.81,1.81,0,0,0,22,17.28v-1.8H20ZM9.27,17H7.92v2H9.27V21h2V14.69h-2Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.2204 6.27987L12.0004 10.4999L7.78036 6.27987C7.62482 6.12741 7.3759 6.12741 7.22036 6.27987L6.28036 7.21987C6.1279 7.37541 6.1279 7.62433 6.28036 7.77987L10.5004 11.9999L6.28036 16.2199C6.1279 16.3754 6.1279 16.6243 6.28036 16.7799L7.22036 17.7199C7.3759 17.8723 7.62482 17.8723 7.78036 17.7199L12.0004 13.4999L16.2204 17.7199C16.3759 17.8723 16.6248 17.8723 16.7804 17.7199L17.7204 16.7799C17.8728 16.6243 17.8728 16.3754 17.7204 16.2199L13.5004 11.9999L17.7204 7.77987C17.8728 7.62433 17.8728 7.37541 17.7204 7.21987L16.7804 6.27987C16.6248 6.12741 16.3759 6.12741 16.2204 6.27987Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 529 472\\\" preserveAspectRatio=\\\"xMidYMid meet\\\"><metadata> Created by potrace 1.16, written by Peter Selinger 2001-2019 </metadata><title>icon - 3D</title><g transform=\\\"translate(0,472) scale(0.1,-0.1)\\\" fill=\\\"#abb0c4\\\" stroke=\\\"none\\\"><path d=\\\"M2414 4710 c-12 -5 -39 -11 -60 -15 -43 -7 -81 -14 -104 -18 -8 -2 -33 -8 -55 -14 -22 -7 -54 -14 -71 -16 -17 -3 -40 -9 -50 -15 -11 -5 -32 -12 -49 -15 -16 -3 -37 -8 -45 -11 -8 -3 -26 -8 -40 -10 -43 -8 -81 -19 -255 -71 -49 -15 -153 -45 -230 -66 -77 -22 -148 -41 -157 -44 -10 -3 -28 -8 -40 -11 -30 -7 -40 -10 -58 -17 -19 -6 -105 -32 -145 -43 -16 -4 -32 -8 -35 -9 -3 -1 -25 -7 -50 -14 -25 -6 -63 -18 -85 -25 -56 -19 -185 -58 -199 -60 -6 -1 -15 -4 -21 -7 -5 -4 -41 -16 -80 -29 -81 -25 -187 -79 -229 -116 -28 -25 -29 -33 -4 -38 64 -12 128 -31 128 -38 0 -5 4 -7 9 -3 5 3 29 -2 53 -10 24 -9 51 -18 60 -20 21 -6 16 -4 198 -55 80 -23 152 -43 160 -45 8 -3 76 -21 150 -42 74 -20 137 -39 140 -42 5 -6 19 -10 60 -17 14 -3 32 -7 40 -11 16 -6 24 -9 55 -17 92 -24 309 -86 323 -92 23 -10 55 -18 111 -30 14 -3 28 -7 33 -10 4 -3 16 -7 25 -9 10 -2 83 -22 163 -45 80 -23 197 -55 260 -72 63 -17 117 -34 120 -37 3 -3 12 -8 20 -9 67 -16 61 -14 130 -35 51 -16 58 -16 110 0 69 21 82 24 138 37 9 2 39 12 66 21 26 9 57 19 67 21 11 2 29 7 42 10 12 3 27 6 32 7 6 2 15 5 20 9 9 5 303 88 365 103 8 2 15 4 15 5 0 1 7 3 15 5 76 19 80 20 102 29 14 6 231 68 323 92 31 8 39 11 55 17 8 4 26 8 40 11 41 7 55 11 60 17 3 3 75 24 160 47 169 47 190 52 205 55 6 2 16 6 23 11 7 4 16 5 19 2 3 -3 11 -2 17 4 7 5 86 30 176 55 91 25 190 53 220 61 30 9 63 18 74 20 30 6 30 11 0 38 -49 43 -153 92 -284 134 -201 65 -258 82 -275 82 -8 0 -15 4 -15 8 0 5 -6 9 -12 10 -7 0 -22 3 -33 6 -11 3 -40 10 -65 16 -42 10 -64 17 -115 36 -26 9 -30 10 -135 38 -215 57 -296 81 -302 90 -4 6 -8 8 -8 4 0 -6 -65 11 -225 58 -66 19 -84 24 -120 31 -16 2 -48 11 -70 19 -22 8 -51 17 -65 20 -14 3 -43 10 -65 16 -61 17 -53 15 -127 34 -13 3 -41 7 -63 10 -22 2 -62 7 -90 10 -78 10 -428 12 -451 4z\\\"></path><path d=\\\"M63 3692 c-24 -57 -48 -152 -53 -207 -5 -49 -5 -2405 0 -2435 8 -56 55 -185 87 -239 44 -74 149 -186 210 -224 39 -25 104 -52 145 -62 9 -2 52 -15 95 -29 158 -50 213 -66 228 -66 8 0 15 -5 15 -12 0 -6 2 -9 6 -6 3 3 26 -1 52 -9 60 -18 81 -24 115 -30 15 -3 27 -10 27 -15 0 -5 4 -6 10 -3 5 3 16 3 23 -2 6 -4 14 -8 17 -8 36 -6 120 -30 120 -34 0 -4 8 -7 18 -8 9 0 58 -13 107 -27 96 -28 114 -33 144 -40 11 -3 30 -10 43 -17 13 -7 24 -12 26 -11 1 1 3 2 5 1 1 0 9 -2 17 -4 8 -2 25 -6 38 -9 12 -3 32 -9 45 -12 31 -7 40 -10 57 -17 8 -4 26 -8 40 -11 14 -2 59 -14 100 -26 41 -12 86 -23 100 -26 14 -2 36 -9 50 -14 24 -9 95 -27 135 -34 11 -2 34 -6 51 -10 17 -3 48 -8 70 -12 21 -3 48 -7 59 -9 11 -3 36 -7 55 -11 19 -4 55 -7 80 -8 42 -1 44 1 51 31 3 18 7 704 8 1526 2 1224 0 1494 -11 1495 -7 0 -22 3 -33 6 -11 3 -81 22 -155 43 -74 20 -137 39 -140 42 -5 6 -19 10 -60 17 -14 3 -41 10 -60 16 -19 7 -39 13 -45 14 -64 16 -337 94 -344 99 -6 3 -20 8 -31 11 -11 2 -28 6 -37 9 -10 3 -83 23 -163 45 -79 22 -151 43 -160 46 -8 4 -18 7 -22 6 -4 -1 -20 3 -35 10 -30 12 -36 14 -70 22 -50 13 -64 16 -80 21 -164 45 -256 71 -343 96 -58 17 -136 39 -175 50 -38 11 -77 23 -85 26 -21 8 -49 16 -100 27 -11 3 -25 8 -31 11 -5 4 -25 9 -42 12 -18 3 -37 9 -43 14 -6 5 -14 6 -17 2 -4 -3 -13 0 -22 7 -8 7 -15 10 -15 7 0 -3 -14 -2 -31 3 -29 9 -31 7 -46 -28z m932 -852 c0 -2 9 -4 20 -5 91 -14 133 -24 174 -42 20 -9 42 -17 49 -19 7 -1 38 -17 70 -34 175 -99 315 -267 370 -444 24 -79 20 -200 -8 -264 -27 -63 -89 -120 -165 -153 -30 -13 -55 -26 -55 -29 0 -3 14 -14 31 -24 54 -32 156 -135 199 -201 23 -36 55 -102 71 -147 26 -76 28 -92 25 -193 -7 -194 -67 -296 -220 -371 -68 -33 -70 -33 -210 -33 -130 1 -148 3 -226 30 -47 16 -121 51 -164 77 -102 60 -237 193 -298 292 -50 81 -104 222 -110 286 -3 38 -2 39 27 37 17 0 44 -4 60 -7 17 -3 46 -8 65 -11 44 -7 75 -13 75 -15 0 -1 16 -4 35 -7 51 -7 83 -25 85 -48 1 -11 12 -45 24 -75 50 -131 123 -204 243 -241 59 -18 71 -19 103 -8 52 19 100 62 123 113 29 60 25 196 -7 278 -49 125 -179 221 -315 233 -26 2 -50 6 -52 8 -9 9 -13 50 -7 61 4 6 8 26 9 46 1 19 3 35 3 35 1 0 4 22 7 50 3 27 9 54 14 60 5 6 48 10 103 9 86 -1 98 1 126 23 45 35 63 77 63 145 0 238 -315 374 -408 175 -13 -29 -24 -58 -24 -65 0 -20 -36 -7 -235 89 -97 47 -100 51 -86 100 59 197 184 299 356 293 33 -1 60 -3 60 -4z\\\"></path><path d=\\\"M5178 3724 c-3 -2 -14 -7 -24 -9 -11 -2 -41 -11 -69 -19 -27 -8 -90 -27 -140 -41 -80 -24 -157 -45 -250 -69 -5 -1 -37 -11 -70 -21 -33 -10 -64 -20 -70 -21 -13 -4 -57 -14 -70 -17 -5 -2 -14 -5 -20 -8 -5 -4 -71 -23 -145 -43 -74 -21 -160 -45 -190 -53 -67 -20 -69 -20 -100 -28 -34 -8 -43 -11 -60 -18 -18 -8 -184 -55 -214 -62 -55 -11 -67 -14 -76 -20 -5 -3 -18 -8 -27 -10 -10 -2 -83 -23 -163 -45 -80 -23 -152 -43 -160 -45 -8 -2 -36 -11 -62 -19 -27 -8 -48 -12 -48 -9 0 3 -7 0 -15 -7 -8 -6 -18 -9 -24 -6 -5 3 -11 2 -13 -2 -1 -5 -50 -21 -108 -36 -58 -16 -125 -35 -148 -43 -24 -8 -53 -15 -63 -16 -20 -1 -20 -15 -18 -1495 1 -821 5 -1507 8 -1525 6 -29 10 -32 46 -32 22 -1 54 3 70 7 17 4 48 10 70 13 63 9 88 13 125 20 19 4 44 9 55 11 29 4 58 11 98 22 20 6 38 7 41 4 3 -3 6 -1 6 5 0 5 6 10 13 11 15 1 35 6 62 15 11 3 34 9 50 12 33 7 42 9 65 17 8 3 42 13 75 23 75 20 263 73 290 81 11 3 25 6 30 7 6 2 15 5 20 8 6 4 44 14 85 24 41 10 80 21 85 25 12 9 157 45 168 42 4 -1 7 2 7 7 0 5 17 12 38 17 20 4 39 8 42 9 76 22 97 28 108 28 6 0 12 4 12 9 0 4 8 8 18 8 9 0 36 7 59 15 22 8 52 16 65 19 12 2 35 9 51 15 15 6 27 8 27 5 0 -4 6 -2 13 3 6 6 58 25 113 42 151 46 256 133 349 287 30 49 77 179 85 234 5 29 5 2386 1 2435 -5 56 -47 201 -65 225 -12 16 -30 23 -38 14z m-858 -950 c19 -4 42 -8 50 -10 94 -16 183 -64 259 -141 132 -133 191 -308 185 -553 -1 -69 -5 -141 -8 -160 -2 -19 -7 -55 -11 -80 -37 -277 -235 -575 -505 -759 -73 -50 -170 -104 -170 -94 0 4 -4 2 -8 -4 -7 -12 -182 -77 -228 -86 -10 -2 -26 -6 -34 -9 -35 -13 -108 -36 -145 -47 -95 -26 -151 -43 -170 -52 -11 -5 -31 -11 -45 -13 -40 -8 -64 -14 -82 -21 -12 -5 -18 -2 -19 6 -1 8 -2 427 -3 931 l-1 917 40 11 c22 6 50 13 63 15 36 8 64 16 225 64 37 11 67 18 67 16 0 -2 16 3 36 11 20 8 39 13 41 10 3 -3 13 -1 23 4 9 5 28 11 41 14 28 6 64 14 99 21 14 3 43 8 65 11 22 3 41 6 42 8 5 4 160 -3 193 -10z\\\"></path><path d=\\\"M3967 2443 c-2 -2 -17 -6 -33 -8 -44 -6 -73 -13 -84 -20 -5 -3 -19 -8 -30 -11 -11 -2 -30 -6 -42 -9 -12 -2 -26 -9 -31 -14 -18 -18 -22 -143 -22 -691 0 -529 0 -535 20 -533 25 3 46 8 65 16 8 3 51 18 95 32 279 91 443 251 517 505 24 84 29 123 32 250 6 241 -60 396 -198 461 -54 26 -68 28 -172 27 -62 0 -115 -2 -117 -5z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - tool - more</title><path class=\\\"cls-1\\\" d=\\\"M14.5,12A2.5,2.5,0,1,1,12,9.5,2.51,2.51,0,0,1,14.5,12ZM4.5,9.5A2.5,2.5,0,1,0,7,12,2.51,2.51,0,0,0,4.5,9.5Zm15,0A2.5,2.5,0,1,0,22,12,2.51,2.51,0,0,0,19.5,9.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6 2H12L17 7V16C17 17.1046 16.1046 18 15 18H6C4.89543 18 4 17.1046 4 16V4C4 2.89543 4.89543 2 6 2ZM6 3.75H11.2751L15.25 7.72487V16C15.25 16.1381 15.1381 16.25 15 16.25H6C5.86193 16.25 5.75 16.1381 5.75 16V4C5.75 3.86193 5.86193 3.75 6 3.75Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M18.75 8.5H20.5V20.5C20.5 21.0523 20.0523 21.5 19.5 21.5H11.5V19.75H18.75V8.5Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M11 3L16 8H11V3Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M10.2982 12.8588L11.5355 14.0962L12.5962 13.0355L11.3588 11.7982L12.5962 10.5608L11.5355 9.50011L10.2982 10.7375L9.06066 9.5L8 10.5607L9.23749 11.7982L8 13.0356L9.06066 14.0963L10.2982 12.8588Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19.2 11.1V5.7C19.2 4.7073 18.3927 3.9 17.4 3.9H14.7C14.7 3.4032 14.2977 3 13.8 3H8.4C7.9023 3 7.5 3.4032 7.5 3.9H4.8C3.8073 3.9 3 4.7073 3 5.7V17.4C3 18.3927 3.8073 19.2 4.8 19.2H11.1C11.1 20.1927 11.9073 21 12.9 21H19.2C20.1927 21 21 20.1927 21 19.2V12.9C21 11.9073 20.1927 11.1 19.2 11.1ZM11.1 12.9V17.4H4.8V5.7H7.5V7.5H14.7V5.7H17.4V11.1H12.9C11.9073 11.1 11.1 11.9073 11.1 12.9ZM12.9 19.2V12.9H19.2L19.2009 19.2H12.9Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - pen - fill</title><path class=\\\"cls-1\\\" d=\\\"M21.45,5.77a2.09,2.09,0,0,1-.62,1.51l-9.16,9.16c-.09.08-.26.26-.44.26,0,0-4.18.9-4.42.89a1,1,0,0,1-.72-.13.67.67,0,0,1-.16-.73l.8-4.53c0-.18.08-.27.26-.45L13,5.8l3.2-3.2a2.2,2.2,0,0,1,3,0l1.66,1.66A2.34,2.34,0,0,1,21.45,5.77ZM10.28,15.18l-2-1.95a.12.12,0,0,0-.2.06l-.48,2.23A.32.32,0,0,0,8,15.9l2.26-.52A.12.12,0,0,0,10.28,15.18Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M18.91,19.66a1.13,1.13,0,0,1-1.35,1.82,5.82,5.82,0,0,0-2.09-1c-3.22-.85-4.57-.29-6.82.63l-.55.23A7.42,7.42,0,0,1,5.42,22a3,3,0,0,1-2-.69,2.38,2.38,0,0,1-.87-1.66,1.81,1.81,0,0,1,.59-1.36,9.16,9.16,0,0,1,.93-.78,1.13,1.13,0,0,1,1.58.23,1.14,1.14,0,0,1-.23,1.59,2.93,2.93,0,0,0-.42.33c.27.13.84.17,2.25-.4L7.8,19a10.81,10.81,0,0,1,8.25-.72A7.89,7.89,0,0,1,18.91,19.66Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - pen - highlight</title><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M19.9658 6.91017H19.92L16.2992 3.25267C16.1376 3.0909 15.9183 3 15.6896 3C15.4609 3 15.2416 3.0909 15.08 3.25267L7.82917 10.4118C7.68847 10.5239 7.59386 10.6837 7.56334 10.861L6.56417 15.2518L4.8225 17.4427H7.6275L8.73667 16.3335L12.2567 15.5452C12.4386 15.5144 12.6023 15.4162 12.715 15.2702L19.92 8.12934C20.2428 7.7936 20.2625 7.2692 19.9658 6.91017V6.91017ZM11.9083 13.5377L9.54334 11.1727L15.7583 5.0585L18.1233 7.4235L11.9083 13.5377Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M18.4167 17.2685C18.744 18.2557 18.9773 19.2716 19.1133 20.3027C18.2719 19.3853 17.15 18.7728 15.9233 18.561C14.8314 18.4146 13.7204 18.5244 12.6783 18.8818C11.4047 19.3332 10.1589 19.8597 8.9475 20.4585C7.81125 21.1097 6.50296 21.3975 5.19833 21.2835C4.80235 21.1839 4.45663 20.9426 4.22666 20.6052C4.14173 20.4738 4.07395 20.3321 4.025 20.1835C4.01028 20.0885 3.98252 19.9959 3.9425 19.9085C3.80542 19.4227 3.84105 18.9043 4.04333 18.4418C4.15136 18.1403 4.32695 17.8675 4.55667 17.6443L4.905 19.4135C4.79615 19.4335 4.71381 19.5233 4.70333 19.6335C4.70333 19.8993 5.79417 19.7527 6.67417 19.4227C7.31069 19.1708 7.92412 18.8641 8.5075 18.506C9.77851 17.691 11.1416 17.0294 12.5683 16.5352C13.7125 16.1519 14.9299 16.0389 16.125 16.2052C16.6842 16.3049 17.2193 16.5102 17.7017 16.8102C17.8758 16.8927 18.4167 17.2685 18.4167 17.2685Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - pen - line</title><path class=\\\"cls-1\\\" d=\\\"M18.91,19.66a1.13,1.13,0,0,1-1.35,1.82,5.82,5.82,0,0,0-2.09-1c-3.22-.85-4.57-.29-6.82.63l-.55.23A7.42,7.42,0,0,1,5.42,22a3,3,0,0,1-2-.69,2.38,2.38,0,0,1-.87-1.66,1.81,1.81,0,0,1,.59-1.36,9.16,9.16,0,0,1,.93-.78,1.13,1.13,0,0,1,1.58.23,1.14,1.14,0,0,1-.23,1.59,2.93,2.93,0,0,0-.42.33c.27.13.84.17,2.25-.4L7.8,19a10.81,10.81,0,0,1,8.25-.72A7.89,7.89,0,0,1,18.91,19.66Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M21.45,5.77a2.09,2.09,0,0,1-.62,1.51l-9.16,9.16c-.09.08-.26.26-.44.26,0,0-4.18.9-4.42.89a1,1,0,0,1-.72-.13.67.67,0,0,1-.16-.73l.8-4.53c0-.18.08-.27.26-.45L13,5.8l3.2-3.2a2.2,2.2,0,0,1,3,0l1.66,1.66A2.34,2.34,0,0,1,21.45,5.77ZM16.21,9.06,14.37,7.22,8.59,13l1.84,1.84Zm3.2-3.2L17.57,4,15.88,5.71l1.84,1.84Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M17.83,2.83H6.17A1.67,1.67,0,0,0,4.5,4.5v15a1.67,1.67,0,0,0,1.67,1.67H17.83A1.67,1.67,0,0,0,19.5,19.5V4.5A1.67,1.67,0,0,0,17.83,2.83ZM6.17,19.5V4.5H17.83v15Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M13.67,10.22H7.84v7.59h8.32V10.22Zm.38,4.88a.26.26,0,0,1,0,.38l-.58.58a.28.28,0,0,1-.38,0L12,15l-1.09,1.09a.28.28,0,0,1-.38,0L10,15.48a.28.28,0,0,1,0-.38L11,14,10,12.92a.28.28,0,0,1,0-.38l.58-.58a.26.26,0,0,1,.38,0L12,13.05,13.09,12a.26.26,0,0,1,.38,0l.58.58a.26.26,0,0,1,0,.38L13,14Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - redaction - full page</title><path class=\\\"cls-1\\\" d=\\\"M18.36,2H5.64A1.82,1.82,0,0,0,3.82,3.82V20.18A1.82,1.82,0,0,0,5.64,22H18.36a1.82,1.82,0,0,0,1.82-1.82V3.82A1.82,1.82,0,0,0,18.36,2ZM5.64,20.18V3.82H18.36V20.18Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M12.91,5.66H7.45V18.34h9.1V5.66H12.91Zm1.94,4.53L13.05,12l1.8,1.81a.39.39,0,0,1,0,.56l-.48.48a.39.39,0,0,1-.56,0L12,13.05l-1.81,1.8a.39.39,0,0,1-.56,0l-.48-.48a.39.39,0,0,1,0-.56L11,12l-1.8-1.81a.39.39,0,0,1,0-.56l.48-.48a.39.39,0,0,1,.56,0L12,11l1.81-1.8a.39.39,0,0,1,.56,0l.48.48A.39.39,0,0,1,14.85,10.19Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - redaction - inline</title><path class=\\\"cls-1\\\" d=\\\"M2.08,16.06H12.23v2H2.08Zm0-3H12.23V11H2.08Zm0-5.07H12.23v-2H2.08Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M21.8,9.39l-.87-.87a.4.4,0,0,0-.57,0l-2,2-2-2a.4.4,0,0,0-.57,0l-.87.87a.42.42,0,0,0,0,.57l2.05,2-2.05,2a.42.42,0,0,0,0,.57l.87.87a.4.4,0,0,0,.57,0l2-2,2,2a.4.4,0,0,0,.57,0l.87-.87a.4.4,0,0,0,0-.57l-2-2,2-2A.4.4,0,0,0,21.8,9.39Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.5 8C8.22386 8 8 8.22386 8 8.5V15.5C8 15.7761 8.22386 16 8.5 16H15.5C15.7761 16 16 15.7761 16 15.5V8.5C16 8.22386 15.7761 8 15.5 8H8.5ZM13.2374 14.2981L12.0001 13.0607L10.7626 14.2982L9.7019 13.2375L10.9394 12.0001L9.7019 10.7626L10.7626 9.7019L12.0001 10.9394L13.2374 9.70201L14.2981 10.7627L13.0607 12.0001L14.2981 13.2374L13.2374 14.2981Z\\\" fill=\\\"none\\\"></path><path d=\\\"M21.4778 18.2034C21.6137 18.0674 21.5427 17.8348 21.354 17.798L17.2862 17.0046C17.119 16.972 16.972 17.119 17.0046 17.2862L17.798 21.354C17.8348 21.5427 18.0674 21.6138 18.2034 21.4778L19.0255 20.6557C19.1192 20.562 19.2712 20.562 19.365 20.6557L20.6389 21.9297C20.7327 22.0234 20.8847 22.0234 20.9784 21.9297L21.9297 20.9784C22.0234 20.8847 22.0234 20.7327 21.9297 20.6389L20.6557 19.365C20.562 19.2712 20.562 19.1192 20.6557 19.0254L21.4778 18.2034Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 3H9V5H7V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 7H5V9H3V7Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 5C3 3.89543 3.89543 3 5 3V5H3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 11H5V13H3V11Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 15H5V17H3V15Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 19H5V21C3.89543 21 3 20.1046 3 19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 19H9V21H7V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 19H13V21H11V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 3H13V5H11V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 3H17V5H15V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 3C20.1046 3 21 3.89543 21 5H19V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 7H21V9H19V7Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 11H21V13H19V11Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - select - pages</title><path d=\\\"M20 2H8C6.897 2 6 2.897 6 4V16C6 17.103 6.897 18 8 18H20C21.103 18 22 17.103 22 16V4C22 2.897 21.103 2 20 2ZM8 16V4H20L20.002 16H8Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M4 8.00037H2V20.0004C2 21.1034 2.897 22.0004 4 22.0004H16V20.0004H4V8.00037ZM12.933 11.5194L11.207 9.79338L9.793 11.2074L13.067 14.4814L18.769 7.64137L17.231 6.35938L12.933 11.5194Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - shape - arrow</title><path class=\\\"cls-1\\\" d=\\\"M14.66,7.57,5.09,17.14a.61.61,0,0,0,0,.85l.92.92a.61.61,0,0,0,.85,0l9.57-9.57L18.06,11a.6.6,0,0,0,1-.42v-5a.6.6,0,0,0-.6-.6h-5a.6.6,0,0,0-.42,1Z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M18.4,11.2C18,8,15.2,5.6,12,5.6c-2.5,0-4.8,1.5-5.7,3.8c-2,0.6-3.4,2.4-3.5,4.4c0,2.5,2.1,4.6,4.6,4.6h10.1 c2,0,3.7-1.7,3.6-3.7C21.1,13.1,20,11.6,18.4,11.2z M17.2,16.3H7.7c-1.4,0-2.6-1.2-2.6-2.6c0.1-1.3,1-2.4,2.3-2.6L7.9,11l0.2-0.5 c0.5-1.7,2.1-2.9,3.9-2.9c2.4,0,4.3,1.9,4.3,4.3v0.9h0.9c0.9,0,1.7,0.8,1.7,1.7C18.9,15.5,18.1,16.3,17.2,16.3z\\\"></path><path fill=\\\"none\\\" d=\\\"M17.2,16.3H7.7c-1.4,0-2.6-1.2-2.6-2.6c0.1-1.3,1-2.4,2.3-2.6L7.9,11l0.2-0.5c0.5-1.7,2.1-2.9,3.9-2.9 c2.4,0,4.3,1.9,4.3,4.3v0.9h0.9c0.9,0,1.7,0.8,1.7,1.7C18.9,15.5,18.1,16.3,17.2,16.3z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - shape - line</title><rect class=\\\"cls-1\\\" x=\\\"3\\\" y=\\\"10.75\\\" width=\\\"18\\\" height=\\\"2.5\\\" rx=\\\"0.6\\\" transform=\\\"translate(-4.97 12) rotate(-45)\\\"></rect></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M12,2.8c-5.1,0-9.2,4.1-9.2,9.2s4.1,9.2,9.2,9.2s9.2-4.1,9.2-9.2C21.2,6.9,17.1,2.8,12,2.8z M12,18.8 c-3.8,0-6.9-3.1-6.9-6.9c0-3.8,3.1-6.9,6.9-6.9c3.8,0,6.9,3.1,6.9,6.9c0,0,0,0,0,0C18.9,15.8,15.8,18.9,12,18.8L12,18.8z\\\"></path><path fill=\\\"none\\\" d=\\\"M12,18.8c-3.8,0-6.9-3.1-6.9-6.9c0-3.8,3.1-6.9,6.9-6.9c3.8,0,6.9,3.1,6.9,6.9c0,0,0,0,0,0 C18.9,15.8,15.8,18.9,12,18.8L12,18.8z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M20.7,9.3l-8.1-5.8c-0.4-0.3-0.9-0.3-1.3,0L3.3,9.3c-0.4,0.3-0.6,0.8-0.4,1.2L6,20c0.1,0.4,0.5,0.7,1,0.8h10 c0.5,0,0.9-0.3,1-0.8l3.1-9.5C21.2,10.1,21.1,9.6,20.7,9.3z M16.1,18.5H7.9l-2.6-7.8L12,5.8l6.7,4.9L16.1,18.5z\\\"></path><polygon fill=\\\"none\\\" points=\\\"16.1,18.5 7.9,18.5 5.3,10.7 12,5.8 18.7,10.7 \\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - shape - polyline</title><path class=\\\"cls-1\\\" d=\\\"M22.89,7.06l-.64-.64a.8.8,0,0,0-1.13,0l-6.77,6.77L10.23,9.07A1.66,1.66,0,0,0,9,8.58a1.69,1.69,0,0,0-1.2.49L1.11,15.8a.83.83,0,0,0-.23.57.79.79,0,0,0,.23.57l.64.64a.81.81,0,0,0,1.13,0L9,11.42l4.12,4.12a1.69,1.69,0,0,0,2.39,0L22.89,8.2a.83.83,0,0,0,.23-.57A.79.79,0,0,0,22.89,7.06Z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M19.3,3.8H4.7c-1,0-1.8,0.8-1.8,1.8v12.8c0,1,0.8,1.8,1.8,1.8h14.7c1,0,1.8-0.8,1.8-1.8V5.6 C21.2,4.6,20.3,3.7,19.3,3.8z M5.1,18V6h13.8v12H5.1z\\\"></path><rect fill=\\\"none\\\" x=\\\"5.1\\\" y=\\\"6\\\" width=\\\"13.8\\\" height=\\\"12\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - signature</title><path class=\\\"cls-1\\\" d=\\\"M20,12.66a1,1,0,0,0-1.27.7c-.21.77-1,3-2.39,3.45.08-.42.22-1,.32-1.33.41-1.58.71-2.71-.23-3.25a2,2,0,0,0-2.79.42,4.84,4.84,0,0,0-.55.93,7.14,7.14,0,0,1-2.18,2.81,3.12,3.12,0,0,1-1.12.33,2.47,2.47,0,0,1-1-.5,1.46,1.46,0,0,1-.21-.28c5.29-5.08,5.58-9.51,5.52-10.84a3.59,3.59,0,0,0-1.21-2.91A1,1,0,0,0,12.05,2c-2.86.59-4.63,4-5.57,10.83l-.05.25a7.89,7.89,0,0,0-.17,2.19L5.43,16A4.18,4.18,0,0,1,4.12,17a1.25,1.25,0,0,1,.19-.69A1,1,0,0,0,4,14.86a1.06,1.06,0,0,0-1.44.27,2.7,2.7,0,0,0,.18,3.48A1.8,1.8,0,0,0,3.94,19a4.45,4.45,0,0,0,2.88-1.54l.2-.17a2.09,2.09,0,0,0,.24.28A4.23,4.23,0,0,0,9.6,18.72,4.81,4.81,0,0,0,12.13,18a8.11,8.11,0,0,0,2.47-2.94c-.42,1.57-.64,2.58-.14,3.27a1.29,1.29,0,0,0,.94.54c2.37.27,4.35-1.6,5.29-5A1,1,0,0,0,20,12.66ZM11.87,4.23A4.1,4.1,0,0,1,12,5.42c0,1-.31,3.91-3.47,7.57C9,9.48,10,5.33,11.87,4.23Zm10.07,6.28a1.46,1.46,0,0,1-2.9,0,1.45,1.45,0,0,1,2.9,0Z\\\"></path><rect class=\\\"cls-1\\\" x=\\\"3.45\\\" y=\\\"19.99\\\" width=\\\"16.66\\\" height=\\\"2.01\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - stamp - fill</title><path class=\\\"cls-1\\\" d=\\\"M4,20.5H20V22H4Zm15.27-5H4.74a.76.76,0,0,0-.75.75V19H20V16.26A.76.76,0,0,0,19.26,15.51Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M9.14,11.82a7,7,0,0,1,.44,1.44H9v1.5h6v-1.5h-.58a6.08,6.08,0,0,1,.45-1.44,12.73,12.73,0,0,1,.81-1,5,5,0,0,0,1.57-3.54,5.26,5.26,0,0,0-10.51,0,5.06,5.06,0,0,0,1.58,3.56A12.78,12.78,0,0,1,9.14,11.82Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - stamp - line</title><path class=\\\"cls-1\\\" d=\\\"M4,20.5H20V22H4Zm15.27-5H4.74a.76.76,0,0,0-.75.75V19H20V16.26A.76.76,0,0,0,19.26,15.51Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M15.68,10.79a5,5,0,0,0,1.57-3.54,5.26,5.26,0,0,0-10.51,0,5.06,5.06,0,0,0,1.58,3.56,12.78,12.78,0,0,1,.82,1,7,7,0,0,1,.44,1.44H9v1.5h6v-1.5h-.58a6.08,6.08,0,0,1,.45-1.44A12.73,12.73,0,0,1,15.68,10.79Zm-1.4-1.15c-.27.32-.59.7-.9,1.13A6.91,6.91,0,0,0,12.63,13H11.37a6.52,6.52,0,0,0-.76-2.18c-.31-.45-.65-.83-.91-1.15A3.25,3.25,0,0,1,8.56,7.25a3.44,3.44,0,1,1,6.88,0A3.35,3.35,0,0,1,14.28,9.64Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text - free text</title><g><path class=\\\"cls-1\\\" d=\\\"M19.39,4.77V7.64A.43.43,0,0,1,19,8h-.82a.41.41,0,0,1-.4-.41V6.51H13.34V18h1.54a.41.41,0,0,1,.41.41v.81a.41.41,0,0,1-.41.41H9.14a.41.41,0,0,1-.41-.41v-.81A.41.41,0,0,1,9.14,18h1.54V6.51H6.27V7.64A.41.41,0,0,1,5.86,8H5A.43.43,0,0,1,4.6,7.6V4.77A.41.41,0,0,1,5,4.36H19A.39.39,0,0,1,19.39,4.77Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - free highlight</title><path class=\\\"cls-1\\\" d=\\\"M19,17.58a18,18,0,0,1,.76,3.32A6.15,6.15,0,0,0,16.28,19a7.48,7.48,0,0,0-3.54.35,40.25,40.25,0,0,0-4.07,1.71A6.88,6.88,0,0,1,4.58,22a1.78,1.78,0,0,1-1.06-.74,2,2,0,0,1-.22-.47,2.46,2.46,0,0,1-.09-.29,2.61,2.61,0,0,1-.09-.57,2.67,2.67,0,0,1,.2-1A2.41,2.41,0,0,1,3.88,18s.38,1.94.38,1.94a.26.26,0,0,0-.22.24c0,.28,1.19.13,2.15-.23a13.82,13.82,0,0,0,2-1,20.62,20.62,0,0,1,4.43-2.15,8.38,8.38,0,0,1,3.88-.36,4.86,4.86,0,0,1,1.72.65Zm1.62-10-7.79,7.72a.58.58,0,0,1-.5.3l-3.84.86L7.17,17.78H4.11l2-2.47,1.08-4.79A.89.89,0,0,1,7.46,10l7.8-7.73a.08.08,0,0,1,0,0,.94.94,0,0,1,1.33,0l3.95,3.94.05,0A1,1,0,0,1,20.58,7.62Zm-2-.78L16,4.27l-6.7,6.6,2.57,2.58Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - tool - highlight</title><path class=\\\"cls-1\\\" d=\\\"M9.91,13.07h3.86L11.84,8.46Zm5.46,3.68L14.62,15H9.05L7.77,18H5.63L10.45,6.64a1,1,0,0,1,1-.64h1a1.23,1.23,0,0,1,1,.64l2,4.91V4H5.85A2.22,2.22,0,0,0,3.63,6.22V17.78A2.22,2.22,0,0,0,5.85,20h9.52Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M20.37,2V22h-2V2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text manipulation - squiggly</title><path class=\\\"cls-1\\\" d=\\\"M21,20V22a3,3,0,0,1-2.56-1.41c-.38-.51-.64-.64-1-.64s-.51.13-1,.64A3.34,3.34,0,0,1,13.79,22a3,3,0,0,1-2.56-1.41c-.38-.51-.64-.64-1-.64s-.52.13-1,.64A3.34,3.34,0,0,1,6.62,22a3,3,0,0,1-2.57-1.41c-.38-.51-.64-.64-1-.64V17.9a3,3,0,0,1,2.56,1.41c.38.51.64.64,1,.64s.51-.13,1-.64a3.32,3.32,0,0,1,2.57-1.41,3,3,0,0,1,2.56,1.41c.38.51.64.64,1,.64s.52-.13,1-.64a3.31,3.31,0,0,1,2.56-1.41A3,3,0,0,1,20,19.31C20.33,19.82,20.59,20,21,20Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M8.79,12.77h6.67L17,16.36h2.56L13.92,2.64A1.34,1.34,0,0,0,12.77,2H11.62a1.24,1.24,0,0,0-1.16.77L4.69,16.36H7.26Zm3.34-7.95,2.31,5.51H9.82Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text manipulation - strikethrough</title><rect class=\\\"cls-1\\\" x=\\\"3.13\\\" y=\\\"11.31\\\" width=\\\"17.74\\\" height=\\\"1.7\\\"></rect><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M12,5l2.4,5.77h2.68l-3.28-8A1.49,1.49,0,0,0,12.64,2H11.49a1.24,1.24,0,0,0-1.16.77L7,10.73H9.59Zm3.25,8.62,2,4.74h2.57l-2-4.74ZM4.17,18.32H6.74l2-4.74H6.18Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text manipulation - underline</title><rect class=\\\"cls-1\\\" x=\\\"2.8\\\" y=\\\"20.29\\\" width=\\\"18.4\\\" height=\\\"1.7\\\"></rect><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M8.53,13.2h6.94l1.6,3.74h2.66L13.87,2.8a1.54,1.54,0,0,0-1.2-.8h-1.2a1.27,1.27,0,0,0-1.2.8l-6,14.14H6.93ZM12,5.07l2.4,5.73H9.6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M16.949 14.121L19.071 12c1.948-1.949 1.948-5.122 0-7.071-1.95-1.95-5.123-1.948-7.071 0l-.707.707 1.414 1.414.707-.707c1.169-1.167 3.072-1.169 4.243 0 1.169 1.17 1.169 3.073 0 4.243l-2.122 2.121c-.247.247-.534.435-.844.57L13.414 12l1.414-1.414-.707-.707c-.943-.944-2.199-1.465-3.535-1.465-.235 0-.464.032-.691.066L3.707 2.293 2.293 3.707l18 18 1.414-1.414-5.536-5.536C16.448 14.573 16.709 14.361 16.949 14.121zM10.586 17.657c-1.169 1.167-3.072 1.169-4.243 0-1.169-1.17-1.169-3.073 0-4.243l1.476-1.475-1.414-1.414L4.929 12c-1.948 1.949-1.948 5.122 0 7.071.975.975 2.255 1.462 3.535 1.462 1.281 0 2.562-.487 3.536-1.462l.707-.707-1.414-1.414L10.586 17.657z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tools - more</title><path class=\\\"cls-1\\\" d=\\\"M14.5,12A2.5,2.5,0,1,1,12,9.5,2.51,2.51,0,0,1,14.5,12ZM4.5,9.5A2.5,2.5,0,1,0,7,12,2.51,2.51,0,0,0,4.5,9.5Zm15,0A2.5,2.5,0,1,0,22,12,2.51,2.51,0,0,0,19.5,9.5Z\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#d82e28;}.cls-2{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M5.21,17.17l12-12a.58.58,0,0,1,.82,0l.84.84a.58.58,0,0,1,0,.82l-12,12a.58.58,0,0,1-.82,0L5.17,18A.58.58,0,0,1,5.21,17.17Z\\\"></path><path class=\\\"cls-2\\\" d=\\\"M12,2.83A9.17,9.17,0,1,0,21.17,12,9.19,9.19,0,0,0,12,2.83Zm0,16A6.88,6.88,0,1,1,18.88,12,6.9,6.9,0,0,1,12,18.88Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-10 -5 25 25\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group</title><g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Comments\\\" transform=\\\"translate(-1488.000000, -305.000000)\\\" fill=\\\"#979A9E\\\"><g id=\\\"Group\\\" transform=\\\"translate(1488.000000, 305.000000)\\\"><rect id=\\\"Rectangle\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"4\\\" height=\\\"11\\\"></rect><rect id=\\\"Rectangle\\\" x=\\\"0\\\" y=\\\"13\\\" width=\\\"4\\\" height=\\\"4\\\"></rect></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M14 12C12.905 12 12 11.095 12 10C12 9.646 12.103 9.317 12.268 9.027C12.178 9.02 12.092 9 12 9C10.358 9 9 10.359 9 12C9 13.642 10.358 15 12 15C13.641 15 15 13.642 15 12C15 11.908 14.98 11.822 14.973 11.732C14.683 11.897 14.354 12 14 12Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M12 5C4.36704 5 2.07304 11.617 2.05204 11.684L1.94604 12L2.05105 12.316C2.07305 12.383 4.36704 19 12 19C19.633 19 21.927 12.383 21.948 12.316L22.054 12L21.949 11.684C21.927 11.617 19.633 5 12 5ZM12 17C6.64904 17 4.57604 13.154 4.07404 12C4.57804 10.842 6.65204 7 12 7C17.351 7 19.424 10.846 19.926 12C19.422 13.158 17.348 17 12 17Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill-rule:evenodd;clip-rule:evenodd;fill:none;} </style><rect id=\\\"Rectangle\\\" class=\\\"st0\\\"></rect><path d=\\\"M9,6v4H5V6H9 M9,4H5C3.9,4,3,4.9,3,6v4c0,1.1,0.9,2,2,2h4c1.1,0,2-0.9,2-2V6C11,4.9,10.1,4,9,4L9,4z M16.6,4.4 L16.6,4.4l3.1,2.6L17.1,10L14,7.4L16.6,4.4C16.6,4.4,16.6,4.4,16.6,4.4 M16.6,2.4c-0.6,0-1.1,0.2-1.5,0.7l-2.6,3.1 C11.8,7,11.9,8.3,12.7,9l3.1,2.6c0.4,0.3,0.8,0.5,1.3,0.5c0.6,0,1.1-0.2,1.5-0.7l2.6-3.1c0.7-0.8,0.6-2.1-0.2-2.8l-3.1-2.6 C17.5,2.5,17,2.4,16.6,2.4L16.6,2.4z M9,15v4H5v-4H9 M9,13H5c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2h4c1.1,0,2-0.9,2-2v-4 C11,13.9,10.1,13,9,13L9,13z M18,15v4h-4v-4H18 M18,13h-4c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2h4c1.1,0,2-0.9,2-2v-4 C20,13.9,19.1,13,18,13L18,13z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.6 6.94H9.06V2.4C9.06 2.17909 8.88091 2 8.66 2H7.34C7.11909 2 6.94 2.17909 6.94 2.4V6.94H2.4C2.17909 6.94 2 7.11909 2 7.34V8.66C2 8.88091 2.17909 9.06 2.4 9.06H6.94V13.6C6.94 13.8209 7.11909 14 7.34 14H8.66C8.88091 14 9.06 13.8209 9.06 13.6V9.06H13.6C13.8209 9.06 14 8.88091 14 8.66V7.34C14 7.11909 13.8209 6.94 13.6 6.94Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.94 9.05994H2.4C2.17909 9.05994 2 8.88086 2 8.65994V7.33994C2 7.11903 2.17909 6.93994 2.4 6.93994H13.6C13.7061 6.93994 13.8078 6.98208 13.8828 7.0571C13.9579 7.13211 14 7.23385 14 7.33994V8.65994C14 8.88086 13.8209 9.05994 13.6 9.05994H9.06\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 64 64\\\"><defs><style>.cls-1{fill:#dfe2ed;}</style></defs><title>Artboard 1</title><path class=\\\"cls-1\\\" d=\\\"M50,4.5H14A3.5,3.5,0,0,0,10.5,8V56A3.5,3.5,0,0,0,14,59.5H50A3.5,3.5,0,0,0,53.5,56V8A3.5,3.5,0,0,0,50,4.5ZM50.5,56a.5.5,0,0,1-.5.5H14a.5.5,0,0,1-.5-.5V8a.5.5,0,0,1,.5-.5H50a.5.5,0,0,1,.5.5Z\\\"></path><circle class=\\\"cls-1\\\" cx=\\\"20.5\\\" cy=\\\"32\\\" r=\\\"2.5\\\"></circle><circle class=\\\"cls-1\\\" cx=\\\"20.5\\\" cy=\\\"44.3\\\" r=\\\"2.5\\\"></circle><circle class=\\\"cls-1\\\" cx=\\\"20.5\\\" cy=\\\"19.7\\\" r=\\\"2.5\\\"></circle><rect class=\\\"cls-1\\\" x=\\\"25.98\\\" y=\\\"30.26\\\" width=\\\"20.02\\\" height=\\\"3.49\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"25.98\\\" y=\\\"42.55\\\" width=\\\"20.02\\\" height=\\\"3.49\\\"></rect><polygon class=\\\"cls-1\\\" points=\\\"25.98 17.96 25.98 21.45 46 21.45 46 17.96 44 17.96 25.98 17.96\\\"></polygon></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / operation / multi select</title><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g fill=\\\"#868E96\\\"><g><path d=\\\"M18.17,13.39 L16.28,13.39 L16.28,16.22 L13.44,16.22 L13.44,18.11 L16.28,18.11 L16.28,21 L18.17,21 L18.17,18.11 L21,18.11 L21,16.22 L18.17,16.22 L18.17,13.39 Z M4,18.11 L6.83,18.11 L6.83,16.22 L4.94,16.22 L4.94,14.34 L3.05,14.34 L3.05,17.17 C3.05,17.4210458 3.15039276,17.6616665 3.32884571,17.838241 C3.50729865,18.0148155 3.74896838,18.1126707 4,18.11 Z M18.17,3.94 C18.1382202,3.41127612 17.6996773,2.99904577 17.17,2.99999835 L14.39,2.99999835 L14.39,4.89 L16.28,4.89 L16.28,6.78 L18.17,6.78 L18.17,3.94 Z M4.94,4.89 L6.83,4.89 L6.83,3 L3.99999804,3 C3.74047377,2.9834001 3.48566705,3.07505767 3.29618264,3.25317302 C3.10669822,3.43128837 2.99946966,3.67994396 2.99999804,3.94 L2.99999804,6.78 L4.94,6.78 L4.94,4.89 Z M3.05,8.67 L4.94,8.67 L4.94,12.45 L3.05,12.45 L3.05,8.67 Z M16.28,8.67 L18.17,8.67 L18.17,11.5 L16.28,11.5 L16.28,8.67 Z M8.72,3 L12.5,3 L12.5,4.89 L8.72,4.89 L8.72,3 Z M8.72,16.22 L11.55,16.22 L11.55,18.11 L8.72,18.11 L8.72,16.22 Z\\\"></path></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 4H4C2.897 4 2 4.897 2 6V18C2 19.103 2.897 20 4 20H20C21.103 20 22 19.103 22 18V6C22 4.897 21.103 4 20 4ZM4 6H20V8H4V6ZM4 18V12H20.001L20.002 18H4Z\\\" fill=\\\"#0000FF\\\"></path><path d=\\\"M6 14H12V16H6V14Z\\\" fill=\\\"#0000FF\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 4H6C4.897 4 4 4.897 4 6V11H6V8L12.4 12.8C12.578 12.933 12.789 13 13 13C13.211 13 13.422 12.933 13.6 12.8L20 8V17H12V19H20C21.103 19 22 18.103 22 17V6C22 4.897 21.103 4 20 4ZM13 10.75L6.666 6H19.334L13 10.75Z\\\" fill=\\\"#FF8F0C\\\"></path><path d=\\\"M2 12H9V14H2V12ZM4 15H10V17H4V15ZM7 18H11V20H7V18Z\\\" fill=\\\"#FF8F0C\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.15 3H4.85004C3.75004 3 2.83337 3.91667 2.83337 5.01667V19.3167C2.83337 20.4167 3.75004 21.3333 4.85004 21.3333H19.15C20.25 21.3333 21.1667 20.4167 21.1667 19.3167V5.01667C21.1667 3.91667 20.25 3 19.15 3ZM4.85004 19.3167V5.01667H19.15V19.3167H4.85004Z\\\" fill=\\\"#008000\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.6499 8.59155L18.1416 15.7416H11.4499H9.24994H5.85828L8.69994 11.6166L10.2583 13.9999L13.6499 8.59155Z\\\" fill=\\\"#008000\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -1 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M10.8042 7.19517C10.5436 6.93451 10.1222 6.93451 9.86157 7.19517L8.79891 8.25784C8.30624 8.11117 7.3869 7.77784 6.80424 7.19517C6.22157 6.61251 5.88824 5.69317 5.74157 5.20051L6.80424 4.13784C7.0649 3.87717 7.0649 3.45584 6.80424 3.19517L4.13757 0.528508C3.8769 0.267841 3.45557 0.267841 3.19491 0.528508L1.3869 2.33651C1.13357 2.58984 0.990905 2.93784 0.996238 3.29317C1.01157 4.24251 1.2629 7.53984 3.86157 10.1385C6.46024 12.7372 9.75757 12.9878 10.7076 13.0038C10.7109 13.0038 10.7229 13.0038 10.7262 13.0038C11.0782 13.0038 11.4109 12.8652 11.6629 12.6132L13.4709 10.8052C13.7316 10.5445 13.7316 10.1232 13.4709 9.86251L10.8042 7.19517ZM10.7196 11.6698C9.88757 11.6558 7.0409 11.4325 4.80424 9.19518C2.56024 6.95117 2.3429 4.09451 2.32957 3.27917L3.66624 1.94251L5.39024 3.66651L4.52824 4.52851C4.36891 4.68717 4.3009 4.91651 4.3469 5.13651C4.3629 5.21317 4.75424 7.03117 5.8609 8.13784C6.96757 9.24451 8.78557 9.63584 8.86224 9.65184C9.08424 9.69917 9.31157 9.63051 9.47024 9.47117L10.3329 8.60917L12.0569 10.3332L10.7196 11.6698Z\\\" fill=\\\"#FF0000\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 512 512\\\" style=\\\"enable-background:new 0 0 512 512;\\\" xml:space=\\\"preserve\\\"><g><g><path d=\\\"M320,42.667h10.667c5.891,0,10.667-4.776,10.667-10.667V10.667C341.333,4.775,336.557,0,330.667,0H320 c-25.458,0-48.354,12.188-64,31.469C240.354,12.188,217.458,0,192,0h-10.667c-5.891,0-10.667,4.775-10.667,10.667V32 c0,5.891,4.776,10.667,10.667,10.667H192c23.521,0,42.667,22.469,42.667,50.083v141.917h-32c-5.891,0-10.667,4.775-10.667,10.667 v21.333c0,5.891,4.776,10.667,10.667,10.667h32V419.25c0,27.615-19.146,50.083-42.667,50.083h-10.667 c-5.891,0-10.667,4.775-10.667,10.667v21.333c0,5.891,4.776,10.667,10.667,10.667H192c25.458,0,48.354-12.188,64-31.469 C271.646,499.813,294.542,512,320,512h10.667c5.891,0,10.667-4.776,10.667-10.667V480c0-5.892-4.776-10.667-10.667-10.667H320 c-23.521,0-42.667-22.469-42.667-50.083V277.333h32c5.891,0,10.667-4.776,10.667-10.667v-21.333 c0-5.892-4.776-10.667-10.667-10.667h-32V92.75C277.333,65.135,296.479,42.667,320,42.667z\\\"></path></g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>\"","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n  enumerable: true,\n  get: function get() {\n    return _DraggableCore.default;\n  }\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _clsx2 = _interopRequireDefault(require(\"clsx\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nvar _excluded = [\"axis\", \"bounds\", \"children\", \"defaultPosition\", \"defaultClassName\", \"defaultClassNameDragging\", \"defaultClassNameDragged\", \"position\", \"positionOffset\", \"scale\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define <Draggable>\n//\nvar Draggable = /*#__PURE__*/function (_React$Component) {\n  _inherits(Draggable, _React$Component);\n\n  var _super = _createSuper(Draggable);\n\n  function Draggable(props\n  /*: DraggableProps*/\n  ) {\n    var _this;\n\n    _classCallCheck(this, Draggable);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e, coreData) {\n      (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n      var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n\n      if (shouldStart === false) return false;\n\n      _this.setState({\n        dragging: true,\n        dragged: true\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (e, coreData) {\n      if (!_this.state.dragging) return false;\n      (0, _log.default)('Draggable: onDrag: %j', coreData);\n      var uiData = (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData);\n      var newState\n      /*: $Shape<DraggableState>*/\n      = {\n        x: uiData.x,\n        y: uiData.y\n      }; // Keep within bounds.\n\n      if (_this.props.bounds) {\n        // Save original x and y.\n        var x = newState.x,\n            y = newState.y; // Add slack to the values used to calculate bound position. This will ensure that if\n        // we start removing slack, the element won't react to it right away until it's been\n        // completely removed.\n\n        newState.x += _this.state.slackX;\n        newState.y += _this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n        var _getBoundPosition = (0, _positionFns.getBoundPosition)(_assertThisInitialized(_this), newState.x, newState.y),\n            _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2),\n            newStateX = _getBoundPosition2[0],\n            newStateY = _getBoundPosition2[1];\n\n        newState.x = newStateX;\n        newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n        newState.slackX = _this.state.slackX + (x - newState.x);\n        newState.slackY = _this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n        uiData.x = newState.x;\n        uiData.y = newState.y;\n        uiData.deltaX = newState.x - _this.state.x;\n        uiData.deltaY = newState.y - _this.state.y;\n      } // Short-circuit if user's callback killed it.\n\n\n      var shouldUpdate = _this.props.onDrag(e, uiData);\n\n      if (shouldUpdate === false) return false;\n\n      _this.setState(newState);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (e, coreData) {\n      if (!_this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n      var shouldContinue = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData));\n\n      if (shouldContinue === false) return false;\n      (0, _log.default)('Draggable: onDragStop: %j', coreData);\n      var newState\n      /*: $Shape<DraggableState>*/\n      = {\n        dragging: false,\n        slackX: 0,\n        slackY: 0\n      }; // If this is a controlled component, the result of this operation will be to\n      // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n      var controlled = Boolean(_this.props.position);\n\n      if (controlled) {\n        var _this$props$position = _this.props.position,\n            x = _this$props$position.x,\n            y = _this$props$position.y;\n        newState.x = x;\n        newState.y = y;\n      }\n\n      _this.setState(newState);\n    });\n\n    _this.state = {\n      // Whether or not we are currently dragging.\n      dragging: false,\n      // Whether or not we have been dragged before.\n      dragged: false,\n      // Current transform x and y.\n      x: props.position ? props.position.x : props.defaultPosition.x,\n      y: props.position ? props.position.y : props.defaultPosition.y,\n      prevPropsPosition: _objectSpread({}, props.position),\n      // Used for compensating for out-of-bounds drags\n      slackX: 0,\n      slackY: 0,\n      // Can only determine if SVG after mounting\n      isElementSVG: false\n    };\n\n    if (props.position && !(props.onDrag || props.onStop)) {\n      // eslint-disable-next-line no-console\n      console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n    }\n\n    return _this;\n  }\n\n  _createClass(Draggable, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // Check to see if the element passed is an instanceof SVGElement\n      if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n        this.setState({\n          isElementSVG: true\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.setState({\n        dragging: false\n      }); // prevents invariant if unmounted while dragging\n    } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n    // the underlying DOM node ourselves. See the README for more information.\n\n  }, {\n    key: \"findDOMNode\",\n    value: function findDOMNode()\n    /*: ?HTMLElement*/\n    {\n      var _this$props$nodeRef$c, _this$props, _this$props$nodeRef;\n\n      return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 ? void 0 : (_this$props$nodeRef = _this$props.nodeRef) === null || _this$props$nodeRef === void 0 ? void 0 : _this$props$nodeRef.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n    }\n  }, {\n    key: \"render\",\n    value: function render()\n    /*: ReactElement<any>*/\n    {\n      var _clsx;\n\n      var _this$props2 = this.props,\n          axis = _this$props2.axis,\n          bounds = _this$props2.bounds,\n          children = _this$props2.children,\n          defaultPosition = _this$props2.defaultPosition,\n          defaultClassName = _this$props2.defaultClassName,\n          defaultClassNameDragging = _this$props2.defaultClassNameDragging,\n          defaultClassNameDragged = _this$props2.defaultClassNameDragged,\n          position = _this$props2.position,\n          positionOffset = _this$props2.positionOffset,\n          scale = _this$props2.scale,\n          draggableCoreProps = _objectWithoutProperties(_this$props2, _excluded);\n\n      var style = {};\n      var svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n      var controlled = Boolean(position);\n      var draggable = !controlled || this.state.dragging;\n      var validPosition = position || defaultPosition;\n      var transformOpts = {\n        // Set left if horizontal drag is enabled\n        x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n        // Set top if vertical drag is enabled\n        y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n      }; // If this element was SVG, we use the `transform` attribute.\n\n      if (this.state.isElementSVG) {\n        svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n      } else {\n        // Add a CSS transform to move the element around. This allows us to move the element around\n        // without worrying about whether or not it is relatively or absolutely positioned.\n        // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>\n        // has a clean slate.\n        style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n      } // Mark with class while dragging\n\n\n      var className = (0, _clsx2.default)(children.props.className || '', defaultClassName, (_clsx = {}, _defineProperty(_clsx, defaultClassNameDragging, this.state.dragging), _defineProperty(_clsx, defaultClassNameDragged, this.state.dragged), _clsx)); // Reuse the child provided\n      // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n      return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n        onStart: this.onDragStart,\n        onDrag: this.onDrag,\n        onStop: this.onDragStop\n      }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n        className: className,\n        style: _objectSpread(_objectSpread({}, children.props.style), style),\n        transform: svgTransform\n      }));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: // React 16.3+\n    // Arity (props, state)\n    function getDerivedStateFromProps(_ref, _ref2)\n    /*: ?$Shape<DraggableState>*/\n    {\n      var position = _ref.position;\n      var prevPropsPosition = _ref2.prevPropsPosition;\n\n      // Set x/y if a new position is provided in props that is different than the previous.\n      if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n        (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n          position: position,\n          prevPropsPosition: prevPropsPosition\n        });\n        return {\n          x: position.x,\n          y: position.y,\n          prevPropsPosition: _objectSpread({}, position)\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Draggable;\n}(React.Component);\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", _objectSpread(_objectSpread({}, _DraggableCore.default.propTypes), {}, {\n  /**\n   * `axis` determines which axis the draggable can move.\n   *\n   *  Note that all callbacks will still return data as normal. This only\n   *  controls flushing to the DOM.\n   *\n   * 'both' allows movement horizontally and vertically.\n   * 'x' limits movement to horizontal axis.\n   * 'y' limits movement to vertical axis.\n   * 'none' limits all movement.\n   *\n   * Defaults to 'both'.\n   */\n  axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n  /**\n   * `bounds` determines the range of movement available to the element.\n   * Available values are:\n   *\n   * 'parent' restricts movement within the Draggable's parent node.\n   *\n   * Alternatively, pass an object with the following properties, all of which are optional:\n   *\n   * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n   *\n   * All values are in px.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable bounds={{right: 300, bottom: 300}}>\n   *              <div>Content</div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n    left: _propTypes.default.number,\n    right: _propTypes.default.number,\n    top: _propTypes.default.number,\n    bottom: _propTypes.default.number\n  }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n  defaultClassName: _propTypes.default.string,\n  defaultClassNameDragging: _propTypes.default.string,\n  defaultClassNameDragged: _propTypes.default.string,\n\n  /**\n   * `defaultPosition` specifies the x and y that the dragged item should start at\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable defaultPosition={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  defaultPosition: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  positionOffset: _propTypes.default.shape({\n    x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n    y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n  }),\n\n  /**\n   * `position`, if present, defines the current position of the element.\n   *\n   *  This is similar to how form elements in React work - if no `position` is supplied, the component\n   *  is uncontrolled.\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable position={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  position: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n}));\n\n_defineProperty(Draggable, \"defaultProps\", _objectSpread(_objectSpread({}, _DraggableCore.default.defaultProps), {}, {\n  axis: 'both',\n  bounds: false,\n  defaultClassName: 'react-draggable',\n  defaultClassNameDragging: 'react-draggable-dragging',\n  defaultClassNameDragged: 'react-draggable-dragged',\n  defaultPosition: {\n    x: 0,\n    y: 0\n  },\n  scale: 1\n}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix()\n/*: string*/\n{\n  var _window$document, _window$document$docu;\n\n  var prop\n  /*: string*/\n  = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n  // Ensure we're running in an environment where there is actually a global\n  // `window` obj\n  if (typeof window === 'undefined') return ''; // If we're in a pseudo-browser server-side environment, this access\n  // path may not exist, so bail out if it doesn't.\n\n  var style = (_window$document = window.document) === null || _window$document === void 0 ? void 0 : (_window$document$docu = _window$document.documentElement) === null || _window$document$docu === void 0 ? void 0 : _window$document$docu.style;\n  if (!style) return '';\n  if (prop in style) return '';\n\n  for (var i = 0; i < prefixes.length; i++) {\n    if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n  }\n\n  return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n  return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n  return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n  var out = '';\n  var shouldCapitalize = true;\n\n  for (var i = 0; i < str.length; i++) {\n    if (shouldCapitalize) {\n      out += str[i].toUpperCase();\n      shouldCapitalize = false;\n    } else if (str[i] === '-') {\n      shouldCapitalize = true;\n    } else {\n      out += str[i];\n    }\n  }\n\n  return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = (getPrefix()\n/*: string*/\n);\n\nexports.default = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nvar eventsFor = {\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend'\n  },\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup'\n  }\n}; // Default to mouse events.\n\nvar dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n  dragging: boolean,\n  lastX: number,\n  lastY: number,\n  touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreDefaultProps = {\n  allowAnyClick: boolean,\n  disabled: boolean,\n  enableUserSelectHack: boolean,\n  onStart: DraggableEventHandler,\n  onDrag: DraggableEventHandler,\n  onStop: DraggableEventHandler,\n  onMouseDown: (e: MouseEvent) => void,\n  scale: number,\n};*/\n\n/*:: export type DraggableCoreProps = {\n  ...DraggableCoreDefaultProps,\n  cancel: string,\n  children: ReactElement<any>,\n  offsetParent: HTMLElement,\n  grid: [number, number],\n  handle: string,\n  nodeRef?: ?React.ElementRef<any>,\n};*/\n\n//\n// Define <DraggableCore>.\n//\n// <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nvar DraggableCore = /*#__PURE__*/function (_React$Component) {\n  _inherits(DraggableCore, _React$Component);\n\n  var _super = _createSuper(DraggableCore);\n\n  function DraggableCore() {\n    var _this;\n\n    _classCallCheck(this, DraggableCore);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      dragging: false,\n      // Used while dragging to determine deltas.\n      lastX: NaN,\n      lastY: NaN,\n      touchIdentifier: null\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDragStart\", function (e) {\n      // Make it possible to attach event handlers on top of this one.\n      _this.props.onMouseDown(e); // Only accept left-clicks.\n\n\n      if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n      var thisNode = _this.findDOMNode();\n\n      if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n        throw new Error('<DraggableCore> not mounted on DragStart!');\n      }\n\n      var ownerDocument = thisNode.ownerDocument; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n      if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) {\n        return;\n      } // Prevent scrolling on mobile devices, like ipad/iphone.\n      // Important that this is after handle/cancel.\n\n\n      if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to\n      // distinguish between individual touches on multitouch screens by identifying which\n      // touchpoint was set to this element.\n\n      var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n\n      _this.setState({\n        touchIdentifier: touchIdentifier\n      }); // Get the current drag point from the event. This is used as the offset.\n\n\n      var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return; // not possible but satisfies flow\n\n      var x = position.x,\n          y = position.y; // Create an event object with all the data parents need to make a decision here.\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n      (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n      (0, _log.default)('calling', _this.props.onStart);\n\n      var shouldUpdate = _this.props.onStart(e, coreEvent);\n\n      if (shouldUpdate === false || _this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from\n      // being selected all over the page.\n\n      if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n      // so we know how much we've moved during the drag. This allows us\n      // to drag elements around even if they have been moved, without issue.\n\n      _this.setState({\n        dragging: true,\n        lastX: x,\n        lastY: y\n      }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n      // this element. We use different events depending on whether or not we have detected that this\n      // is a touch-capable device.\n\n\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n      // Get the current drag point from the event. This is used as the offset.\n      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return;\n      var x = position.x,\n          y = position.y; // Snap to grid if prop has been provided\n\n      if (Array.isArray(_this.props.grid)) {\n        var deltaX = x - _this.state.lastX,\n            deltaY = y - _this.state.lastY;\n\n        var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n        var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\n        deltaX = _snapToGrid2[0];\n        deltaY = _snapToGrid2[1];\n        if (!deltaX && !deltaY) return; // skip useless drag\n\n        x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n      }\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n      (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n      var shouldUpdate = _this.props.onDrag(e, coreEvent);\n\n      if (shouldUpdate === false || _this.mounted === false) {\n        try {\n          // $FlowIgnore\n          _this.handleDragStop(new MouseEvent('mouseup'));\n        } catch (err) {\n          // Old browsers\n          var event = ((document.createEvent('MouseEvents')\n          /*: any*/\n          )\n          /*: MouseTouchEvent*/\n          ); // I see why this insanity was deprecated\n          // $FlowIgnore\n\n          event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n          _this.handleDragStop(event);\n        }\n\n        return;\n      }\n\n      _this.setState({\n        lastX: x,\n        lastY: y\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDragStop\", function (e) {\n      if (!_this.state.dragging) return;\n      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return;\n      var x = position.x,\n          y = position.y; // Snap to grid if prop has been provided\n\n      if (Array.isArray(_this.props.grid)) {\n        var deltaX = x - _this.state.lastX || 0;\n        var deltaY = y - _this.state.lastY || 0;\n\n        var _snapToGrid3 = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n        var _snapToGrid4 = _slicedToArray(_snapToGrid3, 2);\n\n        deltaX = _snapToGrid4[0];\n        deltaY = _snapToGrid4[1];\n        x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n      }\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y); // Call event handler\n\n      var shouldContinue = _this.props.onStop(e, coreEvent);\n\n      if (shouldContinue === false || _this.mounted === false) return false;\n\n      var thisNode = _this.findDOMNode();\n\n      if (thisNode) {\n        // Remove user-select hack\n        if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n      }\n\n      (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n      _this.setState({\n        dragging: false,\n        lastX: NaN,\n        lastY: NaN\n      });\n\n      if (thisNode) {\n        // Remove event handlers\n        (0, _log.default)('DraggableCore: Removing handlers');\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag);\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n      dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n      return _this.handleDragStart(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function (e) {\n      dragEventFor = eventsFor.mouse;\n      return _this.handleDragStop(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return _this.handleDragStart(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTouchEnd\", function (e) {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return _this.handleDragStop(e);\n    });\n\n    return _this;\n  }\n\n  _createClass(DraggableCore, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable.\n      // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\n      var thisNode = this.findDOMNode();\n\n      if (thisNode) {\n        (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n          passive: false\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n      // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n\n      var thisNode = this.findDOMNode();\n\n      if (thisNode) {\n        var ownerDocument = thisNode.ownerDocument;\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n        (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n          passive: false\n        });\n        if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n      }\n    } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n    // the underlying DOM node ourselves. See the README for more information.\n\n  }, {\n    key: \"findDOMNode\",\n    value: function findDOMNode()\n    /*: ?HTMLElement*/\n    {\n      var _this$props, _this$props2, _this$props2$nodeRef;\n\n      return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : (_this$props2$nodeRef = _this$props2.nodeRef) === null || _this$props2$nodeRef === void 0 ? void 0 : _this$props2$nodeRef.current : _reactDom.default.findDOMNode(this);\n    }\n  }, {\n    key: \"render\",\n    value: function render()\n    /*: React.Element<any>*/\n    {\n      // Reuse the child provided\n      // This makes it flexible to use whatever element is wanted (div, ul, etc)\n      return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n        // Note: mouseMove handler is attached to document so it will still function\n        // when the user drags quickly and leaves the bounds of the element.\n        onMouseDown: this.onMouseDown,\n        onMouseUp: this.onMouseUp,\n        // onTouchStart is added on `componentDidMount` so they can be added with\n        // {passive: false}, which allows it to cancel. See\n        // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n        onTouchEnd: this.onTouchEnd\n      });\n    }\n  }]);\n\n  return DraggableCore;\n}(React.Component);\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n  /**\n   * `allowAnyClick` allows dragging using any mouse button.\n   * By default, we only accept the left button.\n   *\n   * Defaults to `false`.\n   */\n  allowAnyClick: _propTypes.default.bool,\n\n  /**\n   * `disabled`, if true, stops the <Draggable> from dragging. All handlers,\n   * with the exception of `onMouseDown`, will not fire.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * By default, we add 'user-select:none' attributes to the document body\n   * to prevent ugly text selection during drag. If this is causing problems\n   * for your app, set this to `false`.\n   */\n  enableUserSelectHack: _propTypes.default.bool,\n\n  /**\n   * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n   * instead of using the parent node.\n   */\n  offsetParent: function offsetParent(props\n  /*: DraggableCoreProps*/\n  , propName\n  /*: $Keys<DraggableCoreProps>*/\n  ) {\n    if (props[propName] && props[propName].nodeType !== 1) {\n      throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n    }\n  },\n\n  /**\n   * `grid` specifies the x and y that dragging should snap to.\n   */\n  grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n  /**\n   * `handle` specifies a selector to be used as the handle that initiates drag.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable handle=\".handle\">\n   *              <div>\n   *                  <div className=\"handle\">Click me to drag</div>\n   *                  <div>This is some other content</div>\n   *              </div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  handle: _propTypes.default.string,\n\n  /**\n   * `cancel` specifies a selector to be used to prevent drag initialization.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *           return(\n   *               <Draggable cancel=\".cancel\">\n   *                   <div>\n   *                     <div className=\"cancel\">You can't drag from here</div>\n   *                     <div>Dragging here works fine</div>\n   *                   </div>\n   *               </Draggable>\n   *           );\n   *       }\n   *   });\n   * ```\n   */\n  cancel: _propTypes.default.string,\n\n  /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n   * Unfortunately, in order for <Draggable> to work properly, we need raw access\n   * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n   * as in this example:\n   *\n   * function MyComponent() {\n   *   const nodeRef = React.useRef(null);\n   *   return (\n   *     <Draggable nodeRef={nodeRef}>\n   *       <div ref={nodeRef}>Example Target</div>\n   *     </Draggable>\n   *   );\n   * }\n   *\n   * This can be used for arbitrarily nested components, so long as the ref ends up\n   * pointing to the actual child DOM node and not a custom component.\n   */\n  nodeRef: _propTypes.default.object,\n\n  /**\n   * Called when dragging starts.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onStart: _propTypes.default.func,\n\n  /**\n   * Called while dragging.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onDrag: _propTypes.default.func,\n\n  /**\n   * Called when dragging stops.\n   * If this function returns the boolean false, the drag will remain active.\n   */\n  onStop: _propTypes.default.func,\n\n  /**\n   * A workaround option which can be passed if onMouseDown needs to be accessed,\n   * since it'll always be blocked (as there is internal use of onMouseDown)\n   */\n  onMouseDown: _propTypes.default.func,\n\n  /**\n   * `scale`, if set, applies scaling while dragging an element\n   */\n  scale: _propTypes.default.number,\n\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n  allowAnyClick: false,\n  // by default only accept left click\n  disabled: false,\n  enableUserSelectHack: true,\n  onStart: function onStart() {},\n  onDrag: function onDrag() {},\n  onStop: function onStop() {},\n  onMouseDown: function onMouseDown() {},\n  scale: 1\n});","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseGet = require('./_baseGet'),\n    baseSet = require('./_baseSet'),\n    castPath = require('./_castPath');\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var assignValue = require('./_assignValue'),\n    castPath = require('./_castPath'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nmodule.exports = baseSet;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t  // reliably everywhere they are implemented.\n\t\t  // They are implemented in all modern browsers.\n\t\t  //\n\t\t  // - Android 4-4.3\n\t\t  // - Chrome 26-34\n\t\t  // - Firefox 14-29\n\t\t  // - Internet Explorer 11\n\t\t  // - iPad Safari 6-7.1\n\t\t  // - iPhone Safari 7-7.1\n\t\t  // - Safari 6-7\n\t\t  makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t  // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t  // 11-12, and in web workers in many engines.\n\t\t  // Although message channels yield to any queued rendering and IO tasks, they\n\t\t  // would be better than imposing the 4ms delay of timers.\n\t\t  // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t  // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t  // not have MutationObservers.\n\t\t  // Although setImmediate yields to the browser's renderer, it would be\n\t\t  // preferrable to falling back to setTimeout since it does not have\n\t\t  // the minimum 4ms penalty.\n\t\t  // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t  // Desktop to a lesser extent) that renders both setImmediate and\n\t\t  // MessageChannel useless for the purposes of ASAP.\n\t\t  // https://github.com/kriskowal/q/issues/396\n\n\t\t  // Timers are implemented universally.\n\t\t  // We fall back to timers in workers in most engines, and in foreground\n\t\t  // contexts in the following browsers.\n\t\t  // However, note that even this simple case requires nuances to operate in a\n\t\t  // broad spectrum of browsers.\n\t\t  //\n\t\t  // - Firefox 3-13\n\t\t  // - Internet Explorer 6-9\n\t\t  // - iPad Safari 4.3\n\t\t  // - Lynx 2.8.7\n\t\t  makeRequestCallFromTimer\n","// We wrap tasks with recyclable task objects.  A task object implements\n\nimport type { TaskFn, Task } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","var isArray = require('./isArray');\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n  if (!arguments.length) {\n    return [];\n  }\n  var value = arguments[0];\n  return isArray(value) ? value : [value];\n}\n\nmodule.exports = castArray;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf3 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _Grid = _interopRequireWildcard(require(\"../Grid\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\n\nvar _types = require(\"./types\");\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _class, _temp;\n\nvar List = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  (0, _inherits2[\"default\"])(List, _React$PureComponent);\n\n  function List() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    (0, _classCallCheck2[\"default\"])(this, List);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = (0, _possibleConstructorReturn2[\"default\"])(this, (_getPrototypeOf2 = (0, _getPrototypeOf3[\"default\"])(List)).call.apply(_getPrototypeOf2, [this].concat(args)));\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"Grid\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_cellRenderer\", function (_ref) {\n      var parent = _ref.parent,\n          rowIndex = _ref.rowIndex,\n          style = _ref.style,\n          isScrolling = _ref.isScrolling,\n          isVisible = _ref.isVisible,\n          key = _ref.key;\n      var rowRenderer = _this.props.rowRenderer; // TRICKY The style object is sometimes cached by Grid.\n      // This prevents new style objects from bypassing shallowCompare().\n      // However as of React 16, style props are auto-frozen (at least in dev mode)\n      // Check to make sure we can still modify the style before proceeding.\n      // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713\n\n      var widthDescriptor = Object.getOwnPropertyDescriptor(style, 'width');\n\n      if (widthDescriptor && widthDescriptor.writable) {\n        // By default, List cells should be 100% width.\n        // This prevents them from flowing under a scrollbar (if present).\n        style.width = '100%';\n      }\n\n      return rowRenderer({\n        index: rowIndex,\n        style: style,\n        isScrolling: isScrolling,\n        isVisible: isVisible,\n        key: key,\n        parent: parent\n      });\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_setRef\", function (ref) {\n      _this.Grid = ref;\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_onScroll\", function (_ref2) {\n      var clientHeight = _ref2.clientHeight,\n          scrollHeight = _ref2.scrollHeight,\n          scrollTop = _ref2.scrollTop;\n      var onScroll = _this.props.onScroll;\n      onScroll({\n        clientHeight: clientHeight,\n        scrollHeight: scrollHeight,\n        scrollTop: scrollTop\n      });\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_onSectionRendered\", function (_ref3) {\n      var rowOverscanStartIndex = _ref3.rowOverscanStartIndex,\n          rowOverscanStopIndex = _ref3.rowOverscanStopIndex,\n          rowStartIndex = _ref3.rowStartIndex,\n          rowStopIndex = _ref3.rowStopIndex;\n      var onRowsRendered = _this.props.onRowsRendered;\n      onRowsRendered({\n        overscanStartIndex: rowOverscanStartIndex,\n        overscanStopIndex: rowOverscanStopIndex,\n        startIndex: rowStartIndex,\n        stopIndex: rowStopIndex\n      });\n    });\n    return _this;\n  }\n\n  (0, _createClass2[\"default\"])(List, [{\n    key: \"forceUpdateGrid\",\n    value: function forceUpdateGrid() {\n      if (this.Grid) {\n        this.Grid.forceUpdate();\n      }\n    }\n    /** See Grid#getOffsetForCell */\n\n  }, {\n    key: \"getOffsetForRow\",\n    value: function getOffsetForRow(_ref4) {\n      var alignment = _ref4.alignment,\n          index = _ref4.index;\n\n      if (this.Grid) {\n        var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n          alignment: alignment,\n          rowIndex: index,\n          columnIndex: 0\n        }),\n            scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n        return scrollTop;\n      }\n\n      return 0;\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref5) {\n      var columnIndex = _ref5.columnIndex,\n          rowIndex = _ref5.rowIndex;\n\n      if (this.Grid) {\n        this.Grid.invalidateCellSizeAfterRender({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#measureAllCells */\n\n  }, {\n    key: \"measureAllRows\",\n    value: function measureAllRows() {\n      if (this.Grid) {\n        this.Grid.measureAllCells();\n      }\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref6$columnIndex = _ref6.columnIndex,\n          columnIndex = _ref6$columnIndex === void 0 ? 0 : _ref6$columnIndex,\n          _ref6$rowIndex = _ref6.rowIndex,\n          rowIndex = _ref6$rowIndex === void 0 ? 0 : _ref6$rowIndex;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#recomputeGridSize */\n\n  }, {\n    key: \"recomputeRowHeights\",\n    value: function recomputeRowHeights() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: index,\n          columnIndex: 0\n        });\n      }\n    }\n    /** See Grid#scrollToPosition */\n\n  }, {\n    key: \"scrollToPosition\",\n    value: function scrollToPosition() {\n      var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToPosition({\n          scrollTop: scrollTop\n        });\n      }\n    }\n    /** See Grid#scrollToCell */\n\n  }, {\n    key: \"scrollToRow\",\n    value: function scrollToRow() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToCell({\n          columnIndex: 0,\n          rowIndex: index\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          className = _this$props.className,\n          noRowsRenderer = _this$props.noRowsRenderer,\n          scrollToIndex = _this$props.scrollToIndex,\n          width = _this$props.width;\n      var classNames = (0, _clsx[\"default\"])('ReactVirtualized__List', className);\n      return React.createElement(_Grid[\"default\"], (0, _extends2[\"default\"])({}, this.props, {\n        autoContainerWidth: true,\n        cellRenderer: this._cellRenderer,\n        className: classNames,\n        columnWidth: width,\n        columnCount: 1,\n        noContentRenderer: noRowsRenderer,\n        onScroll: this._onScroll,\n        onSectionRendered: this._onSectionRendered,\n        ref: this._setRef,\n        scrollToRow: scrollToIndex\n      }));\n    }\n  }]);\n  return List;\n}(React.PureComponent), (0, _defineProperty2[\"default\"])(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"aria-label\": _propTypes[\"default\"].string,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height\n   * of rows can stretch the window. Intended for use with WindowScroller\n   */\n  \"autoHeight\": _propTypes[\"default\"].bool.isRequired,\n\n  /** Optional CSS class name */\n  \"className\": _propTypes[\"default\"].string,\n\n  /**\n   * Used to estimate the total height of a List before all of its rows have actually been measured.\n   * The estimated total height is adjusted as rows are rendered.\n   */\n  \"estimatedRowSize\": _propTypes[\"default\"].number.isRequired,\n\n  /** Height constraint for list (determines how many actual rows are rendered) */\n  \"height\": _propTypes[\"default\"].number.isRequired,\n\n  /** Optional renderer to be used in place of rows when rowCount is 0 */\n  \"noRowsRenderer\": function noRowsRenderer() {\n    return (typeof _Grid.bpfrpt_proptype_NoContentRenderer === \"function\" ? _Grid.bpfrpt_proptype_NoContentRenderer.isRequired ? _Grid.bpfrpt_proptype_NoContentRenderer.isRequired : _Grid.bpfrpt_proptype_NoContentRenderer : _propTypes[\"default\"].shape(_Grid.bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Callback invoked with information about the slice of rows that were just rendered.  */\n  \"onRowsRendered\": _propTypes[\"default\"].func.isRequired,\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   */\n  \"onScroll\": _propTypes[\"default\"].func.isRequired,\n\n  /** See Grid#overscanIndicesGetter */\n  \"overscanIndicesGetter\": function overscanIndicesGetter() {\n    return (typeof _Grid.bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? _Grid.bpfrpt_proptype_OverscanIndicesGetter.isRequired ? _Grid.bpfrpt_proptype_OverscanIndicesGetter.isRequired : _Grid.bpfrpt_proptype_OverscanIndicesGetter : _propTypes[\"default\"].shape(_Grid.bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n  },\n\n  /**\n   * Number of rows to render above/below the visible bounds of the list.\n   * These rows can help for smoother scrolling on touch devices.\n   */\n  \"overscanRowCount\": _propTypes[\"default\"].number.isRequired,\n\n  /** Either a fixed row height (number) or a function that returns the height of a row given its index.  */\n  \"rowHeight\": function rowHeight() {\n    return (typeof _Grid.bpfrpt_proptype_CellSize === \"function\" ? _Grid.bpfrpt_proptype_CellSize.isRequired ? _Grid.bpfrpt_proptype_CellSize.isRequired : _Grid.bpfrpt_proptype_CellSize : _propTypes[\"default\"].shape(_Grid.bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n  },\n\n  /** Responsible for rendering a row given an index; ({ index: number }): node */\n  \"rowRenderer\": function rowRenderer() {\n    return (typeof _types.bpfrpt_proptype_RowRenderer === \"function\" ? _types.bpfrpt_proptype_RowRenderer.isRequired ? _types.bpfrpt_proptype_RowRenderer.isRequired : _types.bpfrpt_proptype_RowRenderer : _propTypes[\"default\"].shape(_types.bpfrpt_proptype_RowRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Number of rows in list. */\n  \"rowCount\": _propTypes[\"default\"].number.isRequired,\n\n  /** See Grid#scrollToAlignment */\n  \"scrollToAlignment\": function scrollToAlignment() {\n    return (typeof _Grid.bpfrpt_proptype_Alignment === \"function\" ? _Grid.bpfrpt_proptype_Alignment.isRequired ? _Grid.bpfrpt_proptype_Alignment.isRequired : _Grid.bpfrpt_proptype_Alignment : _propTypes[\"default\"].shape(_Grid.bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n  },\n\n  /** Row index to ensure visible (by forcefully scrolling if necessary) */\n  \"scrollToIndex\": _propTypes[\"default\"].number.isRequired,\n\n  /** Vertical offset. */\n  \"scrollTop\": _propTypes[\"default\"].number,\n\n  /** Optional inline style */\n  \"style\": _propTypes[\"default\"].object.isRequired,\n\n  /** Tab index for focus */\n  \"tabIndex\": _propTypes[\"default\"].number,\n\n  /** Width of list */\n  \"width\": _propTypes[\"default\"].number.isRequired\n}), _temp);\nexports[\"default\"] = List;\n(0, _defineProperty2[\"default\"])(List, \"defaultProps\", {\n  autoHeight: false,\n  estimatedRowSize: 30,\n  onScroll: function onScroll() {},\n  noRowsRenderer: function noRowsRenderer() {\n    return null;\n  },\n  onRowsRendered: function onRowsRendered() {},\n  overscanIndicesGetter: _Grid.accessibilityOverscanIndicesGetter,\n  overscanRowCount: 10,\n  scrollToAlignment: 'auto',\n  scrollToIndex: -1,\n  style: {}\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Grid[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"Grid\", {\n  enumerable: true,\n  get: function get() {\n    return _Grid[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"accessibilityOverscanIndicesGetter\", {\n  enumerable: true,\n  get: function get() {\n    return _accessibilityOverscanIndicesGetter[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"defaultCellRangeRenderer\", {\n  enumerable: true,\n  get: function get() {\n    return _defaultCellRangeRenderer[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"defaultOverscanIndicesGetter\", {\n  enumerable: true,\n  get: function get() {\n    return _defaultOverscanIndicesGetter[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"bpfrpt_proptype_NoContentRenderer\", {\n  enumerable: true,\n  get: function get() {\n    return _types.bpfrpt_proptype_NoContentRenderer;\n  }\n});\nObject.defineProperty(exports, \"bpfrpt_proptype_Alignment\", {\n  enumerable: true,\n  get: function get() {\n    return _types.bpfrpt_proptype_Alignment;\n  }\n});\nObject.defineProperty(exports, \"bpfrpt_proptype_CellPosition\", {\n  enumerable: true,\n  get: function get() {\n    return _types.bpfrpt_proptype_CellPosition;\n  }\n});\nObject.defineProperty(exports, \"bpfrpt_proptype_CellSize\", {\n  enumerable: true,\n  get: function get() {\n    return _types.bpfrpt_proptype_CellSize;\n  }\n});\nObject.defineProperty(exports, \"bpfrpt_proptype_OverscanIndicesGetter\", {\n  enumerable: true,\n  get: function get() {\n    return _types.bpfrpt_proptype_OverscanIndicesGetter;\n  }\n});\nObject.defineProperty(exports, \"bpfrpt_proptype_RenderedSection\", {\n  enumerable: true,\n  get: function get() {\n    return _types.bpfrpt_proptype_RenderedSection;\n  }\n});\nObject.defineProperty(exports, \"bpfrpt_proptype_CellRendererParams\", {\n  enumerable: true,\n  get: function get() {\n    return _types.bpfrpt_proptype_CellRendererParams;\n  }\n});\nObject.defineProperty(exports, \"bpfrpt_proptype_Scroll\", {\n  enumerable: true,\n  get: function get() {\n    return _types.bpfrpt_proptype_Scroll;\n  }\n});\n\nvar _Grid = _interopRequireDefault(require(\"./Grid\"));\n\nvar _accessibilityOverscanIndicesGetter = _interopRequireDefault(require(\"./accessibilityOverscanIndicesGetter\"));\n\nvar _defaultCellRangeRenderer = _interopRequireDefault(require(\"./defaultCellRangeRenderer\"));\n\nvar _defaultOverscanIndicesGetter = _interopRequireDefault(require(\"./defaultOverscanIndicesGetter\"));\n\nvar _types = require(\"./types\");","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.DEFAULT_SCROLLING_RESET_TIME_INTERVAL = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\n\nvar _calculateSizeAndPositionDataAndUpdateScrollOffset = _interopRequireDefault(require(\"./utils/calculateSizeAndPositionDataAndUpdateScrollOffset\"));\n\nvar _ScalingCellSizeAndPositionManager = _interopRequireDefault(require(\"./utils/ScalingCellSizeAndPositionManager\"));\n\nvar _createCallbackMemoizer = _interopRequireDefault(require(\"../utils/createCallbackMemoizer\"));\n\nvar _defaultOverscanIndicesGetter = _interopRequireWildcard(require(\"./defaultOverscanIndicesGetter\"));\n\nvar _updateScrollIndexHelper = _interopRequireDefault(require(\"./utils/updateScrollIndexHelper\"));\n\nvar _defaultCellRangeRenderer = _interopRequireDefault(require(\"./defaultCellRangeRenderer\"));\n\nvar _scrollbarSize = _interopRequireDefault(require(\"dom-helpers/scrollbarSize\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _requestAnimationTimeout = require(\"../utils/requestAnimationTimeout\");\n\nvar _types = require(\"./types\");\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nvar DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nexports.DEFAULT_SCROLLING_RESET_TIME_INTERVAL = DEFAULT_SCROLLING_RESET_TIME_INTERVAL;\nvar SCROLL_POSITION_CHANGE_REASONS = {\n  OBSERVED: 'observed',\n  REQUESTED: 'requested'\n};\n\nvar renderNull = function renderNull() {\n  return null;\n};\n\n/**\n * Renders tabular data with virtualization along the vertical and horizontal axes.\n * Row heights and column widths must be known ahead of time and specified as properties.\n */\nvar Grid = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  (0, _inherits2[\"default\"])(Grid, _React$PureComponent);\n\n  // Invokes onSectionRendered callback only when start/stop row or column indices change\n  function Grid(props) {\n    var _this;\n\n    (0, _classCallCheck2[\"default\"])(this, Grid);\n    _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Grid).call(this, props));\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_onGridRenderedMemoizer\", (0, _createCallbackMemoizer[\"default\"])());\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_onScrollMemoizer\", (0, _createCallbackMemoizer[\"default\"])(false));\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_deferredInvalidateColumnIndex\", null);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_deferredInvalidateRowIndex\", null);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_recomputeScrollLeftFlag\", false);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_recomputeScrollTopFlag\", false);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_horizontalScrollBarSize\", 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_verticalScrollBarSize\", 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_scrollbarPresenceChanged\", false);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_scrollingContainer\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_childrenToDisplay\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_columnStartIndex\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_columnStopIndex\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_rowStartIndex\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_rowStopIndex\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_renderedColumnStartIndex\", 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_renderedColumnStopIndex\", 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_renderedRowStartIndex\", 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_renderedRowStopIndex\", 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_initialScrollTop\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_initialScrollLeft\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_disablePointerEventsTimeoutId\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_styleCache\", {});\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_cellCache\", {});\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_debounceScrollEndedCallback\", function () {\n      _this._disablePointerEventsTimeoutId = null; // isScrolling is used to determine if we reset styleCache\n\n      _this.setState({\n        isScrolling: false,\n        needToResetStyleCache: false\n      });\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_invokeOnGridRenderedHelper\", function () {\n      var onSectionRendered = _this.props.onSectionRendered;\n\n      _this._onGridRenderedMemoizer({\n        callback: onSectionRendered,\n        indices: {\n          columnOverscanStartIndex: _this._columnStartIndex,\n          columnOverscanStopIndex: _this._columnStopIndex,\n          columnStartIndex: _this._renderedColumnStartIndex,\n          columnStopIndex: _this._renderedColumnStopIndex,\n          rowOverscanStartIndex: _this._rowStartIndex,\n          rowOverscanStopIndex: _this._rowStopIndex,\n          rowStartIndex: _this._renderedRowStartIndex,\n          rowStopIndex: _this._renderedRowStopIndex\n        }\n      });\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_setScrollingContainerRef\", function (ref) {\n      _this._scrollingContainer = ref;\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_onScroll\", function (event) {\n      // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n      // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n      // See issue #404 for more information.\n      if (event.target === _this._scrollingContainer) {\n        _this.handleScrollEvent(event.target);\n      }\n    });\n    var columnSizeAndPositionManager = new _ScalingCellSizeAndPositionManager[\"default\"]({\n      cellCount: props.columnCount,\n      cellSizeGetter: function cellSizeGetter(params) {\n        return Grid._wrapSizeGetter(props.columnWidth)(params);\n      },\n      estimatedCellSize: Grid._getEstimatedColumnSize(props)\n    });\n    var rowSizeAndPositionManager = new _ScalingCellSizeAndPositionManager[\"default\"]({\n      cellCount: props.rowCount,\n      cellSizeGetter: function cellSizeGetter(params) {\n        return Grid._wrapSizeGetter(props.rowHeight)(params);\n      },\n      estimatedCellSize: Grid._getEstimatedRowSize(props)\n    });\n    _this.state = {\n      instanceProps: {\n        columnSizeAndPositionManager: columnSizeAndPositionManager,\n        rowSizeAndPositionManager: rowSizeAndPositionManager,\n        prevColumnWidth: props.columnWidth,\n        prevRowHeight: props.rowHeight,\n        prevColumnCount: props.columnCount,\n        prevRowCount: props.rowCount,\n        prevIsScrolling: props.isScrolling === true,\n        prevScrollToColumn: props.scrollToColumn,\n        prevScrollToRow: props.scrollToRow,\n        scrollbarSize: 0,\n        scrollbarSizeMeasured: false\n      },\n      isScrolling: false,\n      scrollDirectionHorizontal: _defaultOverscanIndicesGetter.SCROLL_DIRECTION_FORWARD,\n      scrollDirectionVertical: _defaultOverscanIndicesGetter.SCROLL_DIRECTION_FORWARD,\n      scrollLeft: 0,\n      scrollTop: 0,\n      scrollPositionChangeReason: null,\n      needToResetStyleCache: false\n    };\n\n    if (props.scrollToRow > 0) {\n      _this._initialScrollTop = _this._getCalculatedScrollTop(props, _this.state);\n    }\n\n    if (props.scrollToColumn > 0) {\n      _this._initialScrollLeft = _this._getCalculatedScrollLeft(props, _this.state);\n    }\n\n    return _this;\n  }\n  /**\n   * Gets offsets for a given cell and alignment.\n   */\n\n\n  (0, _createClass2[\"default\"])(Grid, [{\n    key: \"getOffsetForCell\",\n    value: function getOffsetForCell() {\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref$alignment = _ref.alignment,\n          alignment = _ref$alignment === void 0 ? this.props.scrollToAlignment : _ref$alignment,\n          _ref$columnIndex = _ref.columnIndex,\n          columnIndex = _ref$columnIndex === void 0 ? this.props.scrollToColumn : _ref$columnIndex,\n          _ref$rowIndex = _ref.rowIndex,\n          rowIndex = _ref$rowIndex === void 0 ? this.props.scrollToRow : _ref$rowIndex;\n\n      var offsetProps = _objectSpread({}, this.props, {\n        scrollToAlignment: alignment,\n        scrollToColumn: columnIndex,\n        scrollToRow: rowIndex\n      });\n\n      return {\n        scrollLeft: this._getCalculatedScrollLeft(offsetProps),\n        scrollTop: this._getCalculatedScrollTop(offsetProps)\n      };\n    }\n    /**\n     * Gets estimated total rows' height.\n     */\n\n  }, {\n    key: \"getTotalRowsHeight\",\n    value: function getTotalRowsHeight() {\n      return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize();\n    }\n    /**\n     * Gets estimated total columns' width.\n     */\n\n  }, {\n    key: \"getTotalColumnsWidth\",\n    value: function getTotalColumnsWidth() {\n      return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize();\n    }\n    /**\n     * This method handles a scroll event originating from an external scroll control.\n     * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.\n     */\n\n  }, {\n    key: \"handleScrollEvent\",\n    value: function handleScrollEvent(_ref2) {\n      var _ref2$scrollLeft = _ref2.scrollLeft,\n          scrollLeftParam = _ref2$scrollLeft === void 0 ? 0 : _ref2$scrollLeft,\n          _ref2$scrollTop = _ref2.scrollTop,\n          scrollTopParam = _ref2$scrollTop === void 0 ? 0 : _ref2$scrollTop;\n\n      // On iOS, we can arrive at negative offsets by swiping past the start.\n      // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.\n      if (scrollTopParam < 0) {\n        return;\n      } // Prevent pointer events from interrupting a smooth scroll\n\n\n      this._debounceScrollEnded();\n\n      var _this$props = this.props,\n          autoHeight = _this$props.autoHeight,\n          autoWidth = _this$props.autoWidth,\n          height = _this$props.height,\n          width = _this$props.width;\n      var instanceProps = this.state.instanceProps; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n      // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n      // This causes a series of rapid renders that is slow for long lists.\n      // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n      var scrollbarSize = instanceProps.scrollbarSize;\n      var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n      var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n      var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);\n      var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n      // Don't force a re-render if this is the case.\n      // The mouse may move faster then the animation frame does.\n      // Use requestAnimationFrame to avoid over-updating.\n\n      if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {\n        // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.\n        // Don't change direction for an axis unless scroll offset has changed.\n        var scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? _defaultOverscanIndicesGetter.SCROLL_DIRECTION_FORWARD : _defaultOverscanIndicesGetter.SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionHorizontal;\n        var scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? _defaultOverscanIndicesGetter.SCROLL_DIRECTION_FORWARD : _defaultOverscanIndicesGetter.SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical;\n        var newState = {\n          isScrolling: true,\n          scrollDirectionHorizontal: scrollDirectionHorizontal,\n          scrollDirectionVertical: scrollDirectionVertical,\n          scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED\n        };\n\n        if (!autoHeight) {\n          newState.scrollTop = scrollTop;\n        }\n\n        if (!autoWidth) {\n          newState.scrollLeft = scrollLeft;\n        }\n\n        newState.needToResetStyleCache = false;\n        this.setState(newState);\n      }\n\n      this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        totalColumnsWidth: totalColumnsWidth,\n        totalRowsHeight: totalRowsHeight\n      });\n    }\n    /**\n     * Invalidate Grid size and recompute visible cells.\n     * This is a deferred wrapper for recomputeGridSize().\n     * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.\n     * This method is intended for advanced use-cases like CellMeasurer.\n     */\n    // @TODO (bvaughn) Add automated test coverage for this.\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref3) {\n      var columnIndex = _ref3.columnIndex,\n          rowIndex = _ref3.rowIndex;\n      this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n      this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n    }\n    /**\n     * Pre-measure all columns and rows in a Grid.\n     * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.\n     * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).\n     */\n\n  }, {\n    key: \"measureAllCells\",\n    value: function measureAllCells() {\n      var _this$props2 = this.props,\n          columnCount = _this$props2.columnCount,\n          rowCount = _this$props2.rowCount;\n      var instanceProps = this.state.instanceProps;\n      instanceProps.columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);\n      instanceProps.rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);\n    }\n    /**\n     * Forced recompute of row heights and column widths.\n     * This function should be called if dynamic column or row sizes have changed but nothing else has.\n     * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.\n     */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref4$columnIndex = _ref4.columnIndex,\n          columnIndex = _ref4$columnIndex === void 0 ? 0 : _ref4$columnIndex,\n          _ref4$rowIndex = _ref4.rowIndex,\n          rowIndex = _ref4$rowIndex === void 0 ? 0 : _ref4$rowIndex;\n\n      var _this$props3 = this.props,\n          scrollToColumn = _this$props3.scrollToColumn,\n          scrollToRow = _this$props3.scrollToRow;\n      var instanceProps = this.state.instanceProps;\n      instanceProps.columnSizeAndPositionManager.resetCell(columnIndex);\n      instanceProps.rowSizeAndPositionManager.resetCell(rowIndex); // Cell sizes may be determined by a function property.\n      // In this case the cDU handler can't know if they changed.\n      // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.\n\n      this._recomputeScrollLeftFlag = scrollToColumn >= 0 && (this.state.scrollDirectionHorizontal === _defaultOverscanIndicesGetter.SCROLL_DIRECTION_FORWARD ? columnIndex <= scrollToColumn : columnIndex >= scrollToColumn);\n      this._recomputeScrollTopFlag = scrollToRow >= 0 && (this.state.scrollDirectionVertical === _defaultOverscanIndicesGetter.SCROLL_DIRECTION_FORWARD ? rowIndex <= scrollToRow : rowIndex >= scrollToRow); // Clear cell cache in case we are scrolling;\n      // Invalid row heights likely mean invalid cached content as well.\n\n      this._styleCache = {};\n      this._cellCache = {};\n      this.forceUpdate();\n    }\n    /**\n     * Ensure column and row are visible.\n     */\n\n  }, {\n    key: \"scrollToCell\",\n    value: function scrollToCell(_ref5) {\n      var columnIndex = _ref5.columnIndex,\n          rowIndex = _ref5.rowIndex;\n      var columnCount = this.props.columnCount;\n      var props = this.props; // Don't adjust scroll offset for single-column grids (eg List, Table).\n      // This can cause a funky scroll offset because of the vertical scrollbar width.\n\n      if (columnCount > 1 && columnIndex !== undefined) {\n        this._updateScrollLeftForScrollToColumn(_objectSpread({}, props, {\n          scrollToColumn: columnIndex\n        }));\n      }\n\n      if (rowIndex !== undefined) {\n        this._updateScrollTopForScrollToRow(_objectSpread({}, props, {\n          scrollToRow: rowIndex\n        }));\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props4 = this.props,\n          getScrollbarSize = _this$props4.getScrollbarSize,\n          height = _this$props4.height,\n          scrollLeft = _this$props4.scrollLeft,\n          scrollToColumn = _this$props4.scrollToColumn,\n          scrollTop = _this$props4.scrollTop,\n          scrollToRow = _this$props4.scrollToRow,\n          width = _this$props4.width;\n      var instanceProps = this.state.instanceProps; // Reset initial offsets to be ignored in browser\n\n      this._initialScrollTop = 0;\n      this._initialScrollLeft = 0; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n      // We must do this at the start of the method as we may calculate and update scroll position below.\n\n      this._handleInvalidatedGridSize(); // If this component was first rendered server-side, scrollbar size will be undefined.\n      // In that event we need to remeasure.\n\n\n      if (!instanceProps.scrollbarSizeMeasured) {\n        this.setState(function (prevState) {\n          var stateUpdate = _objectSpread({}, prevState, {\n            needToResetStyleCache: false\n          });\n\n          stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();\n          stateUpdate.instanceProps.scrollbarSizeMeasured = true;\n          return stateUpdate;\n        });\n      }\n\n      if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {\n        var stateUpdate = Grid._getScrollToPositionStateUpdate({\n          prevState: this.state,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        });\n\n        if (stateUpdate) {\n          stateUpdate.needToResetStyleCache = false;\n          this.setState(stateUpdate);\n        }\n      } // refs don't work in `react-test-renderer`\n\n\n      if (this._scrollingContainer) {\n        // setting the ref's scrollLeft and scrollTop.\n        // Somehow in MultiGrid the main grid doesn't trigger a update on mount.\n        if (this._scrollingContainer.scrollLeft !== this.state.scrollLeft) {\n          this._scrollingContainer.scrollLeft = this.state.scrollLeft;\n        }\n\n        if (this._scrollingContainer.scrollTop !== this.state.scrollTop) {\n          this._scrollingContainer.scrollTop = this.state.scrollTop;\n        }\n      } // Don't update scroll offset if the size is 0; we don't render any cells in this case.\n      // Setting a state may cause us to later thing we've updated the offce when we haven't.\n\n\n      var sizeIsBiggerThanZero = height > 0 && width > 0;\n\n      if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {\n        this._updateScrollLeftForScrollToColumn();\n      }\n\n      if (scrollToRow >= 0 && sizeIsBiggerThanZero) {\n        this._updateScrollTopForScrollToRow();\n      } // Update onRowsRendered callback\n\n\n      this._invokeOnGridRenderedHelper(); // Initialize onScroll callback\n\n\n      this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft || 0,\n        scrollTop: scrollTop || 0,\n        totalColumnsWidth: instanceProps.columnSizeAndPositionManager.getTotalSize(),\n        totalRowsHeight: instanceProps.rowSizeAndPositionManager.getTotalSize()\n      });\n\n      this._maybeCallOnScrollbarPresenceChange();\n    }\n    /**\n     * @private\n     * This method updates scrollLeft/scrollTop in state for the following conditions:\n     * 1) New scroll-to-cell props have been set\n     */\n\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this2 = this;\n\n      var _this$props5 = this.props,\n          autoHeight = _this$props5.autoHeight,\n          autoWidth = _this$props5.autoWidth,\n          columnCount = _this$props5.columnCount,\n          height = _this$props5.height,\n          rowCount = _this$props5.rowCount,\n          scrollToAlignment = _this$props5.scrollToAlignment,\n          scrollToColumn = _this$props5.scrollToColumn,\n          scrollToRow = _this$props5.scrollToRow,\n          width = _this$props5.width;\n      var _this$state = this.state,\n          scrollLeft = _this$state.scrollLeft,\n          scrollPositionChangeReason = _this$state.scrollPositionChangeReason,\n          scrollTop = _this$state.scrollTop,\n          instanceProps = _this$state.instanceProps; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n      // We must do this at the start of the method as we may calculate and update scroll position below.\n\n      this._handleInvalidatedGridSize(); // Handle edge case where column or row count has only just increased over 0.\n      // In this case we may have to restore a previously-specified scroll offset.\n      // For more info see bvaughn/react-virtualized/issues/218\n\n\n      var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n      // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n      // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n      // So we only set these when we require an adjustment of the scroll position.\n      // See issue #2 for more information.\n\n      if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n        // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).\n        // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.\n        if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {\n          this._scrollingContainer.scrollLeft = scrollLeft;\n        }\n\n        if (!autoHeight && scrollTop >= 0 && (scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {\n          this._scrollingContainer.scrollTop = scrollTop;\n        }\n      } // Special case where the previous size was 0:\n      // In this case we don't show any windowed cells at all.\n      // So we should always recalculate offset afterwards.\n\n\n      var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0; // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it\n      // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?\n\n      if (this._recomputeScrollLeftFlag) {\n        this._recomputeScrollLeftFlag = false;\n\n        this._updateScrollLeftForScrollToColumn(this.props);\n      } else {\n        (0, _updateScrollIndexHelper[\"default\"])({\n          cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n          previousCellsCount: prevProps.columnCount,\n          previousCellSize: prevProps.columnWidth,\n          previousScrollToAlignment: prevProps.scrollToAlignment,\n          previousScrollToIndex: prevProps.scrollToColumn,\n          previousSize: prevProps.width,\n          scrollOffset: scrollLeft,\n          scrollToAlignment: scrollToAlignment,\n          scrollToIndex: scrollToColumn,\n          size: width,\n          sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n          updateScrollIndexCallback: function updateScrollIndexCallback() {\n            return _this2._updateScrollLeftForScrollToColumn(_this2.props);\n          }\n        });\n      }\n\n      if (this._recomputeScrollTopFlag) {\n        this._recomputeScrollTopFlag = false;\n\n        this._updateScrollTopForScrollToRow(this.props);\n      } else {\n        (0, _updateScrollIndexHelper[\"default\"])({\n          cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n          previousCellsCount: prevProps.rowCount,\n          previousCellSize: prevProps.rowHeight,\n          previousScrollToAlignment: prevProps.scrollToAlignment,\n          previousScrollToIndex: prevProps.scrollToRow,\n          previousSize: prevProps.height,\n          scrollOffset: scrollTop,\n          scrollToAlignment: scrollToAlignment,\n          scrollToIndex: scrollToRow,\n          size: height,\n          sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n          updateScrollIndexCallback: function updateScrollIndexCallback() {\n            return _this2._updateScrollTopForScrollToRow(_this2.props);\n          }\n        });\n      } // Update onRowsRendered callback if start/stop indices have changed\n\n\n      this._invokeOnGridRenderedHelper(); // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners\n\n\n      if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {\n        var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n        var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n\n        this._invokeOnScrollMemoizer({\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          totalColumnsWidth: totalColumnsWidth,\n          totalRowsHeight: totalRowsHeight\n        });\n      }\n\n      this._maybeCallOnScrollbarPresenceChange();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._disablePointerEventsTimeoutId) {\n        (0, _requestAnimationTimeout.cancelAnimationTimeout)(this._disablePointerEventsTimeoutId);\n      }\n    }\n    /**\n     * This method updates scrollLeft/scrollTop in state for the following conditions:\n     * 1) Empty content (0 rows or columns)\n     * 2) New scroll props overriding the current state\n     * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n     */\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props6 = this.props,\n          autoContainerWidth = _this$props6.autoContainerWidth,\n          autoHeight = _this$props6.autoHeight,\n          autoWidth = _this$props6.autoWidth,\n          className = _this$props6.className,\n          containerProps = _this$props6.containerProps,\n          containerRole = _this$props6.containerRole,\n          containerStyle = _this$props6.containerStyle,\n          height = _this$props6.height,\n          id = _this$props6.id,\n          noContentRenderer = _this$props6.noContentRenderer,\n          role = _this$props6.role,\n          style = _this$props6.style,\n          tabIndex = _this$props6.tabIndex,\n          width = _this$props6.width;\n      var _this$state2 = this.state,\n          instanceProps = _this$state2.instanceProps,\n          needToResetStyleCache = _this$state2.needToResetStyleCache;\n\n      var isScrolling = this._isScrolling();\n\n      var gridStyle = {\n        boxSizing: 'border-box',\n        direction: 'ltr',\n        height: autoHeight ? 'auto' : height,\n        position: 'relative',\n        width: autoWidth ? 'auto' : width,\n        WebkitOverflowScrolling: 'touch',\n        willChange: 'transform'\n      };\n\n      if (needToResetStyleCache) {\n        this._styleCache = {};\n      } // calculate _styleCache here\n      // if state.isScrolling (not from _isScrolling) then reset\n\n\n      if (!this.state.isScrolling) {\n        this._resetStyleCache();\n      } // calculate children to render here\n\n\n      this._calculateChildrenToRender(this.props, this.state);\n\n      var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n      var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize(); // Force browser to hide scrollbars when we know they aren't necessary.\n      // Otherwise once scrollbars appear they may not disappear again.\n      // For more info see issue #116\n\n      var verticalScrollBarSize = totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n      var horizontalScrollBarSize = totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n      if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {\n        this._horizontalScrollBarSize = horizontalScrollBarSize;\n        this._verticalScrollBarSize = verticalScrollBarSize;\n        this._scrollbarPresenceChanged = true;\n      } // Also explicitly init styles to 'auto' if scrollbars are required.\n      // This works around an obscure edge case where external CSS styles have not yet been loaded,\n      // But an initial scroll index of offset is set as an external prop.\n      // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n      // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n\n      gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n      gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n      var childrenToDisplay = this._childrenToDisplay;\n      var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;\n      return React.createElement(\"div\", (0, _extends2[\"default\"])({\n        ref: this._setScrollingContainerRef\n      }, containerProps, {\n        \"aria-label\": this.props['aria-label'],\n        \"aria-readonly\": this.props['aria-readonly'],\n        className: (0, _clsx[\"default\"])('ReactVirtualized__Grid', className),\n        id: id,\n        onScroll: this._onScroll,\n        role: role,\n        style: _objectSpread({}, gridStyle, {}, style),\n        tabIndex: tabIndex\n      }), childrenToDisplay.length > 0 && React.createElement(\"div\", {\n        className: \"ReactVirtualized__Grid__innerScrollContainer\",\n        role: containerRole,\n        style: _objectSpread({\n          width: autoContainerWidth ? 'auto' : totalColumnsWidth,\n          height: totalRowsHeight,\n          maxWidth: totalColumnsWidth,\n          maxHeight: totalRowsHeight,\n          overflow: 'hidden',\n          pointerEvents: isScrolling ? 'none' : '',\n          position: 'relative'\n        }, containerStyle)\n      }, childrenToDisplay), showNoContentRenderer && noContentRenderer());\n    }\n    /* ---------------------------- Helper methods ---------------------------- */\n\n  }, {\n    key: \"_calculateChildrenToRender\",\n    value: function _calculateChildrenToRender() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      var cellRenderer = props.cellRenderer,\n          cellRangeRenderer = props.cellRangeRenderer,\n          columnCount = props.columnCount,\n          deferredMeasurementCache = props.deferredMeasurementCache,\n          height = props.height,\n          overscanColumnCount = props.overscanColumnCount,\n          overscanIndicesGetter = props.overscanIndicesGetter,\n          overscanRowCount = props.overscanRowCount,\n          rowCount = props.rowCount,\n          width = props.width,\n          isScrollingOptOut = props.isScrollingOptOut;\n      var scrollDirectionHorizontal = state.scrollDirectionHorizontal,\n          scrollDirectionVertical = state.scrollDirectionVertical,\n          instanceProps = state.instanceProps;\n      var scrollTop = this._initialScrollTop > 0 ? this._initialScrollTop : state.scrollTop;\n      var scrollLeft = this._initialScrollLeft > 0 ? this._initialScrollLeft : state.scrollLeft;\n\n      var isScrolling = this._isScrolling(props, state);\n\n      this._childrenToDisplay = []; // Render only enough columns and rows to cover the visible area of the grid.\n\n      if (height > 0 && width > 0) {\n        var visibleColumnIndices = instanceProps.columnSizeAndPositionManager.getVisibleCellRange({\n          containerSize: width,\n          offset: scrollLeft\n        });\n        var visibleRowIndices = instanceProps.rowSizeAndPositionManager.getVisibleCellRange({\n          containerSize: height,\n          offset: scrollTop\n        });\n        var horizontalOffsetAdjustment = instanceProps.columnSizeAndPositionManager.getOffsetAdjustment({\n          containerSize: width,\n          offset: scrollLeft\n        });\n        var verticalOffsetAdjustment = instanceProps.rowSizeAndPositionManager.getOffsetAdjustment({\n          containerSize: height,\n          offset: scrollTop\n        }); // Store for _invokeOnGridRenderedHelper()\n\n        this._renderedColumnStartIndex = visibleColumnIndices.start;\n        this._renderedColumnStopIndex = visibleColumnIndices.stop;\n        this._renderedRowStartIndex = visibleRowIndices.start;\n        this._renderedRowStopIndex = visibleRowIndices.stop;\n        var overscanColumnIndices = overscanIndicesGetter({\n          direction: 'horizontal',\n          cellCount: columnCount,\n          overscanCellsCount: overscanColumnCount,\n          scrollDirection: scrollDirectionHorizontal,\n          startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,\n          stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1\n        });\n        var overscanRowIndices = overscanIndicesGetter({\n          direction: 'vertical',\n          cellCount: rowCount,\n          overscanCellsCount: overscanRowCount,\n          scrollDirection: scrollDirectionVertical,\n          startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,\n          stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1\n        }); // Store for _invokeOnGridRenderedHelper()\n\n        var columnStartIndex = overscanColumnIndices.overscanStartIndex;\n        var columnStopIndex = overscanColumnIndices.overscanStopIndex;\n        var rowStartIndex = overscanRowIndices.overscanStartIndex;\n        var rowStopIndex = overscanRowIndices.overscanStopIndex; // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.\n\n        if (deferredMeasurementCache) {\n          // If rows have a dynamic height, scan the rows we are about to render.\n          // If any have not yet been measured, then we need to render all columns initially,\n          // Because the height of the row is equal to the tallest cell within that row,\n          // (And so we can't know the height without measuring all column-cells first).\n          if (!deferredMeasurementCache.hasFixedHeight()) {\n            for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n              if (!deferredMeasurementCache.has(rowIndex, 0)) {\n                columnStartIndex = 0;\n                columnStopIndex = columnCount - 1;\n                break;\n              }\n            }\n          } // If columns have a dynamic width, scan the columns we are about to render.\n          // If any have not yet been measured, then we need to render all rows initially,\n          // Because the width of the column is equal to the widest cell within that column,\n          // (And so we can't know the width without measuring all row-cells first).\n\n\n          if (!deferredMeasurementCache.hasFixedWidth()) {\n            for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n              if (!deferredMeasurementCache.has(0, columnIndex)) {\n                rowStartIndex = 0;\n                rowStopIndex = rowCount - 1;\n                break;\n              }\n            }\n          }\n        }\n\n        this._childrenToDisplay = cellRangeRenderer({\n          cellCache: this._cellCache,\n          cellRenderer: cellRenderer,\n          columnSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n          columnStartIndex: columnStartIndex,\n          columnStopIndex: columnStopIndex,\n          deferredMeasurementCache: deferredMeasurementCache,\n          horizontalOffsetAdjustment: horizontalOffsetAdjustment,\n          isScrolling: isScrolling,\n          isScrollingOptOut: isScrollingOptOut,\n          parent: this,\n          rowSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n          rowStartIndex: rowStartIndex,\n          rowStopIndex: rowStopIndex,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          styleCache: this._styleCache,\n          verticalOffsetAdjustment: verticalOffsetAdjustment,\n          visibleColumnIndices: visibleColumnIndices,\n          visibleRowIndices: visibleRowIndices\n        }); // update the indices\n\n        this._columnStartIndex = columnStartIndex;\n        this._columnStopIndex = columnStopIndex;\n        this._rowStartIndex = rowStartIndex;\n        this._rowStopIndex = rowStopIndex;\n      }\n    }\n    /**\n     * Sets an :isScrolling flag for a small window of time.\n     * This flag is used to disable pointer events on the scrollable portion of the Grid.\n     * This prevents jerky/stuttery mouse-wheel scrolling.\n     */\n\n  }, {\n    key: \"_debounceScrollEnded\",\n    value: function _debounceScrollEnded() {\n      var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n      if (this._disablePointerEventsTimeoutId) {\n        (0, _requestAnimationTimeout.cancelAnimationTimeout)(this._disablePointerEventsTimeoutId);\n      }\n\n      this._disablePointerEventsTimeoutId = (0, _requestAnimationTimeout.requestAnimationTimeout)(this._debounceScrollEndedCallback, scrollingResetTimeInterval);\n    }\n  }, {\n    key: \"_handleInvalidatedGridSize\",\n\n    /**\n     * Check for batched CellMeasurer size invalidations.\n     * This will occur the first time one or more previously unmeasured cells are rendered.\n     */\n    value: function _handleInvalidatedGridSize() {\n      if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {\n        var columnIndex = this._deferredInvalidateColumnIndex;\n        var rowIndex = this._deferredInvalidateRowIndex;\n        this._deferredInvalidateColumnIndex = null;\n        this._deferredInvalidateRowIndex = null;\n        this.recomputeGridSize({\n          columnIndex: columnIndex,\n          rowIndex: rowIndex\n        });\n      }\n    }\n  }, {\n    key: \"_invokeOnScrollMemoizer\",\n    value: function _invokeOnScrollMemoizer(_ref6) {\n      var _this3 = this;\n\n      var scrollLeft = _ref6.scrollLeft,\n          scrollTop = _ref6.scrollTop,\n          totalColumnsWidth = _ref6.totalColumnsWidth,\n          totalRowsHeight = _ref6.totalRowsHeight;\n\n      this._onScrollMemoizer({\n        callback: function callback(_ref7) {\n          var scrollLeft = _ref7.scrollLeft,\n              scrollTop = _ref7.scrollTop;\n          var _this3$props = _this3.props,\n              height = _this3$props.height,\n              onScroll = _this3$props.onScroll,\n              width = _this3$props.width;\n          onScroll({\n            clientHeight: height,\n            clientWidth: width,\n            scrollHeight: totalRowsHeight,\n            scrollLeft: scrollLeft,\n            scrollTop: scrollTop,\n            scrollWidth: totalColumnsWidth\n          });\n        },\n        indices: {\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        }\n      });\n    }\n  }, {\n    key: \"_isScrolling\",\n    value: function _isScrolling() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      // If isScrolling is defined in props, use it to override the value in state\n      // This is a performance optimization for WindowScroller + Grid\n      return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);\n    }\n  }, {\n    key: \"_maybeCallOnScrollbarPresenceChange\",\n    value: function _maybeCallOnScrollbarPresenceChange() {\n      if (this._scrollbarPresenceChanged) {\n        var onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;\n        this._scrollbarPresenceChanged = false;\n        onScrollbarPresenceChange({\n          horizontal: this._horizontalScrollBarSize > 0,\n          size: this.state.instanceProps.scrollbarSize,\n          vertical: this._verticalScrollBarSize > 0\n        });\n      }\n    }\n  }, {\n    key: \"scrollToPosition\",\n\n    /**\n     * Scroll to the specified offset(s).\n     * Useful for animating position changes.\n     */\n    value: function scrollToPosition(_ref8) {\n      var scrollLeft = _ref8.scrollLeft,\n          scrollTop = _ref8.scrollTop;\n\n      var stateUpdate = Grid._getScrollToPositionStateUpdate({\n        prevState: this.state,\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop\n      });\n\n      if (stateUpdate) {\n        stateUpdate.needToResetStyleCache = false;\n        this.setState(stateUpdate);\n      }\n    }\n  }, {\n    key: \"_getCalculatedScrollLeft\",\n    value: function _getCalculatedScrollLeft() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      return Grid._getCalculatedScrollLeft(props, state);\n    }\n  }, {\n    key: \"_updateScrollLeftForScrollToColumn\",\n    value: function _updateScrollLeftForScrollToColumn() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n      var stateUpdate = Grid._getScrollLeftForScrollToColumnStateUpdate(props, state);\n\n      if (stateUpdate) {\n        stateUpdate.needToResetStyleCache = false;\n        this.setState(stateUpdate);\n      }\n    }\n  }, {\n    key: \"_getCalculatedScrollTop\",\n    value: function _getCalculatedScrollTop() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      return Grid._getCalculatedScrollTop(props, state);\n    }\n  }, {\n    key: \"_resetStyleCache\",\n    value: function _resetStyleCache() {\n      var styleCache = this._styleCache;\n      var cellCache = this._cellCache;\n      var isScrollingOptOut = this.props.isScrollingOptOut; // Reset cell and style caches once scrolling stops.\n      // This makes Grid simpler to use (since cells commonly change).\n      // And it keeps the caches from growing too large.\n      // Performance is most sensitive when a user is scrolling.\n      // Don't clear visible cells from cellCache if isScrollingOptOut is specified.\n      // This keeps the cellCache to a resonable size.\n\n      this._cellCache = {};\n      this._styleCache = {}; // Copy over the visible cell styles so avoid unnecessary re-render.\n\n      for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {\n        for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {\n          var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n          this._styleCache[key] = styleCache[key];\n\n          if (isScrollingOptOut) {\n            this._cellCache[key] = cellCache[key];\n          }\n        }\n      }\n    }\n  }, {\n    key: \"_updateScrollTopForScrollToRow\",\n    value: function _updateScrollTopForScrollToRow() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n      var stateUpdate = Grid._getScrollTopForScrollToRowStateUpdate(props, state);\n\n      if (stateUpdate) {\n        stateUpdate.needToResetStyleCache = false;\n        this.setState(stateUpdate);\n      }\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var newState = {};\n\n      if (nextProps.columnCount === 0 && prevState.scrollLeft !== 0 || nextProps.rowCount === 0 && prevState.scrollTop !== 0) {\n        newState.scrollLeft = 0;\n        newState.scrollTop = 0; // only use scroll{Left,Top} from props if scrollTo{Column,Row} isn't specified\n        // scrollTo{Column,Row} should override scroll{Left,Top}\n      } else if (nextProps.scrollLeft !== prevState.scrollLeft && nextProps.scrollToColumn < 0 || nextProps.scrollTop !== prevState.scrollTop && nextProps.scrollToRow < 0) {\n        Object.assign(newState, Grid._getScrollToPositionStateUpdate({\n          prevState: prevState,\n          scrollLeft: nextProps.scrollLeft,\n          scrollTop: nextProps.scrollTop\n        }));\n      }\n\n      var instanceProps = prevState.instanceProps; // Initially we should not clearStyleCache\n\n      newState.needToResetStyleCache = false;\n\n      if (nextProps.columnWidth !== instanceProps.prevColumnWidth || nextProps.rowHeight !== instanceProps.prevRowHeight) {\n        // Reset cache. set it to {} in render\n        newState.needToResetStyleCache = true;\n      }\n\n      instanceProps.columnSizeAndPositionManager.configure({\n        cellCount: nextProps.columnCount,\n        estimatedCellSize: Grid._getEstimatedColumnSize(nextProps),\n        cellSizeGetter: Grid._wrapSizeGetter(nextProps.columnWidth)\n      });\n      instanceProps.rowSizeAndPositionManager.configure({\n        cellCount: nextProps.rowCount,\n        estimatedCellSize: Grid._getEstimatedRowSize(nextProps),\n        cellSizeGetter: Grid._wrapSizeGetter(nextProps.rowHeight)\n      });\n\n      if (instanceProps.prevColumnCount === 0 || instanceProps.prevRowCount === 0) {\n        instanceProps.prevColumnCount = 0;\n        instanceProps.prevRowCount = 0;\n      } // If scrolling is controlled outside this component, clear cache when scrolling stops\n\n\n      if (nextProps.autoHeight && nextProps.isScrolling === false && instanceProps.prevIsScrolling === true) {\n        Object.assign(newState, {\n          isScrolling: false\n        });\n      }\n\n      var maybeStateA;\n      var maybeStateB;\n      (0, _calculateSizeAndPositionDataAndUpdateScrollOffset[\"default\"])({\n        cellCount: instanceProps.prevColumnCount,\n        cellSize: typeof instanceProps.prevColumnWidth === 'number' ? instanceProps.prevColumnWidth : null,\n        computeMetadataCallback: function computeMetadataCallback() {\n          return instanceProps.columnSizeAndPositionManager.resetCell(0);\n        },\n        computeMetadataCallbackProps: nextProps,\n        nextCellsCount: nextProps.columnCount,\n        nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,\n        nextScrollToIndex: nextProps.scrollToColumn,\n        scrollToIndex: instanceProps.prevScrollToColumn,\n        updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n          maybeStateA = Grid._getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState);\n        }\n      });\n      (0, _calculateSizeAndPositionDataAndUpdateScrollOffset[\"default\"])({\n        cellCount: instanceProps.prevRowCount,\n        cellSize: typeof instanceProps.prevRowHeight === 'number' ? instanceProps.prevRowHeight : null,\n        computeMetadataCallback: function computeMetadataCallback() {\n          return instanceProps.rowSizeAndPositionManager.resetCell(0);\n        },\n        computeMetadataCallbackProps: nextProps,\n        nextCellsCount: nextProps.rowCount,\n        nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,\n        nextScrollToIndex: nextProps.scrollToRow,\n        scrollToIndex: instanceProps.prevScrollToRow,\n        updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n          maybeStateB = Grid._getScrollTopForScrollToRowStateUpdate(nextProps, prevState);\n        }\n      });\n      instanceProps.prevColumnCount = nextProps.columnCount;\n      instanceProps.prevColumnWidth = nextProps.columnWidth;\n      instanceProps.prevIsScrolling = nextProps.isScrolling === true;\n      instanceProps.prevRowCount = nextProps.rowCount;\n      instanceProps.prevRowHeight = nextProps.rowHeight;\n      instanceProps.prevScrollToColumn = nextProps.scrollToColumn;\n      instanceProps.prevScrollToRow = nextProps.scrollToRow; // getting scrollBarSize (moved from componentWillMount)\n\n      instanceProps.scrollbarSize = nextProps.getScrollbarSize();\n\n      if (instanceProps.scrollbarSize === undefined) {\n        instanceProps.scrollbarSizeMeasured = false;\n        instanceProps.scrollbarSize = 0;\n      } else {\n        instanceProps.scrollbarSizeMeasured = true;\n      }\n\n      newState.instanceProps = instanceProps;\n      return _objectSpread({}, newState, {}, maybeStateA, {}, maybeStateB);\n    }\n  }, {\n    key: \"_getEstimatedColumnSize\",\n    value: function _getEstimatedColumnSize(props) {\n      return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;\n    }\n  }, {\n    key: \"_getEstimatedRowSize\",\n    value: function _getEstimatedRowSize(props) {\n      return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;\n    }\n  }, {\n    key: \"_getScrollToPositionStateUpdate\",\n\n    /**\n     * Get the updated state after scrolling to\n     * scrollLeft and scrollTop\n     */\n    value: function _getScrollToPositionStateUpdate(_ref9) {\n      var prevState = _ref9.prevState,\n          scrollLeft = _ref9.scrollLeft,\n          scrollTop = _ref9.scrollTop;\n      var newState = {\n        scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n      };\n\n      if (typeof scrollLeft === 'number' && scrollLeft >= 0) {\n        newState.scrollDirectionHorizontal = scrollLeft > prevState.scrollLeft ? _defaultOverscanIndicesGetter.SCROLL_DIRECTION_FORWARD : _defaultOverscanIndicesGetter.SCROLL_DIRECTION_BACKWARD;\n        newState.scrollLeft = scrollLeft;\n      }\n\n      if (typeof scrollTop === 'number' && scrollTop >= 0) {\n        newState.scrollDirectionVertical = scrollTop > prevState.scrollTop ? _defaultOverscanIndicesGetter.SCROLL_DIRECTION_FORWARD : _defaultOverscanIndicesGetter.SCROLL_DIRECTION_BACKWARD;\n        newState.scrollTop = scrollTop;\n      }\n\n      if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== prevState.scrollTop) {\n        return newState;\n      }\n\n      return {};\n    }\n  }, {\n    key: \"_wrapSizeGetter\",\n    value: function _wrapSizeGetter(value) {\n      return typeof value === 'function' ? value : function () {\n        return value;\n      };\n    }\n  }, {\n    key: \"_getCalculatedScrollLeft\",\n    value: function _getCalculatedScrollLeft(nextProps, prevState) {\n      var columnCount = nextProps.columnCount,\n          height = nextProps.height,\n          scrollToAlignment = nextProps.scrollToAlignment,\n          scrollToColumn = nextProps.scrollToColumn,\n          width = nextProps.width;\n      var scrollLeft = prevState.scrollLeft,\n          instanceProps = prevState.instanceProps;\n\n      if (columnCount > 0) {\n        var finalColumn = columnCount - 1;\n        var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);\n        var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n        var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n        return instanceProps.columnSizeAndPositionManager.getUpdatedOffsetForIndex({\n          align: scrollToAlignment,\n          containerSize: width - scrollBarSize,\n          currentOffset: scrollLeft,\n          targetIndex: targetIndex\n        });\n      }\n\n      return 0;\n    }\n  }, {\n    key: \"_getScrollLeftForScrollToColumnStateUpdate\",\n    value: function _getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState) {\n      var scrollLeft = prevState.scrollLeft;\n\n      var calculatedScrollLeft = Grid._getCalculatedScrollLeft(nextProps, prevState);\n\n      if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {\n        return Grid._getScrollToPositionStateUpdate({\n          prevState: prevState,\n          scrollLeft: calculatedScrollLeft,\n          scrollTop: -1\n        });\n      }\n\n      return {};\n    }\n  }, {\n    key: \"_getCalculatedScrollTop\",\n    value: function _getCalculatedScrollTop(nextProps, prevState) {\n      var height = nextProps.height,\n          rowCount = nextProps.rowCount,\n          scrollToAlignment = nextProps.scrollToAlignment,\n          scrollToRow = nextProps.scrollToRow,\n          width = nextProps.width;\n      var scrollTop = prevState.scrollTop,\n          instanceProps = prevState.instanceProps;\n\n      if (rowCount > 0) {\n        var finalRow = rowCount - 1;\n        var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);\n        var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n        var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n        return instanceProps.rowSizeAndPositionManager.getUpdatedOffsetForIndex({\n          align: scrollToAlignment,\n          containerSize: height - scrollBarSize,\n          currentOffset: scrollTop,\n          targetIndex: targetIndex\n        });\n      }\n\n      return 0;\n    }\n  }, {\n    key: \"_getScrollTopForScrollToRowStateUpdate\",\n    value: function _getScrollTopForScrollToRowStateUpdate(nextProps, prevState) {\n      var scrollTop = prevState.scrollTop;\n\n      var calculatedScrollTop = Grid._getCalculatedScrollTop(nextProps, prevState);\n\n      if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {\n        return Grid._getScrollToPositionStateUpdate({\n          prevState: prevState,\n          scrollLeft: -1,\n          scrollTop: calculatedScrollTop\n        });\n      }\n\n      return {};\n    }\n  }]);\n  return Grid;\n}(React.PureComponent), (0, _defineProperty2[\"default\"])(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"aria-label\": _propTypes[\"default\"].string.isRequired,\n  \"aria-readonly\": _propTypes[\"default\"].bool,\n\n  /**\n   * Set the width of the inner scrollable container to 'auto'.\n   * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.\n   */\n  \"autoContainerWidth\": _propTypes[\"default\"].bool.isRequired,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.\n   * Intended for use with WindowScroller\n   */\n  \"autoHeight\": _propTypes[\"default\"].bool.isRequired,\n\n  /**\n   * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.\n   * Intended for use with WindowScroller\n   */\n  \"autoWidth\": _propTypes[\"default\"].bool.isRequired,\n\n  /** Responsible for rendering a cell given an row and column index.  */\n  \"cellRenderer\": function cellRenderer() {\n    return (typeof _types.bpfrpt_proptype_CellRenderer === \"function\" ? _types.bpfrpt_proptype_CellRenderer.isRequired ? _types.bpfrpt_proptype_CellRenderer.isRequired : _types.bpfrpt_proptype_CellRenderer : _propTypes[\"default\"].shape(_types.bpfrpt_proptype_CellRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Responsible for rendering a group of cells given their index ranges.  */\n  \"cellRangeRenderer\": function cellRangeRenderer() {\n    return (typeof _types.bpfrpt_proptype_CellRangeRenderer === \"function\" ? _types.bpfrpt_proptype_CellRangeRenderer.isRequired ? _types.bpfrpt_proptype_CellRangeRenderer.isRequired : _types.bpfrpt_proptype_CellRangeRenderer : _propTypes[\"default\"].shape(_types.bpfrpt_proptype_CellRangeRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Optional custom CSS class name to attach to root Grid element.  */\n  \"className\": _propTypes[\"default\"].string,\n\n  /** Number of columns in grid.  */\n  \"columnCount\": _propTypes[\"default\"].number.isRequired,\n\n  /** Either a fixed column width (number) or a function that returns the width of a column given its index.  */\n  \"columnWidth\": function columnWidth() {\n    return (typeof _types.bpfrpt_proptype_CellSize === \"function\" ? _types.bpfrpt_proptype_CellSize.isRequired ? _types.bpfrpt_proptype_CellSize.isRequired : _types.bpfrpt_proptype_CellSize : _propTypes[\"default\"].shape(_types.bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n  },\n\n  /** Unfiltered props for the Grid container. */\n  \"containerProps\": _propTypes[\"default\"].object,\n\n  /** ARIA role for the cell-container.  */\n  \"containerRole\": _propTypes[\"default\"].string.isRequired,\n\n  /** Optional inline style applied to inner cell-container */\n  \"containerStyle\": _propTypes[\"default\"].object.isRequired,\n\n  /**\n   * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.\n   * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.\n   */\n  \"deferredMeasurementCache\": _propTypes[\"default\"].object,\n\n  /**\n   * Used to estimate the total width of a Grid before all of its columns have actually been measured.\n   * The estimated total width is adjusted as columns are rendered.\n   */\n  \"estimatedColumnSize\": _propTypes[\"default\"].number.isRequired,\n\n  /**\n   * Used to estimate the total height of a Grid before all of its rows have actually been measured.\n   * The estimated total height is adjusted as rows are rendered.\n   */\n  \"estimatedRowSize\": _propTypes[\"default\"].number.isRequired,\n\n  /** Exposed for testing purposes only.  */\n  \"getScrollbarSize\": _propTypes[\"default\"].func.isRequired,\n\n  /** Height of Grid; this property determines the number of visible (vs virtualized) rows.  */\n  \"height\": _propTypes[\"default\"].number.isRequired,\n\n  /** Optional custom id to attach to root Grid element.  */\n  \"id\": _propTypes[\"default\"].string,\n\n  /**\n   * Override internal is-scrolling state tracking.\n   * This property is primarily intended for use with the WindowScroller component.\n   */\n  \"isScrolling\": _propTypes[\"default\"].bool,\n\n  /**\n   * Opt-out of isScrolling param passed to cellRangeRenderer.\n   * To avoid the extra render when scroll stops.\n   */\n  \"isScrollingOptOut\": _propTypes[\"default\"].bool.isRequired,\n\n  /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0.  */\n  \"noContentRenderer\": function noContentRenderer() {\n    return (typeof _types.bpfrpt_proptype_NoContentRenderer === \"function\" ? _types.bpfrpt_proptype_NoContentRenderer.isRequired ? _types.bpfrpt_proptype_NoContentRenderer.isRequired : _types.bpfrpt_proptype_NoContentRenderer : _propTypes[\"default\"].shape(_types.bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n  },\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   */\n  \"onScroll\": _propTypes[\"default\"].func.isRequired,\n\n  /**\n   * Called whenever a horizontal or vertical scrollbar is added or removed.\n   * This prop is not intended for end-user use;\n   * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.\n   */\n  \"onScrollbarPresenceChange\": _propTypes[\"default\"].func.isRequired,\n\n  /** Callback invoked with information about the section of the Grid that was just rendered.  */\n  \"onSectionRendered\": _propTypes[\"default\"].func.isRequired,\n\n  /**\n   * Number of columns to render before/after the visible section of the grid.\n   * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n   */\n  \"overscanColumnCount\": _propTypes[\"default\"].number.isRequired,\n\n  /**\n   * Calculates the number of cells to overscan before and after a specified range.\n   * This function ensures that overscanning doesn't exceed the available cells.\n   */\n  \"overscanIndicesGetter\": function overscanIndicesGetter() {\n    return (typeof _types.bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? _types.bpfrpt_proptype_OverscanIndicesGetter.isRequired ? _types.bpfrpt_proptype_OverscanIndicesGetter.isRequired : _types.bpfrpt_proptype_OverscanIndicesGetter : _propTypes[\"default\"].shape(_types.bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n  },\n\n  /**\n   * Number of rows to render above/below the visible section of the grid.\n   * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n   */\n  \"overscanRowCount\": _propTypes[\"default\"].number.isRequired,\n\n  /** ARIA role for the grid element.  */\n  \"role\": _propTypes[\"default\"].string.isRequired,\n\n  /**\n   * Either a fixed row height (number) or a function that returns the height of a row given its index.\n   * Should implement the following interface: ({ index: number }): number\n   */\n  \"rowHeight\": function rowHeight() {\n    return (typeof _types.bpfrpt_proptype_CellSize === \"function\" ? _types.bpfrpt_proptype_CellSize.isRequired ? _types.bpfrpt_proptype_CellSize.isRequired : _types.bpfrpt_proptype_CellSize : _propTypes[\"default\"].shape(_types.bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n  },\n\n  /** Number of rows in grid.  */\n  \"rowCount\": _propTypes[\"default\"].number.isRequired,\n\n  /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */\n  \"scrollingResetTimeInterval\": _propTypes[\"default\"].number.isRequired,\n\n  /** Horizontal offset. */\n  \"scrollLeft\": _propTypes[\"default\"].number,\n\n  /**\n   * Controls scroll-to-cell behavior of the Grid.\n   * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n   * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n   */\n  \"scrollToAlignment\": function scrollToAlignment() {\n    return (typeof _types.bpfrpt_proptype_Alignment === \"function\" ? _types.bpfrpt_proptype_Alignment.isRequired ? _types.bpfrpt_proptype_Alignment.isRequired : _types.bpfrpt_proptype_Alignment : _propTypes[\"default\"].shape(_types.bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n  },\n\n  /** Column index to ensure visible (by forcefully scrolling if necessary) */\n  \"scrollToColumn\": _propTypes[\"default\"].number.isRequired,\n\n  /** Vertical offset. */\n  \"scrollTop\": _propTypes[\"default\"].number,\n\n  /** Row index to ensure visible (by forcefully scrolling if necessary) */\n  \"scrollToRow\": _propTypes[\"default\"].number.isRequired,\n\n  /** Optional inline style */\n  \"style\": _propTypes[\"default\"].object.isRequired,\n\n  /** Tab index for focus */\n  \"tabIndex\": _propTypes[\"default\"].number,\n\n  /** Width of Grid; this property determines the number of visible (vs virtualized) columns.  */\n  \"width\": _propTypes[\"default\"].number.isRequired\n}), _temp);\n(0, _defineProperty2[\"default\"])(Grid, \"defaultProps\", {\n  'aria-label': 'grid',\n  'aria-readonly': true,\n  autoContainerWidth: false,\n  autoHeight: false,\n  autoWidth: false,\n  cellRangeRenderer: _defaultCellRangeRenderer[\"default\"],\n  containerRole: 'rowgroup',\n  containerStyle: {},\n  estimatedColumnSize: 100,\n  estimatedRowSize: 30,\n  getScrollbarSize: _scrollbarSize[\"default\"],\n  noContentRenderer: renderNull,\n  onScroll: function onScroll() {},\n  onScrollbarPresenceChange: function onScrollbarPresenceChange() {},\n  onSectionRendered: function onSectionRendered() {},\n  overscanColumnCount: 0,\n  overscanIndicesGetter: _defaultOverscanIndicesGetter[\"default\"],\n  overscanRowCount: 10,\n  role: 'grid',\n  scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n  scrollToAlignment: 'auto',\n  scrollToColumn: -1,\n  scrollToRow: -1,\n  style: {},\n  tabIndex: 0,\n  isScrollingOptOut: false\n});\n(0, _reactLifecyclesCompat.polyfill)(Grid);\nvar _default = Grid;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = calculateSizeAndPositionDataAndUpdateScrollOffset;\n\n/**\n * Helper method that determines when to recalculate row or column metadata.\n */\nfunction calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) {\n  var cellCount = _ref.cellCount,\n      cellSize = _ref.cellSize,\n      computeMetadataCallback = _ref.computeMetadataCallback,\n      computeMetadataCallbackProps = _ref.computeMetadataCallbackProps,\n      nextCellsCount = _ref.nextCellsCount,\n      nextCellSize = _ref.nextCellSize,\n      nextScrollToIndex = _ref.nextScrollToIndex,\n      scrollToIndex = _ref.scrollToIndex,\n      updateScrollOffsetForScrollToIndex = _ref.updateScrollOffsetForScrollToIndex;\n\n  // Don't compare cell sizes if they are functions because inline functions would cause infinite loops.\n  // In that event users should use the manual recompute methods to inform of changes.\n  if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {\n    computeMetadataCallback(computeMetadataCallbackProps); // Updated cell metadata may have hidden the previous scrolled-to item.\n    // In this case we should also update the scrollTop to ensure it stays visible.\n\n    if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {\n      updateScrollOffsetForScrollToIndex();\n    }\n  }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _types = require(\"../types\");\n\n/**\n * Just-in-time calculates and caches size and position information for a collection of cells.\n */\nvar CellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n  // Cache of size and position data for cells, mapped by cell index.\n  // Note that invalid values may exist in this map so only rely on cells up to this._lastMeasuredIndex\n  // Measurements for cells up to this index can be trusted; cells afterward should be estimated.\n  // Used in deferred mode to track which cells have been queued for measurement.\n  function CellSizeAndPositionManager(_ref) {\n    var cellCount = _ref.cellCount,\n        cellSizeGetter = _ref.cellSizeGetter,\n        estimatedCellSize = _ref.estimatedCellSize;\n    (0, _classCallCheck2[\"default\"])(this, CellSizeAndPositionManager);\n    (0, _defineProperty2[\"default\"])(this, \"_cellSizeAndPositionData\", {});\n    (0, _defineProperty2[\"default\"])(this, \"_lastMeasuredIndex\", -1);\n    (0, _defineProperty2[\"default\"])(this, \"_lastBatchedIndex\", -1);\n    (0, _defineProperty2[\"default\"])(this, \"_cellCount\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_cellSizeGetter\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_estimatedCellSize\", void 0);\n    this._cellSizeGetter = cellSizeGetter;\n    this._cellCount = cellCount;\n    this._estimatedCellSize = estimatedCellSize;\n  }\n\n  (0, _createClass2[\"default\"])(CellSizeAndPositionManager, [{\n    key: \"areOffsetsAdjusted\",\n    value: function areOffsetsAdjusted() {\n      return false;\n    }\n  }, {\n    key: \"configure\",\n    value: function configure(_ref2) {\n      var cellCount = _ref2.cellCount,\n          estimatedCellSize = _ref2.estimatedCellSize,\n          cellSizeGetter = _ref2.cellSizeGetter;\n      this._cellCount = cellCount;\n      this._estimatedCellSize = estimatedCellSize;\n      this._cellSizeGetter = cellSizeGetter;\n    }\n  }, {\n    key: \"getCellCount\",\n    value: function getCellCount() {\n      return this._cellCount;\n    }\n  }, {\n    key: \"getEstimatedCellSize\",\n    value: function getEstimatedCellSize() {\n      return this._estimatedCellSize;\n    }\n  }, {\n    key: \"getLastMeasuredIndex\",\n    value: function getLastMeasuredIndex() {\n      return this._lastMeasuredIndex;\n    }\n  }, {\n    key: \"getOffsetAdjustment\",\n    value: function getOffsetAdjustment() {\n      return 0;\n    }\n    /**\n     * This method returns the size and position for the cell at the specified index.\n     * It just-in-time calculates (or used cached values) for cells leading up to the index.\n     */\n\n  }, {\n    key: \"getSizeAndPositionOfCell\",\n    value: function getSizeAndPositionOfCell(index) {\n      if (index < 0 || index >= this._cellCount) {\n        throw Error(\"Requested index \".concat(index, \" is outside of range 0..\").concat(this._cellCount));\n      }\n\n      if (index > this._lastMeasuredIndex) {\n        var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n        var offset = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n\n        for (var i = this._lastMeasuredIndex + 1; i <= index; i++) {\n          var size = this._cellSizeGetter({\n            index: i\n          }); // undefined or NaN probably means a logic error in the size getter.\n          // null means we're using CellMeasurer and haven't yet measured a given index.\n\n\n          if (size === undefined || isNaN(size)) {\n            throw Error(\"Invalid size returned for cell \".concat(i, \" of value \").concat(size));\n          } else if (size === null) {\n            this._cellSizeAndPositionData[i] = {\n              offset: offset,\n              size: 0\n            };\n            this._lastBatchedIndex = index;\n          } else {\n            this._cellSizeAndPositionData[i] = {\n              offset: offset,\n              size: size\n            };\n            offset += size;\n            this._lastMeasuredIndex = index;\n          }\n        }\n      }\n\n      return this._cellSizeAndPositionData[index];\n    }\n  }, {\n    key: \"getSizeAndPositionOfLastMeasuredCell\",\n    value: function getSizeAndPositionOfLastMeasuredCell() {\n      return this._lastMeasuredIndex >= 0 ? this._cellSizeAndPositionData[this._lastMeasuredIndex] : {\n        offset: 0,\n        size: 0\n      };\n    }\n    /**\n     * Total size of all cells being measured.\n     * This value will be completely estimated initially.\n     * As cells are measured, the estimate will be updated.\n     */\n\n  }, {\n    key: \"getTotalSize\",\n    value: function getTotalSize() {\n      var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n      var totalSizeOfMeasuredCells = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n      var numUnmeasuredCells = this._cellCount - this._lastMeasuredIndex - 1;\n      var totalSizeOfUnmeasuredCells = numUnmeasuredCells * this._estimatedCellSize;\n      return totalSizeOfMeasuredCells + totalSizeOfUnmeasuredCells;\n    }\n    /**\n     * Determines a new offset that ensures a certain cell is visible, given the current offset.\n     * If the cell is already visible then the current offset will be returned.\n     * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n     *\n     * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n     * @param containerSize Size (width or height) of the container viewport\n     * @param currentOffset Container's current (x or y) offset\n     * @param totalSize Total size (width or height) of all cells\n     * @return Offset to use to ensure the specified cell is visible\n     */\n\n  }, {\n    key: \"getUpdatedOffsetForIndex\",\n    value: function getUpdatedOffsetForIndex(_ref3) {\n      var _ref3$align = _ref3.align,\n          align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n          containerSize = _ref3.containerSize,\n          currentOffset = _ref3.currentOffset,\n          targetIndex = _ref3.targetIndex;\n\n      if (containerSize <= 0) {\n        return 0;\n      }\n\n      var datum = this.getSizeAndPositionOfCell(targetIndex);\n      var maxOffset = datum.offset;\n      var minOffset = maxOffset - containerSize + datum.size;\n      var idealOffset;\n\n      switch (align) {\n        case 'start':\n          idealOffset = maxOffset;\n          break;\n\n        case 'end':\n          idealOffset = minOffset;\n          break;\n\n        case 'center':\n          idealOffset = maxOffset - (containerSize - datum.size) / 2;\n          break;\n\n        default:\n          idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n          break;\n      }\n\n      var totalSize = this.getTotalSize();\n      return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n    }\n  }, {\n    key: \"getVisibleCellRange\",\n    value: function getVisibleCellRange(params) {\n      var containerSize = params.containerSize,\n          offset = params.offset;\n      var totalSize = this.getTotalSize();\n\n      if (totalSize === 0) {\n        return {};\n      }\n\n      var maxOffset = offset + containerSize;\n\n      var start = this._findNearestCell(offset);\n\n      var datum = this.getSizeAndPositionOfCell(start);\n      offset = datum.offset + datum.size;\n      var stop = start;\n\n      while (offset < maxOffset && stop < this._cellCount - 1) {\n        stop++;\n        offset += this.getSizeAndPositionOfCell(stop).size;\n      }\n\n      return {\n        start: start,\n        stop: stop\n      };\n    }\n    /**\n     * Clear all cached values for cells after the specified index.\n     * This method should be called for any cell that has changed its size.\n     * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionOfCell() is called.\n     */\n\n  }, {\n    key: \"resetCell\",\n    value: function resetCell(index) {\n      this._lastMeasuredIndex = Math.min(this._lastMeasuredIndex, index - 1);\n    }\n  }, {\n    key: \"_binarySearch\",\n    value: function _binarySearch(high, low, offset) {\n      while (low <= high) {\n        var middle = low + Math.floor((high - low) / 2);\n        var currentOffset = this.getSizeAndPositionOfCell(middle).offset;\n\n        if (currentOffset === offset) {\n          return middle;\n        } else if (currentOffset < offset) {\n          low = middle + 1;\n        } else if (currentOffset > offset) {\n          high = middle - 1;\n        }\n      }\n\n      if (low > 0) {\n        return low - 1;\n      } else {\n        return 0;\n      }\n    }\n  }, {\n    key: \"_exponentialSearch\",\n    value: function _exponentialSearch(index, offset) {\n      var interval = 1;\n\n      while (index < this._cellCount && this.getSizeAndPositionOfCell(index).offset < offset) {\n        index += interval;\n        interval *= 2;\n      }\n\n      return this._binarySearch(Math.min(index, this._cellCount - 1), Math.floor(index / 2), offset);\n    }\n    /**\n     * Searches for the cell (index) nearest the specified offset.\n     *\n     * If no exact match is found the next lowest cell index will be returned.\n     * This allows partially visible cells (with offsets just before/above the fold) to be visible.\n     */\n\n  }, {\n    key: \"_findNearestCell\",\n    value: function _findNearestCell(offset) {\n      if (isNaN(offset)) {\n        throw Error(\"Invalid offset \".concat(offset, \" specified\"));\n      } // Our search algorithms find the nearest match at or below the specified offset.\n      // So make sure the offset is at least 0 or no match will be found.\n\n\n      offset = Math.max(0, offset);\n      var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n      var lastMeasuredIndex = Math.max(0, this._lastMeasuredIndex);\n\n      if (lastMeasuredCellSizeAndPosition.offset >= offset) {\n        // If we've already measured cells within this range just use a binary search as it's faster.\n        return this._binarySearch(lastMeasuredIndex, 0, offset);\n      } else {\n        // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n        // The exponential search avoids pre-computing sizes for the full set of cells as a binary search would.\n        // The overall complexity for this approach is O(log n).\n        return this._exponentialSearch(lastMeasuredIndex, offset);\n      }\n    }\n  }]);\n  return CellSizeAndPositionManager;\n}();\n\nexports[\"default\"] = CellSizeAndPositionManager;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getMaxElementSize = void 0;\nvar DEFAULT_MAX_ELEMENT_SIZE = 1500000;\nvar CHROME_MAX_ELEMENT_SIZE = 1.67771e7;\n\nvar isBrowser = function isBrowser() {\n  return typeof window !== 'undefined';\n};\n\nvar isChrome = function isChrome() {\n  return !!window.chrome;\n};\n\nvar getMaxElementSize = function getMaxElementSize() {\n  if (isBrowser()) {\n    if (isChrome()) {\n      return CHROME_MAX_ELEMENT_SIZE;\n    }\n  }\n\n  return DEFAULT_MAX_ELEMENT_SIZE;\n};\n\nexports.getMaxElementSize = getMaxElementSize;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = createCallbackMemoizer;\n\n/**\n * Helper utility that updates the specified callback whenever any of the specified indices have changed.\n */\nfunction createCallbackMemoizer() {\n  var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n  var cachedIndices = {};\n  return function (_ref) {\n    var callback = _ref.callback,\n        indices = _ref.indices;\n    var keys = Object.keys(indices);\n    var allInitialized = !requireAllKeys || keys.every(function (key) {\n      var value = indices[key];\n      return Array.isArray(value) ? value.length > 0 : value >= 0;\n    });\n    var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) {\n      var cachedValue = cachedIndices[key];\n      var value = indices[key];\n      return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;\n    });\n    cachedIndices = indices;\n\n    if (allInitialized && indexChanged) {\n      callback(indices);\n    }\n  };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = updateScrollIndexHelper;\n\nvar _ScalingCellSizeAndPositionManager = _interopRequireDefault(require(\"./ScalingCellSizeAndPositionManager.js\"));\n\nvar _types = require(\"../types\");\n\nfunction updateScrollIndexHelper(_ref) {\n  var cellSize = _ref.cellSize,\n      cellSizeAndPositionManager = _ref.cellSizeAndPositionManager,\n      previousCellsCount = _ref.previousCellsCount,\n      previousCellSize = _ref.previousCellSize,\n      previousScrollToAlignment = _ref.previousScrollToAlignment,\n      previousScrollToIndex = _ref.previousScrollToIndex,\n      previousSize = _ref.previousSize,\n      scrollOffset = _ref.scrollOffset,\n      scrollToAlignment = _ref.scrollToAlignment,\n      scrollToIndex = _ref.scrollToIndex,\n      size = _ref.size,\n      sizeJustIncreasedFromZero = _ref.sizeJustIncreasedFromZero,\n      updateScrollIndexCallback = _ref.updateScrollIndexCallback;\n  var cellCount = cellSizeAndPositionManager.getCellCount();\n  var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;\n  var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize; // If we have a new scroll target OR if height/row-height has changed,\n  // We should ensure that the scroll target is visible.\n\n  if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {\n    updateScrollIndexCallback(scrollToIndex); // If we don't have a selected item but list size or number of children have decreased,\n    // Make sure we aren't scrolled too far past the current content.\n  } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {\n    // We need to ensure that the current scroll offset is still within the collection's range.\n    // To do this, we don't need to measure everything; CellMeasurer would perform poorly.\n    // Just check to make sure we're still okay.\n    // Only adjust the scroll position if we've scrolled below the last set of rows.\n    if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {\n      updateScrollIndexCallback(cellCount - 1);\n    }\n  }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.bpfrpt_proptype_AnimationTimeoutId = exports.requestAnimationTimeout = exports.cancelAnimationTimeout = void 0;\n\nvar _animationFrame = require(\"./animationFrame\");\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar bpfrpt_proptype_AnimationTimeoutId = process.env.NODE_ENV === 'production' ? null : {\n  \"id\": _propTypes[\"default\"].number.isRequired\n};\nexports.bpfrpt_proptype_AnimationTimeoutId = bpfrpt_proptype_AnimationTimeoutId;\n\nvar cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n  return (0, _animationFrame.caf)(frame.id);\n};\n/**\n * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.\n * When the delay time has been reached the function you're timing out will be called.\n *\n * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)\n */\n\n\nexports.cancelAnimationTimeout = cancelAnimationTimeout;\n\nvar requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n  var start; // wait for end of processing current event handler, because event handler may be long\n\n  Promise.resolve().then(function () {\n    start = Date.now();\n  });\n\n  var timeout = function timeout() {\n    if (Date.now() - start >= delay) {\n      callback.call();\n    } else {\n      frame.id = (0, _animationFrame.raf)(timeout);\n    }\n  };\n\n  var frame = {\n    id: (0, _animationFrame.raf)(timeout)\n  };\n  return frame;\n};\n\nexports.requestAnimationTimeout = requestAnimationTimeout;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.caf = exports.raf = void 0;\n// Properly handle server-side rendering.\nvar win;\n\nif (typeof window !== 'undefined') {\n  win = window;\n} else if (typeof self !== 'undefined') {\n  win = self;\n} else {\n  win = {};\n} // requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\nvar request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback) {\n  return win.setTimeout(callback, 1000 / 60);\n};\n\nvar cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id) {\n  win.clearTimeout(id);\n};\n\nvar raf = request;\nexports.raf = raf;\nvar caf = cancel;\nexports.caf = caf;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = defaultOverscanIndicesGetter;\nexports.SCROLL_DIRECTION_VERTICAL = exports.SCROLL_DIRECTION_HORIZONTAL = exports.SCROLL_DIRECTION_FORWARD = exports.SCROLL_DIRECTION_BACKWARD = void 0;\n\nvar _types = require(\"./types\");\n\nvar SCROLL_DIRECTION_BACKWARD = -1;\nexports.SCROLL_DIRECTION_BACKWARD = SCROLL_DIRECTION_BACKWARD;\nvar SCROLL_DIRECTION_FORWARD = 1;\nexports.SCROLL_DIRECTION_FORWARD = SCROLL_DIRECTION_FORWARD;\nvar SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexports.SCROLL_DIRECTION_HORIZONTAL = SCROLL_DIRECTION_HORIZONTAL;\nvar SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexports.SCROLL_DIRECTION_VERTICAL = SCROLL_DIRECTION_VERTICAL;\n\nfunction defaultOverscanIndicesGetter(_ref) {\n  var cellCount = _ref.cellCount,\n      overscanCellsCount = _ref.overscanCellsCount,\n      scrollDirection = _ref.scrollDirection,\n      startIndex = _ref.startIndex,\n      stopIndex = _ref.stopIndex;\n  // Make sure we render at least 1 cell extra before and after (except near boundaries)\n  // This is necessary in order to support keyboard navigation (TAB/SHIFT+TAB) in some cases\n  // For more info see issues #625\n  overscanCellsCount = Math.max(1, overscanCellsCount);\n\n  if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n    return {\n      overscanStartIndex: Math.max(0, startIndex - 1),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n    };\n  } else {\n    return {\n      overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex + 1)\n    };\n  }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf3 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _types = require(\"./types\");\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _class, _temp;\n\n/**\n * Wraps a cell and measures its rendered content.\n * Measurements are stored in a per-cell cache.\n * Cached-content is not be re-measured.\n */\nvar CellMeasurer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  (0, _inherits2[\"default\"])(CellMeasurer, _React$PureComponent);\n\n  function CellMeasurer() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    (0, _classCallCheck2[\"default\"])(this, CellMeasurer);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = (0, _possibleConstructorReturn2[\"default\"])(this, (_getPrototypeOf2 = (0, _getPrototypeOf3[\"default\"])(CellMeasurer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_child\", void 0);\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_measure\", function () {\n      var _this$props = _this.props,\n          cache = _this$props.cache,\n          _this$props$columnInd = _this$props.columnIndex,\n          columnIndex = _this$props$columnInd === void 0 ? 0 : _this$props$columnInd,\n          parent = _this$props.parent,\n          _this$props$rowIndex = _this$props.rowIndex,\n          rowIndex = _this$props$rowIndex === void 0 ? _this.props.index || 0 : _this$props$rowIndex;\n\n      var _this$_getCellMeasure = _this._getCellMeasurements(),\n          height = _this$_getCellMeasure.height,\n          width = _this$_getCellMeasure.width;\n\n      if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {\n        cache.set(rowIndex, columnIndex, width, height);\n\n        if (parent && typeof parent.recomputeGridSize === 'function') {\n          parent.recomputeGridSize({\n            columnIndex: columnIndex,\n            rowIndex: rowIndex\n          });\n        }\n      }\n    });\n    (0, _defineProperty2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), \"_registerChild\", function (element) {\n      if (element && !(element instanceof Element)) {\n        console.warn('CellMeasurer registerChild expects to be passed Element or null');\n      }\n\n      _this._child = element;\n\n      if (element) {\n        _this._maybeMeasureCell();\n      }\n    });\n    return _this;\n  }\n\n  (0, _createClass2[\"default\"])(CellMeasurer, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._maybeMeasureCell();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this._maybeMeasureCell();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return typeof children === 'function' ? children({\n        measure: this._measure,\n        registerChild: this._registerChild\n      }) : children;\n    }\n  }, {\n    key: \"_getCellMeasurements\",\n    value: function _getCellMeasurements() {\n      var cache = this.props.cache;\n      var node = this._child || (0, _reactDom.findDOMNode)(this); // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height\n\n      if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n        var styleWidth = node.style.width;\n        var styleHeight = node.style.height; // If we are re-measuring a cell that has already been measured,\n        // It will have a hard-coded width/height from the previous measurement.\n        // The fact that we are measuring indicates this measurement is probably stale,\n        // So explicitly clear it out (eg set to \"auto\") so we can recalculate.\n        // See issue #593 for more info.\n        // Even if we are measuring initially- if we're inside of a MultiGrid component,\n        // Explicitly clear width/height before measuring to avoid being tainted by another Grid.\n        // eg top/left Grid renders before bottom/right Grid\n        // Since the CellMeasurerCache is shared between them this taints derived cell size values.\n\n        if (!cache.hasFixedWidth()) {\n          node.style.width = 'auto';\n        }\n\n        if (!cache.hasFixedHeight()) {\n          node.style.height = 'auto';\n        }\n\n        var height = Math.ceil(node.offsetHeight);\n        var width = Math.ceil(node.offsetWidth); // Reset after measuring to avoid breaking styles; see #660\n\n        if (styleWidth) {\n          node.style.width = styleWidth;\n        }\n\n        if (styleHeight) {\n          node.style.height = styleHeight;\n        }\n\n        return {\n          height: height,\n          width: width\n        };\n      } else {\n        return {\n          height: 0,\n          width: 0\n        };\n      }\n    }\n  }, {\n    key: \"_maybeMeasureCell\",\n    value: function _maybeMeasureCell() {\n      var _this$props2 = this.props,\n          cache = _this$props2.cache,\n          _this$props2$columnIn = _this$props2.columnIndex,\n          columnIndex = _this$props2$columnIn === void 0 ? 0 : _this$props2$columnIn,\n          parent = _this$props2.parent,\n          _this$props2$rowIndex = _this$props2.rowIndex,\n          rowIndex = _this$props2$rowIndex === void 0 ? this.props.index || 0 : _this$props2$rowIndex;\n\n      if (!cache.has(rowIndex, columnIndex)) {\n        var _this$_getCellMeasure2 = this._getCellMeasurements(),\n            height = _this$_getCellMeasure2.height,\n            width = _this$_getCellMeasure2.width;\n\n        cache.set(rowIndex, columnIndex, width, height); // If size has changed, let Grid know to re-render.\n\n        if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {\n          parent.invalidateCellSizeAfterRender({\n            columnIndex: columnIndex,\n            rowIndex: rowIndex\n          });\n        }\n      }\n    }\n  }]);\n  return CellMeasurer;\n}(React.PureComponent), (0, _defineProperty2[\"default\"])(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"cache\": function cache() {\n    return (typeof _types.bpfrpt_proptype_CellMeasureCache === \"function\" ? _types.bpfrpt_proptype_CellMeasureCache.isRequired ? _types.bpfrpt_proptype_CellMeasureCache.isRequired : _types.bpfrpt_proptype_CellMeasureCache : _propTypes[\"default\"].shape(_types.bpfrpt_proptype_CellMeasureCache).isRequired).apply(this, arguments);\n  },\n  \"children\": _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].node]).isRequired,\n  \"columnIndex\": _propTypes[\"default\"].number,\n  \"index\": _propTypes[\"default\"].number,\n  \"parent\": _propTypes[\"default\"].shape({\n    invalidateCellSizeAfterRender: _propTypes[\"default\"].func,\n    recomputeGridSize: _propTypes[\"default\"].func\n  }).isRequired,\n  \"rowIndex\": _propTypes[\"default\"].number\n}), _temp); // Used for DEV mode warning check\n\nexports[\"default\"] = CellMeasurer;\n(0, _defineProperty2[\"default\"])(CellMeasurer, \"__internalCellMeasurerFlag\", false);\n\nif (process.env.NODE_ENV !== 'production') {\n  CellMeasurer.__internalCellMeasurerFlag = true;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.DEFAULT_WIDTH = exports.DEFAULT_HEIGHT = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _types = require(\"./types\");\n\nvar DEFAULT_HEIGHT = 30;\nexports.DEFAULT_HEIGHT = DEFAULT_HEIGHT;\nvar DEFAULT_WIDTH = 100; // Enables more intelligent mapping of a given column and row index to an item ID.\n// This prevents a cell cache from being invalidated when its parent collection is modified.\n\nexports.DEFAULT_WIDTH = DEFAULT_WIDTH;\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCache =\n/*#__PURE__*/\nfunction () {\n  function CellMeasurerCache() {\n    var _this = this;\n\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    (0, _classCallCheck2[\"default\"])(this, CellMeasurerCache);\n    (0, _defineProperty2[\"default\"])(this, \"_cellHeightCache\", {});\n    (0, _defineProperty2[\"default\"])(this, \"_cellWidthCache\", {});\n    (0, _defineProperty2[\"default\"])(this, \"_columnWidthCache\", {});\n    (0, _defineProperty2[\"default\"])(this, \"_rowHeightCache\", {});\n    (0, _defineProperty2[\"default\"])(this, \"_defaultHeight\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_defaultWidth\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_minHeight\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_minWidth\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_keyMapper\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_hasFixedHeight\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_hasFixedWidth\", void 0);\n    (0, _defineProperty2[\"default\"])(this, \"_columnCount\", 0);\n    (0, _defineProperty2[\"default\"])(this, \"_rowCount\", 0);\n    (0, _defineProperty2[\"default\"])(this, \"columnWidth\", function (_ref) {\n      var index = _ref.index;\n\n      var key = _this._keyMapper(0, index);\n\n      return _this._columnWidthCache[key] !== undefined ? _this._columnWidthCache[key] : _this._defaultWidth;\n    });\n    (0, _defineProperty2[\"default\"])(this, \"rowHeight\", function (_ref2) {\n      var index = _ref2.index;\n\n      var key = _this._keyMapper(index, 0);\n\n      return _this._rowHeightCache[key] !== undefined ? _this._rowHeightCache[key] : _this._defaultHeight;\n    });\n    var defaultHeight = params.defaultHeight,\n        defaultWidth = params.defaultWidth,\n        fixedHeight = params.fixedHeight,\n        fixedWidth = params.fixedWidth,\n        keyMapper = params.keyMapper,\n        minHeight = params.minHeight,\n        minWidth = params.minWidth;\n    this._hasFixedHeight = fixedHeight === true;\n    this._hasFixedWidth = fixedWidth === true;\n    this._minHeight = minHeight || 0;\n    this._minWidth = minWidth || 0;\n    this._keyMapper = keyMapper || defaultKeyMapper;\n    this._defaultHeight = Math.max(this._minHeight, typeof defaultHeight === 'number' ? defaultHeight : DEFAULT_HEIGHT);\n    this._defaultWidth = Math.max(this._minWidth, typeof defaultWidth === 'number' ? defaultWidth : DEFAULT_WIDTH);\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (this._hasFixedHeight === false && this._hasFixedWidth === false) {\n        console.warn(\"CellMeasurerCache should only measure a cell's width or height. \" + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');\n      }\n\n      if (this._hasFixedHeight === false && this._defaultHeight === 0) {\n        console.warn('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n      }\n\n      if (this._hasFixedWidth === false && this._defaultWidth === 0) {\n        console.warn('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n      }\n    }\n  }\n\n  (0, _createClass2[\"default\"])(CellMeasurerCache, [{\n    key: \"clear\",\n    value: function clear(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var key = this._keyMapper(rowIndex, columnIndex);\n\n      delete this._cellHeightCache[key];\n      delete this._cellWidthCache[key];\n\n      this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n    }\n  }, {\n    key: \"clearAll\",\n    value: function clearAll() {\n      this._cellHeightCache = {};\n      this._cellWidthCache = {};\n      this._columnWidthCache = {};\n      this._rowHeightCache = {};\n      this._rowCount = 0;\n      this._columnCount = 0;\n    }\n  }, {\n    key: \"hasFixedHeight\",\n    value: function hasFixedHeight() {\n      return this._hasFixedHeight;\n    }\n  }, {\n    key: \"hasFixedWidth\",\n    value: function hasFixedWidth() {\n      return this._hasFixedWidth;\n    }\n  }, {\n    key: \"getHeight\",\n    value: function getHeight(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (this._hasFixedHeight) {\n        return this._defaultHeight;\n      } else {\n        var _key = this._keyMapper(rowIndex, columnIndex);\n\n        return this._cellHeightCache[_key] !== undefined ? Math.max(this._minHeight, this._cellHeightCache[_key]) : this._defaultHeight;\n      }\n    }\n  }, {\n    key: \"getWidth\",\n    value: function getWidth(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (this._hasFixedWidth) {\n        return this._defaultWidth;\n      } else {\n        var _key2 = this._keyMapper(rowIndex, columnIndex);\n\n        return this._cellWidthCache[_key2] !== undefined ? Math.max(this._minWidth, this._cellWidthCache[_key2]) : this._defaultWidth;\n      }\n    }\n  }, {\n    key: \"has\",\n    value: function has(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var key = this._keyMapper(rowIndex, columnIndex);\n\n      return this._cellHeightCache[key] !== undefined;\n    }\n  }, {\n    key: \"set\",\n    value: function set(rowIndex, columnIndex, width, height) {\n      var key = this._keyMapper(rowIndex, columnIndex);\n\n      if (columnIndex >= this._columnCount) {\n        this._columnCount = columnIndex + 1;\n      }\n\n      if (rowIndex >= this._rowCount) {\n        this._rowCount = rowIndex + 1;\n      } // Size is cached per cell so we don't have to re-measure if cells are re-ordered.\n\n\n      this._cellHeightCache[key] = height;\n      this._cellWidthCache[key] = width;\n\n      this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n    }\n  }, {\n    key: \"_updateCachedColumnAndRowSizes\",\n    value: function _updateCachedColumnAndRowSizes(rowIndex, columnIndex) {\n      // :columnWidth and :rowHeight are derived based on all cells in a column/row.\n      // Pre-cache these derived values for faster lookup later.\n      // Reads are expected to occur more frequently than writes in this case.\n      // Only update non-fixed dimensions though to avoid doing unnecessary work.\n      if (!this._hasFixedWidth) {\n        var columnWidth = 0;\n\n        for (var i = 0; i < this._rowCount; i++) {\n          columnWidth = Math.max(columnWidth, this.getWidth(i, columnIndex));\n        }\n\n        var columnKey = this._keyMapper(0, columnIndex);\n\n        this._columnWidthCache[columnKey] = columnWidth;\n      }\n\n      if (!this._hasFixedHeight) {\n        var rowHeight = 0;\n\n        for (var _i = 0; _i < this._columnCount; _i++) {\n          rowHeight = Math.max(rowHeight, this.getHeight(rowIndex, _i));\n        }\n\n        var rowKey = this._keyMapper(rowIndex, 0);\n\n        this._rowHeightCache[rowKey] = rowHeight;\n      }\n    }\n  }, {\n    key: \"defaultHeight\",\n    get: function get() {\n      return this._defaultHeight;\n    }\n  }, {\n    key: \"defaultWidth\",\n    get: function get() {\n      return this._defaultWidth;\n    }\n  }]);\n  return CellMeasurerCache;\n}();\n\nexports[\"default\"] = CellMeasurerCache;\n\nfunction defaultKeyMapper(rowIndex, columnIndex) {\n  return \"\".concat(rowIndex, \"-\").concat(columnIndex);\n}","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _taggedTemplateLiteral(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}\n\nmodule.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.flattenNames = undefined;\n\nvar _isString2 = require('lodash/isString');\n\nvar _isString3 = _interopRequireDefault(_isString2);\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _isPlainObject2 = require('lodash/isPlainObject');\n\nvar _isPlainObject3 = _interopRequireDefault(_isPlainObject2);\n\nvar _map2 = require('lodash/map');\n\nvar _map3 = _interopRequireDefault(_map2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar flattenNames = exports.flattenNames = function flattenNames() {\n  var things = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n  var names = [];\n\n  (0, _map3.default)(things, function (thing) {\n    if (Array.isArray(thing)) {\n      flattenNames(thing).map(function (name) {\n        return names.push(name);\n      });\n    } else if ((0, _isPlainObject3.default)(thing)) {\n      (0, _forOwn3.default)(thing, function (value, key) {\n        value === true && names.push(key);\n        names.push(key + '-' + value);\n      });\n    } else if ((0, _isString3.default)(thing)) {\n      names.push(thing);\n    }\n  });\n\n  return names;\n};\n\nexports.default = flattenNames;","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.mergeClasses = undefined;\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _cloneDeep2 = require('lodash/cloneDeep');\n\nvar _cloneDeep3 = _interopRequireDefault(_cloneDeep2);\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mergeClasses = exports.mergeClasses = function mergeClasses(classes) {\n  var activeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n  var styles = classes.default && (0, _cloneDeep3.default)(classes.default) || {};\n  activeNames.map(function (name) {\n    var toMerge = classes[name];\n    if (toMerge) {\n      (0, _forOwn3.default)(toMerge, function (value, key) {\n        if (!styles[key]) {\n          styles[key] = {};\n        }\n\n        styles[key] = _extends({}, styles[key], toMerge[key]);\n      });\n    }\n\n    return name;\n  });\n  return styles;\n};\n\nexports.default = mergeClasses;","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.autoprefix = undefined;\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transforms = {\n  borderRadius: function borderRadius(value) {\n    return {\n      msBorderRadius: value,\n      MozBorderRadius: value,\n      OBorderRadius: value,\n      WebkitBorderRadius: value,\n      borderRadius: value\n    };\n  },\n  boxShadow: function boxShadow(value) {\n    return {\n      msBoxShadow: value,\n      MozBoxShadow: value,\n      OBoxShadow: value,\n      WebkitBoxShadow: value,\n      boxShadow: value\n    };\n  },\n  userSelect: function userSelect(value) {\n    return {\n      WebkitTouchCallout: value,\n      KhtmlUserSelect: value,\n      MozUserSelect: value,\n      msUserSelect: value,\n      WebkitUserSelect: value,\n      userSelect: value\n    };\n  },\n\n  flex: function flex(value) {\n    return {\n      WebkitBoxFlex: value,\n      MozBoxFlex: value,\n      WebkitFlex: value,\n      msFlex: value,\n      flex: value\n    };\n  },\n  flexBasis: function flexBasis(value) {\n    return {\n      WebkitFlexBasis: value,\n      flexBasis: value\n    };\n  },\n  justifyContent: function justifyContent(value) {\n    return {\n      WebkitJustifyContent: value,\n      justifyContent: value\n    };\n  },\n\n  transition: function transition(value) {\n    return {\n      msTransition: value,\n      MozTransition: value,\n      OTransition: value,\n      WebkitTransition: value,\n      transition: value\n    };\n  },\n\n  transform: function transform(value) {\n    return {\n      msTransform: value,\n      MozTransform: value,\n      OTransform: value,\n      WebkitTransform: value,\n      transform: value\n    };\n  },\n  absolute: function absolute(value) {\n    var direction = value && value.split(' ');\n    return {\n      position: 'absolute',\n      top: direction && direction[0],\n      right: direction && direction[1],\n      bottom: direction && direction[2],\n      left: direction && direction[3]\n    };\n  },\n  extend: function extend(name, otherElementStyles) {\n    var otherStyle = otherElementStyles[name];\n    if (otherStyle) {\n      return otherStyle;\n    }\n    return {\n      'extend': name\n    };\n  }\n};\n\nvar autoprefix = exports.autoprefix = function autoprefix(elements) {\n  var prefixed = {};\n  (0, _forOwn3.default)(elements, function (styles, element) {\n    var expanded = {};\n    (0, _forOwn3.default)(styles, function (value, key) {\n      var transform = transforms[key];\n      if (transform) {\n        expanded = _extends({}, expanded, transform(value));\n      } else {\n        expanded[key] = value;\n      }\n    });\n    prefixed[element] = expanded;\n  });\n  return prefixed;\n};\n\nexports.default = autoprefix;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.hover = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar hover = exports.hover = function hover(Component) {\n  var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n  return function (_React$Component) {\n    _inherits(Hover, _React$Component);\n\n    function Hover() {\n      var _ref;\n\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Hover);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Hover.__proto__ || Object.getPrototypeOf(Hover)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hover: false }, _this.handleMouseOver = function () {\n        return _this.setState({ hover: true });\n      }, _this.handleMouseOut = function () {\n        return _this.setState({ hover: false });\n      }, _this.render = function () {\n        return _react2.default.createElement(\n          Span,\n          { onMouseOver: _this.handleMouseOver, onMouseOut: _this.handleMouseOut },\n          _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n        );\n      }, _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    return Hover;\n  }(_react2.default.Component);\n};\n\nexports.default = hover;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.active = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar active = exports.active = function active(Component) {\n  var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n  return function (_React$Component) {\n    _inherits(Active, _React$Component);\n\n    function Active() {\n      var _ref;\n\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Active);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Active.__proto__ || Object.getPrototypeOf(Active)).call.apply(_ref, [this].concat(args))), _this), _this.state = { active: false }, _this.handleMouseDown = function () {\n        return _this.setState({ active: true });\n      }, _this.handleMouseUp = function () {\n        return _this.setState({ active: false });\n      }, _this.render = function () {\n        return _react2.default.createElement(\n          Span,\n          { onMouseDown: _this.handleMouseDown, onMouseUp: _this.handleMouseUp },\n          _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n        );\n      }, _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    return Active;\n  }(_react2.default.Component);\n};\n\nexports.default = active;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar loopable = function loopable(i, length) {\n  var props = {};\n  var setProp = function setProp(name) {\n    var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    props[name] = value;\n  };\n\n  i === 0 && setProp('first-child');\n  i === length - 1 && setProp('last-child');\n  (i === 0 || i % 2 === 0) && setProp('even');\n  Math.abs(i % 2) === 1 && setProp('odd');\n  setProp('nth-child', i);\n\n  return props;\n};\n\nexports.default = loopable;","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var map = {\n\t\"./af.js\": [\n\t\t1181,\n\t\t3\n\t],\n\t\"./am.js\": [\n\t\t1182,\n\t\t4\n\t],\n\t\"./ar-dz.js\": [\n\t\t1183,\n\t\t5\n\t],\n\t\"./ar-iq.js\": [\n\t\t1184,\n\t\t6\n\t],\n\t\"./ar-kw.js\": [\n\t\t1185,\n\t\t7\n\t],\n\t\"./ar-ly.js\": [\n\t\t1186,\n\t\t8\n\t],\n\t\"./ar-ma.js\": [\n\t\t1187,\n\t\t9\n\t],\n\t\"./ar-sa.js\": [\n\t\t1188,\n\t\t10\n\t],\n\t\"./ar-tn.js\": [\n\t\t1189,\n\t\t11\n\t],\n\t\"./ar.js\": [\n\t\t1190,\n\t\t12\n\t],\n\t\"./az.js\": [\n\t\t1191,\n\t\t13\n\t],\n\t\"./be.js\": [\n\t\t1192,\n\t\t14\n\t],\n\t\"./bg.js\": [\n\t\t1193,\n\t\t15\n\t],\n\t\"./bi.js\": [\n\t\t1194,\n\t\t16\n\t],\n\t\"./bm.js\": [\n\t\t1195,\n\t\t17\n\t],\n\t\"./bn-bd.js\": [\n\t\t1196,\n\t\t18\n\t],\n\t\"./bn.js\": [\n\t\t1197,\n\t\t19\n\t],\n\t\"./bo.js\": [\n\t\t1198,\n\t\t20\n\t],\n\t\"./br.js\": [\n\t\t1199,\n\t\t21\n\t],\n\t\"./bs.js\": [\n\t\t1200,\n\t\t22\n\t],\n\t\"./ca.js\": [\n\t\t1201,\n\t\t23\n\t],\n\t\"./cs.js\": [\n\t\t1202,\n\t\t24\n\t],\n\t\"./cv.js\": [\n\t\t1203,\n\t\t25\n\t],\n\t\"./cy.js\": [\n\t\t1204,\n\t\t26\n\t],\n\t\"./da.js\": [\n\t\t1205,\n\t\t27\n\t],\n\t\"./de-at.js\": [\n\t\t1206,\n\t\t28\n\t],\n\t\"./de-ch.js\": [\n\t\t1207,\n\t\t29\n\t],\n\t\"./de.js\": [\n\t\t1208,\n\t\t30\n\t],\n\t\"./dv.js\": [\n\t\t1209,\n\t\t31\n\t],\n\t\"./el.js\": [\n\t\t1210,\n\t\t32\n\t],\n\t\"./en-au.js\": [\n\t\t1211,\n\t\t33\n\t],\n\t\"./en-ca.js\": [\n\t\t1212,\n\t\t34\n\t],\n\t\"./en-gb.js\": [\n\t\t1213,\n\t\t35\n\t],\n\t\"./en-ie.js\": [\n\t\t1214,\n\t\t36\n\t],\n\t\"./en-il.js\": [\n\t\t1215,\n\t\t37\n\t],\n\t\"./en-in.js\": [\n\t\t1216,\n\t\t38\n\t],\n\t\"./en-nz.js\": [\n\t\t1217,\n\t\t39\n\t],\n\t\"./en-sg.js\": [\n\t\t1218,\n\t\t40\n\t],\n\t\"./en-tt.js\": [\n\t\t1219,\n\t\t41\n\t],\n\t\"./en.js\": [\n\t\t1220,\n\t\t42\n\t],\n\t\"./eo.js\": [\n\t\t1221,\n\t\t43\n\t],\n\t\"./es-do.js\": [\n\t\t1222,\n\t\t44\n\t],\n\t\"./es-mx.js\": [\n\t\t1223,\n\t\t45\n\t],\n\t\"./es-pr.js\": [\n\t\t1224,\n\t\t46\n\t],\n\t\"./es-us.js\": [\n\t\t1225,\n\t\t47\n\t],\n\t\"./es.js\": [\n\t\t1226,\n\t\t48\n\t],\n\t\"./et.js\": [\n\t\t1227,\n\t\t49\n\t],\n\t\"./eu.js\": [\n\t\t1228,\n\t\t50\n\t],\n\t\"./fa.js\": [\n\t\t1229,\n\t\t51\n\t],\n\t\"./fi.js\": [\n\t\t1230,\n\t\t52\n\t],\n\t\"./fo.js\": [\n\t\t1231,\n\t\t53\n\t],\n\t\"./fr-ca.js\": [\n\t\t1232,\n\t\t54\n\t],\n\t\"./fr-ch.js\": [\n\t\t1233,\n\t\t55\n\t],\n\t\"./fr.js\": [\n\t\t1234,\n\t\t56\n\t],\n\t\"./fy.js\": [\n\t\t1235,\n\t\t57\n\t],\n\t\"./ga.js\": [\n\t\t1236,\n\t\t58\n\t],\n\t\"./gd.js\": [\n\t\t1237,\n\t\t59\n\t],\n\t\"./gl.js\": [\n\t\t1238,\n\t\t60\n\t],\n\t\"./gom-latn.js\": [\n\t\t1239,\n\t\t61\n\t],\n\t\"./gu.js\": [\n\t\t1240,\n\t\t62\n\t],\n\t\"./he.js\": [\n\t\t1241,\n\t\t63\n\t],\n\t\"./hi.js\": [\n\t\t1242,\n\t\t64\n\t],\n\t\"./hr.js\": [\n\t\t1243,\n\t\t65\n\t],\n\t\"./ht.js\": [\n\t\t1244,\n\t\t66\n\t],\n\t\"./hu.js\": [\n\t\t1245,\n\t\t67\n\t],\n\t\"./hy-am.js\": [\n\t\t1246,\n\t\t68\n\t],\n\t\"./id.js\": [\n\t\t1247,\n\t\t69\n\t],\n\t\"./is.js\": [\n\t\t1248,\n\t\t70\n\t],\n\t\"./it-ch.js\": [\n\t\t1249,\n\t\t71\n\t],\n\t\"./it.js\": [\n\t\t1250,\n\t\t72\n\t],\n\t\"./ja.js\": [\n\t\t1251,\n\t\t73\n\t],\n\t\"./jv.js\": [\n\t\t1252,\n\t\t74\n\t],\n\t\"./ka.js\": [\n\t\t1253,\n\t\t75\n\t],\n\t\"./kk.js\": [\n\t\t1254,\n\t\t76\n\t],\n\t\"./km.js\": [\n\t\t1255,\n\t\t77\n\t],\n\t\"./kn.js\": [\n\t\t1256,\n\t\t78\n\t],\n\t\"./ko.js\": [\n\t\t1257,\n\t\t79\n\t],\n\t\"./ku.js\": [\n\t\t1258,\n\t\t80\n\t],\n\t\"./ky.js\": [\n\t\t1259,\n\t\t81\n\t],\n\t\"./lb.js\": [\n\t\t1260,\n\t\t82\n\t],\n\t\"./lo.js\": [\n\t\t1261,\n\t\t83\n\t],\n\t\"./lt.js\": [\n\t\t1262,\n\t\t84\n\t],\n\t\"./lv.js\": [\n\t\t1263,\n\t\t85\n\t],\n\t\"./me.js\": [\n\t\t1264,\n\t\t86\n\t],\n\t\"./mi.js\": [\n\t\t1265,\n\t\t87\n\t],\n\t\"./mk.js\": [\n\t\t1266,\n\t\t88\n\t],\n\t\"./ml.js\": [\n\t\t1267,\n\t\t89\n\t],\n\t\"./mn.js\": [\n\t\t1268,\n\t\t90\n\t],\n\t\"./mr.js\": [\n\t\t1269,\n\t\t91\n\t],\n\t\"./ms-my.js\": [\n\t\t1270,\n\t\t92\n\t],\n\t\"./ms.js\": [\n\t\t1271,\n\t\t93\n\t],\n\t\"./mt.js\": [\n\t\t1272,\n\t\t94\n\t],\n\t\"./my.js\": [\n\t\t1273,\n\t\t95\n\t],\n\t\"./nb.js\": [\n\t\t1274,\n\t\t96\n\t],\n\t\"./ne.js\": [\n\t\t1275,\n\t\t97\n\t],\n\t\"./nl-be.js\": [\n\t\t1276,\n\t\t98\n\t],\n\t\"./nl.js\": [\n\t\t1277,\n\t\t99\n\t],\n\t\"./nn.js\": [\n\t\t1278,\n\t\t100\n\t],\n\t\"./oc-lnc.js\": [\n\t\t1279,\n\t\t101\n\t],\n\t\"./pa-in.js\": [\n\t\t1280,\n\t\t102\n\t],\n\t\"./pl.js\": [\n\t\t1281,\n\t\t103\n\t],\n\t\"./pt-br.js\": [\n\t\t1282,\n\t\t104\n\t],\n\t\"./pt.js\": [\n\t\t1283,\n\t\t105\n\t],\n\t\"./rn.js\": [\n\t\t1284,\n\t\t106\n\t],\n\t\"./ro.js\": [\n\t\t1285,\n\t\t107\n\t],\n\t\"./ru.js\": [\n\t\t1286,\n\t\t108\n\t],\n\t\"./rw.js\": [\n\t\t1287,\n\t\t109\n\t],\n\t\"./sd.js\": [\n\t\t1288,\n\t\t110\n\t],\n\t\"./se.js\": [\n\t\t1289,\n\t\t111\n\t],\n\t\"./si.js\": [\n\t\t1290,\n\t\t112\n\t],\n\t\"./sk.js\": [\n\t\t1291,\n\t\t113\n\t],\n\t\"./sl.js\": [\n\t\t1292,\n\t\t114\n\t],\n\t\"./sq.js\": [\n\t\t1293,\n\t\t115\n\t],\n\t\"./sr-cyrl.js\": [\n\t\t1294,\n\t\t116\n\t],\n\t\"./sr.js\": [\n\t\t1295,\n\t\t117\n\t],\n\t\"./ss.js\": [\n\t\t1296,\n\t\t118\n\t],\n\t\"./sv-fi.js\": [\n\t\t1297,\n\t\t119\n\t],\n\t\"./sv.js\": [\n\t\t1298,\n\t\t120\n\t],\n\t\"./sw.js\": [\n\t\t1299,\n\t\t121\n\t],\n\t\"./ta.js\": [\n\t\t1300,\n\t\t122\n\t],\n\t\"./te.js\": [\n\t\t1301,\n\t\t123\n\t],\n\t\"./tet.js\": [\n\t\t1302,\n\t\t124\n\t],\n\t\"./tg.js\": [\n\t\t1303,\n\t\t125\n\t],\n\t\"./th.js\": [\n\t\t1304,\n\t\t126\n\t],\n\t\"./tk.js\": [\n\t\t1305,\n\t\t127\n\t],\n\t\"./tl-ph.js\": [\n\t\t1306,\n\t\t128\n\t],\n\t\"./tlh.js\": [\n\t\t1307,\n\t\t129\n\t],\n\t\"./tr.js\": [\n\t\t1308,\n\t\t130\n\t],\n\t\"./tzl.js\": [\n\t\t1309,\n\t\t131\n\t],\n\t\"./tzm-latn.js\": [\n\t\t1310,\n\t\t132\n\t],\n\t\"./tzm.js\": [\n\t\t1311,\n\t\t133\n\t],\n\t\"./ug-cn.js\": [\n\t\t1312,\n\t\t134\n\t],\n\t\"./uk.js\": [\n\t\t1313,\n\t\t135\n\t],\n\t\"./ur.js\": [\n\t\t1314,\n\t\t136\n\t],\n\t\"./uz-latn.js\": [\n\t\t1315,\n\t\t137\n\t],\n\t\"./uz.js\": [\n\t\t1316,\n\t\t138\n\t],\n\t\"./vi.js\": [\n\t\t1317,\n\t\t139\n\t],\n\t\"./x-pseudo.js\": [\n\t\t1318,\n\t\t140\n\t],\n\t\"./yo.js\": [\n\t\t1319,\n\t\t141\n\t],\n\t\"./zh-cn.js\": [\n\t\t1320,\n\t\t142\n\t],\n\t\"./zh-hk.js\": [\n\t\t1321,\n\t\t143\n\t],\n\t\"./zh-tw.js\": [\n\t\t1322,\n\t\t144\n\t],\n\t\"./zh.js\": [\n\t\t1323,\n\t\t145\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1150;\nmodule.exports = webpackAsyncContext;","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob:\n      'FileReader' in self &&\n      'Blob' in self &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':');\n      var key = parts.shift().trim();\n      if (key) {\n        var value = parts.join(':').trim();\n        headers.append(key, value);\n      }\n    });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = 'statusText' in options ? options.statusText : 'OK';\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = self.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        resolve(new Response(body, options));\n      };\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.onabort = function() {\n        reject(new exports.DOMException('Aborted', 'AbortError'));\n      };\n\n      xhr.open(request.method, request.url, true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob';\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value);\n      });\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!self.fetch) {\n    self.fetch = fetch;\n    self.Headers = Headers;\n    self.Request = Request;\n    self.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = createWebStorage;\n\nvar _getStorage = _interopRequireDefault(require(\"./getStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createWebStorage(type) {\n  var storage = (0, _getStorage.default)(type);\n  return {\n    getItem: function getItem(key) {\n      return new Promise(function (resolve, reject) {\n        resolve(storage.getItem(key));\n      });\n    },\n    setItem: function setItem(key, item) {\n      return new Promise(function (resolve, reject) {\n        resolve(storage.setItem(key, item));\n      });\n    },\n    removeItem: function removeItem(key) {\n      return new Promise(function (resolve, reject) {\n        resolve(storage.removeItem(key));\n      });\n    }\n  };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getStorage;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction noop() {}\n\nvar noopStorage = {\n  getItem: noop,\n  setItem: noop,\n  removeItem: noop\n};\n\nfunction hasStorage(storageType) {\n  if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) !== 'object' || !(storageType in self)) {\n    return false;\n  }\n\n  try {\n    var storage = self[storageType];\n    var testKey = \"redux-persist \".concat(storageType, \" test\");\n    storage.setItem(testKey, 'test');\n    storage.getItem(testKey);\n    storage.removeItem(testKey);\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') console.warn(\"redux-persist \".concat(storageType, \" test failed, persistence will be disabled.\"));\n    return false;\n  }\n\n  return true;\n}\n\nfunction getStorage(type) {\n  var storageType = \"\".concat(type, \"Storage\");\n  if (hasStorage(storageType)) return self[storageType];else {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error(\"redux-persist failed to create sync storage. falling back to noop storage.\");\n    }\n\n    return noopStorage;\n  }\n}","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _sourceMap = _interopRequireDefault(require(\"source-map\"));\n\nvar _path = _interopRequireDefault(require(\"path\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\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 MapGenerator = /*#__PURE__*/function () {\n  function MapGenerator(stringify, root, opts) {\n    this.stringify = stringify;\n    this.mapOpts = opts.map || {};\n    this.root = root;\n    this.opts = opts;\n  }\n\n  var _proto = MapGenerator.prototype;\n\n  _proto.isMap = function isMap() {\n    if (typeof this.opts.map !== 'undefined') {\n      return !!this.opts.map;\n    }\n\n    return this.previous().length > 0;\n  };\n\n  _proto.previous = function previous() {\n    var _this = this;\n\n    if (!this.previousMaps) {\n      this.previousMaps = [];\n      this.root.walk(function (node) {\n        if (node.source && node.source.input.map) {\n          var map = node.source.input.map;\n\n          if (_this.previousMaps.indexOf(map) === -1) {\n            _this.previousMaps.push(map);\n          }\n        }\n      });\n    }\n\n    return this.previousMaps;\n  };\n\n  _proto.isInline = function isInline() {\n    if (typeof this.mapOpts.inline !== 'undefined') {\n      return this.mapOpts.inline;\n    }\n\n    var annotation = this.mapOpts.annotation;\n\n    if (typeof annotation !== 'undefined' && annotation !== true) {\n      return false;\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(function (i) {\n        return i.inline;\n      });\n    }\n\n    return true;\n  };\n\n  _proto.isSourcesContent = function isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n      return this.mapOpts.sourcesContent;\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(function (i) {\n        return i.withContent();\n      });\n    }\n\n    return true;\n  };\n\n  _proto.clearAnnotation = function clearAnnotation() {\n    if (this.mapOpts.annotation === false) return;\n    var node;\n\n    for (var i = this.root.nodes.length - 1; i >= 0; i--) {\n      node = this.root.nodes[i];\n      if (node.type !== 'comment') continue;\n\n      if (node.text.indexOf('# sourceMappingURL=') === 0) {\n        this.root.removeChild(i);\n      }\n    }\n  };\n\n  _proto.setSourcesContent = function setSourcesContent() {\n    var _this2 = this;\n\n    var already = {};\n    this.root.walk(function (node) {\n      if (node.source) {\n        var from = node.source.input.from;\n\n        if (from && !already[from]) {\n          already[from] = true;\n\n          var relative = _this2.relative(from);\n\n          _this2.map.setSourceContent(relative, node.source.input.css);\n        }\n      }\n    });\n  };\n\n  _proto.applyPrevMaps = function applyPrevMaps() {\n    for (var _iterator = _createForOfIteratorHelperLoose(this.previous()), _step; !(_step = _iterator()).done;) {\n      var prev = _step.value;\n      var from = this.relative(prev.file);\n\n      var root = prev.root || _path.default.dirname(prev.file);\n\n      var map = void 0;\n\n      if (this.mapOpts.sourcesContent === false) {\n        map = new _sourceMap.default.SourceMapConsumer(prev.text);\n\n        if (map.sourcesContent) {\n          map.sourcesContent = map.sourcesContent.map(function () {\n            return null;\n          });\n        }\n      } else {\n        map = prev.consumer();\n      }\n\n      this.map.applySourceMap(map, from, this.relative(root));\n    }\n  };\n\n  _proto.isAnnotation = function isAnnotation() {\n    if (this.isInline()) {\n      return true;\n    }\n\n    if (typeof this.mapOpts.annotation !== 'undefined') {\n      return this.mapOpts.annotation;\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(function (i) {\n        return i.annotation;\n      });\n    }\n\n    return true;\n  };\n\n  _proto.toBase64 = function toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString('base64');\n    }\n\n    return window.btoa(unescape(encodeURIComponent(str)));\n  };\n\n  _proto.addAnnotation = function addAnnotation() {\n    var content;\n\n    if (this.isInline()) {\n      content = 'data:application/json;base64,' + this.toBase64(this.map.toString());\n    } else if (typeof this.mapOpts.annotation === 'string') {\n      content = this.mapOpts.annotation;\n    } else {\n      content = this.outputFile() + '.map';\n    }\n\n    var eol = '\\n';\n    if (this.css.indexOf('\\r\\n') !== -1) eol = '\\r\\n';\n    this.css += eol + '/*# sourceMappingURL=' + content + ' */';\n  };\n\n  _proto.outputFile = function outputFile() {\n    if (this.opts.to) {\n      return this.relative(this.opts.to);\n    }\n\n    if (this.opts.from) {\n      return this.relative(this.opts.from);\n    }\n\n    return 'to.css';\n  };\n\n  _proto.generateMap = function generateMap() {\n    this.generateString();\n    if (this.isSourcesContent()) this.setSourcesContent();\n    if (this.previous().length > 0) this.applyPrevMaps();\n    if (this.isAnnotation()) this.addAnnotation();\n\n    if (this.isInline()) {\n      return [this.css];\n    }\n\n    return [this.css, this.map];\n  };\n\n  _proto.relative = function relative(file) {\n    if (file.indexOf('<') === 0) return file;\n    if (/^\\w+:\\/\\//.test(file)) return file;\n    var from = this.opts.to ? _path.default.dirname(this.opts.to) : '.';\n\n    if (typeof this.mapOpts.annotation === 'string') {\n      from = _path.default.dirname(_path.default.resolve(from, this.mapOpts.annotation));\n    }\n\n    file = _path.default.relative(from, file);\n\n    if (_path.default.sep === '\\\\') {\n      return file.replace(/\\\\/g, '/');\n    }\n\n    return file;\n  };\n\n  _proto.sourcePath = function sourcePath(node) {\n    if (this.mapOpts.from) {\n      return this.mapOpts.from;\n    }\n\n    return this.relative(node.source.input.from);\n  };\n\n  _proto.generateString = function generateString() {\n    var _this3 = this;\n\n    this.css = '';\n    this.map = new _sourceMap.default.SourceMapGenerator({\n      file: this.outputFile()\n    });\n    var line = 1;\n    var column = 1;\n    var lines, last;\n    this.stringify(this.root, function (str, node, type) {\n      _this3.css += str;\n\n      if (node && type !== 'end') {\n        if (node.source && node.source.start) {\n          _this3.map.addMapping({\n            source: _this3.sourcePath(node),\n            generated: {\n              line: line,\n              column: column - 1\n            },\n            original: {\n              line: node.source.start.line,\n              column: node.source.start.column - 1\n            }\n          });\n        } else {\n          _this3.map.addMapping({\n            source: '<no source>',\n            original: {\n              line: 1,\n              column: 0\n            },\n            generated: {\n              line: line,\n              column: column - 1\n            }\n          });\n        }\n      }\n\n      lines = str.match(/\\n/g);\n\n      if (lines) {\n        line += lines.length;\n        last = str.lastIndexOf('\\n');\n        column = str.length - last;\n      } else {\n        column += str.length;\n      }\n\n      if (node && type !== 'start') {\n        var p = node.parent || {\n          raws: {}\n        };\n\n        if (node.type !== 'decl' || node !== p.last || p.raws.semicolon) {\n          if (node.source && node.source.end) {\n            _this3.map.addMapping({\n              source: _this3.sourcePath(node),\n              generated: {\n                line: line,\n                column: column - 2\n              },\n              original: {\n                line: node.source.end.line,\n                column: node.source.end.column - 1\n              }\n            });\n          } else {\n            _this3.map.addMapping({\n              source: '<no source>',\n              original: {\n                line: 1,\n                column: 0\n              },\n              generated: {\n                line: line,\n                column: column - 1\n              }\n            });\n          }\n        }\n      }\n    });\n  };\n\n  _proto.generate = function generate() {\n    this.clearAnnotation();\n\n    if (this.isMap()) {\n      return this.generateMap();\n    }\n\n    var result = '';\n    this.stringify(this.root, function (i) {\n      result += i;\n    });\n    return [result];\n  };\n\n  return MapGenerator;\n}();\n\nvar _default = MapGenerator;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1hcC1nZW5lcmF0b3IuZXM2Il0sIm5hbWVzIjpbIk1hcEdlbmVyYXRvciIsInN0cmluZ2lmeSIsInJvb3QiLCJvcHRzIiwibWFwT3B0cyIsIm1hcCIsImlzTWFwIiwicHJldmlvdXMiLCJsZW5ndGgiLCJwcmV2aW91c01hcHMiLCJ3YWxrIiwibm9kZSIsInNvdXJjZSIsImlucHV0IiwiaW5kZXhPZiIsInB1c2giLCJpc0lubGluZSIsImlubGluZSIsImFubm90YXRpb24iLCJzb21lIiwiaSIsImlzU291cmNlc0NvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsIndpdGhDb250ZW50IiwiY2xlYXJBbm5vdGF0aW9uIiwibm9kZXMiLCJ0eXBlIiwidGV4dCIsInJlbW92ZUNoaWxkIiwic2V0U291cmNlc0NvbnRlbnQiLCJhbHJlYWR5IiwiZnJvbSIsInJlbGF0aXZlIiwic2V0U291cmNlQ29udGVudCIsImNzcyIsImFwcGx5UHJldk1hcHMiLCJwcmV2IiwiZmlsZSIsInBhdGgiLCJkaXJuYW1lIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwiY29uc3VtZXIiLCJhcHBseVNvdXJjZU1hcCIsImlzQW5ub3RhdGlvbiIsInRvQmFzZTY0Iiwic3RyIiwiQnVmZmVyIiwidG9TdHJpbmciLCJ3aW5kb3ciLCJidG9hIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJhZGRBbm5vdGF0aW9uIiwiY29udGVudCIsIm91dHB1dEZpbGUiLCJlb2wiLCJ0byIsImdlbmVyYXRlTWFwIiwiZ2VuZXJhdGVTdHJpbmciLCJ0ZXN0IiwicmVzb2x2ZSIsInNlcCIsInJlcGxhY2UiLCJzb3VyY2VQYXRoIiwiU291cmNlTWFwR2VuZXJhdG9yIiwibGluZSIsImNvbHVtbiIsImxpbmVzIiwibGFzdCIsInN0YXJ0IiwiYWRkTWFwcGluZyIsImdlbmVyYXRlZCIsIm9yaWdpbmFsIiwibWF0Y2giLCJsYXN0SW5kZXhPZiIsInAiLCJwYXJlbnQiLCJyYXdzIiwic2VtaWNvbG9uIiwiZW5kIiwiZ2VuZXJhdGUiLCJyZXN1bHQiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7Ozs7Ozs7Ozs7SUFFTUEsWTtBQUNKLHdCQUFhQyxTQUFiLEVBQXdCQyxJQUF4QixFQUE4QkMsSUFBOUIsRUFBb0M7QUFDbEMsU0FBS0YsU0FBTCxHQUFpQkEsU0FBakI7QUFDQSxTQUFLRyxPQUFMLEdBQWVELElBQUksQ0FBQ0UsR0FBTCxJQUFZLEVBQTNCO0FBQ0EsU0FBS0gsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0Q7Ozs7U0FFREcsSyxHQUFBLGlCQUFTO0FBQ1AsUUFBSSxPQUFPLEtBQUtILElBQUwsQ0FBVUUsR0FBakIsS0FBeUIsV0FBN0IsRUFBMEM7QUFDeEMsYUFBTyxDQUFDLENBQUMsS0FBS0YsSUFBTCxDQUFVRSxHQUFuQjtBQUNEOztBQUNELFdBQU8sS0FBS0UsUUFBTCxHQUFnQkMsTUFBaEIsR0FBeUIsQ0FBaEM7QUFDRCxHOztTQUVERCxRLEdBQUEsb0JBQVk7QUFBQTs7QUFDVixRQUFJLENBQUMsS0FBS0UsWUFBVixFQUF3QjtBQUN0QixXQUFLQSxZQUFMLEdBQW9CLEVBQXBCO0FBQ0EsV0FBS1AsSUFBTCxDQUFVUSxJQUFWLENBQWUsVUFBQUMsSUFBSSxFQUFJO0FBQ3JCLFlBQUlBLElBQUksQ0FBQ0MsTUFBTCxJQUFlRCxJQUFJLENBQUNDLE1BQUwsQ0FBWUMsS0FBWixDQUFrQlIsR0FBckMsRUFBMEM7QUFDeEMsY0FBSUEsR0FBRyxHQUFHTSxJQUFJLENBQUNDLE1BQUwsQ0FBWUMsS0FBWixDQUFrQlIsR0FBNUI7O0FBQ0EsY0FBSSxLQUFJLENBQUNJLFlBQUwsQ0FBa0JLLE9BQWxCLENBQTBCVCxHQUExQixNQUFtQyxDQUFDLENBQXhDLEVBQTJDO0FBQ3pDLFlBQUEsS0FBSSxDQUFDSSxZQUFMLENBQWtCTSxJQUFsQixDQUF1QlYsR0FBdkI7QUFDRDtBQUNGO0FBQ0YsT0FQRDtBQVFEOztBQUVELFdBQU8sS0FBS0ksWUFBWjtBQUNELEc7O1NBRURPLFEsR0FBQSxvQkFBWTtBQUNWLFFBQUksT0FBTyxLQUFLWixPQUFMLENBQWFhLE1BQXBCLEtBQStCLFdBQW5DLEVBQWdEO0FBQzlDLGFBQU8sS0FBS2IsT0FBTCxDQUFhYSxNQUFwQjtBQUNEOztBQUVELFFBQUlDLFVBQVUsR0FBRyxLQUFLZCxPQUFMLENBQWFjLFVBQTlCOztBQUNBLFFBQUksT0FBT0EsVUFBUCxLQUFzQixXQUF0QixJQUFxQ0EsVUFBVSxLQUFLLElBQXhELEVBQThEO0FBQzVELGFBQU8sS0FBUDtBQUNEOztBQUVELFFBQUksS0FBS1gsUUFBTCxHQUFnQkMsTUFBcEIsRUFBNEI7QUFDMUIsYUFBTyxLQUFLRCxRQUFMLEdBQWdCWSxJQUFoQixDQUFxQixVQUFBQyxDQUFDO0FBQUEsZUFBSUEsQ0FBQyxDQUFDSCxNQUFOO0FBQUEsT0FBdEIsQ0FBUDtBQUNEOztBQUNELFdBQU8sSUFBUDtBQUNELEc7O1NBRURJLGdCLEdBQUEsNEJBQW9CO0FBQ2xCLFFBQUksT0FBTyxLQUFLakIsT0FBTCxDQUFha0IsY0FBcEIsS0FBdUMsV0FBM0MsRUFBd0Q7QUFDdEQsYUFBTyxLQUFLbEIsT0FBTCxDQUFha0IsY0FBcEI7QUFDRDs7QUFDRCxRQUFJLEtBQUtmLFFBQUwsR0FBZ0JDLE1BQXBCLEVBQTRCO0FBQzFCLGFBQU8sS0FBS0QsUUFBTCxHQUFnQlksSUFBaEIsQ0FBcUIsVUFBQUMsQ0FBQztBQUFBLGVBQUlBLENBQUMsQ0FBQ0csV0FBRixFQUFKO0FBQUEsT0FBdEIsQ0FBUDtBQUNEOztBQUNELFdBQU8sSUFBUDtBQUNELEc7O1NBRURDLGUsR0FBQSwyQkFBbUI7QUFDakIsUUFBSSxLQUFLcEIsT0FBTCxDQUFhYyxVQUFiLEtBQTRCLEtBQWhDLEVBQXVDO0FBRXZDLFFBQUlQLElBQUo7O0FBQ0EsU0FBSyxJQUFJUyxDQUFDLEdBQUcsS0FBS2xCLElBQUwsQ0FBVXVCLEtBQVYsQ0FBZ0JqQixNQUFoQixHQUF5QixDQUF0QyxFQUF5Q1ksQ0FBQyxJQUFJLENBQTlDLEVBQWlEQSxDQUFDLEVBQWxELEVBQXNEO0FBQ3BEVCxNQUFBQSxJQUFJLEdBQUcsS0FBS1QsSUFBTCxDQUFVdUIsS0FBVixDQUFnQkwsQ0FBaEIsQ0FBUDtBQUNBLFVBQUlULElBQUksQ0FBQ2UsSUFBTCxLQUFjLFNBQWxCLEVBQTZCOztBQUM3QixVQUFJZixJQUFJLENBQUNnQixJQUFMLENBQVViLE9BQVYsQ0FBa0IscUJBQWxCLE1BQTZDLENBQWpELEVBQW9EO0FBQ2xELGFBQUtaLElBQUwsQ0FBVTBCLFdBQVYsQ0FBc0JSLENBQXRCO0FBQ0Q7QUFDRjtBQUNGLEc7O1NBRURTLGlCLEdBQUEsNkJBQXFCO0FBQUE7O0FBQ25CLFFBQUlDLE9BQU8sR0FBRyxFQUFkO0FBQ0EsU0FBSzVCLElBQUwsQ0FBVVEsSUFBVixDQUFlLFVBQUFDLElBQUksRUFBSTtBQUNyQixVQUFJQSxJQUFJLENBQUNDLE1BQVQsRUFBaUI7QUFDZixZQUFJbUIsSUFBSSxHQUFHcEIsSUFBSSxDQUFDQyxNQUFMLENBQVlDLEtBQVosQ0FBa0JrQixJQUE3Qjs7QUFDQSxZQUFJQSxJQUFJLElBQUksQ0FBQ0QsT0FBTyxDQUFDQyxJQUFELENBQXBCLEVBQTRCO0FBQzFCRCxVQUFBQSxPQUFPLENBQUNDLElBQUQsQ0FBUCxHQUFnQixJQUFoQjs7QUFDQSxjQUFJQyxRQUFRLEdBQUcsTUFBSSxDQUFDQSxRQUFMLENBQWNELElBQWQsQ0FBZjs7QUFDQSxVQUFBLE1BQUksQ0FBQzFCLEdBQUwsQ0FBUzRCLGdCQUFULENBQTBCRCxRQUExQixFQUFvQ3JCLElBQUksQ0FBQ0MsTUFBTCxDQUFZQyxLQUFaLENBQWtCcUIsR0FBdEQ7QUFDRDtBQUNGO0FBQ0YsS0FURDtBQVVELEc7O1NBRURDLGEsR0FBQSx5QkFBaUI7QUFDZix5REFBaUIsS0FBSzVCLFFBQUwsRUFBakIsd0NBQWtDO0FBQUEsVUFBekI2QixJQUF5QjtBQUNoQyxVQUFJTCxJQUFJLEdBQUcsS0FBS0MsUUFBTCxDQUFjSSxJQUFJLENBQUNDLElBQW5CLENBQVg7O0FBQ0EsVUFBSW5DLElBQUksR0FBR2tDLElBQUksQ0FBQ2xDLElBQUwsSUFBYW9DLGNBQUtDLE9BQUwsQ0FBYUgsSUFBSSxDQUFDQyxJQUFsQixDQUF4Qjs7QUFDQSxVQUFJaEMsR0FBRyxTQUFQOztBQUVBLFVBQUksS0FBS0QsT0FBTCxDQUFha0IsY0FBYixLQUFnQyxLQUFwQyxFQUEyQztBQUN6Q2pCLFFBQUFBLEdBQUcsR0FBRyxJQUFJbUMsbUJBQVFDLGlCQUFaLENBQThCTCxJQUFJLENBQUNULElBQW5DLENBQU47O0FBQ0EsWUFBSXRCLEdBQUcsQ0FBQ2lCLGNBQVIsRUFBd0I7QUFDdEJqQixVQUFBQSxHQUFHLENBQUNpQixjQUFKLEdBQXFCakIsR0FBRyxDQUFDaUIsY0FBSixDQUFtQmpCLEdBQW5CLENBQXVCO0FBQUEsbUJBQU0sSUFBTjtBQUFBLFdBQXZCLENBQXJCO0FBQ0Q7QUFDRixPQUxELE1BS087QUFDTEEsUUFBQUEsR0FBRyxHQUFHK0IsSUFBSSxDQUFDTSxRQUFMLEVBQU47QUFDRDs7QUFFRCxXQUFLckMsR0FBTCxDQUFTc0MsY0FBVCxDQUF3QnRDLEdBQXhCLEVBQTZCMEIsSUFBN0IsRUFBbUMsS0FBS0MsUUFBTCxDQUFjOUIsSUFBZCxDQUFuQztBQUNEO0FBQ0YsRzs7U0FFRDBDLFksR0FBQSx3QkFBZ0I7QUFDZCxRQUFJLEtBQUs1QixRQUFMLEVBQUosRUFBcUI7QUFDbkIsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsUUFBSSxPQUFPLEtBQUtaLE9BQUwsQ0FBYWMsVUFBcEIsS0FBbUMsV0FBdkMsRUFBb0Q7QUFDbEQsYUFBTyxLQUFLZCxPQUFMLENBQWFjLFVBQXBCO0FBQ0Q7O0FBQ0QsUUFBSSxLQUFLWCxRQUFMLEdBQWdCQyxNQUFwQixFQUE0QjtBQUMxQixhQUFPLEtBQUtELFFBQUwsR0FBZ0JZLElBQWhCLENBQXFCLFVBQUFDLENBQUM7QUFBQSxlQUFJQSxDQUFDLENBQUNGLFVBQU47QUFBQSxPQUF0QixDQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxJQUFQO0FBQ0QsRzs7U0FFRDJCLFEsR0FBQSxrQkFBVUMsR0FBVixFQUFlO0FBQ2IsUUFBSUMsTUFBSixFQUFZO0FBQ1YsYUFBT0EsTUFBTSxDQUFDaEIsSUFBUCxDQUFZZSxHQUFaLEVBQWlCRSxRQUFqQixDQUEwQixRQUExQixDQUFQO0FBQ0Q7O0FBQ0QsV0FBT0MsTUFBTSxDQUFDQyxJQUFQLENBQVlDLFFBQVEsQ0FBQ0Msa0JBQWtCLENBQUNOLEdBQUQsQ0FBbkIsQ0FBcEIsQ0FBUDtBQUNELEc7O1NBRURPLGEsR0FBQSx5QkFBaUI7QUFDZixRQUFJQyxPQUFKOztBQUVBLFFBQUksS0FBS3RDLFFBQUwsRUFBSixFQUFxQjtBQUNuQnNDLE1BQUFBLE9BQU8sR0FBRyxrQ0FDQSxLQUFLVCxRQUFMLENBQWMsS0FBS3hDLEdBQUwsQ0FBUzJDLFFBQVQsRUFBZCxDQURWO0FBRUQsS0FIRCxNQUdPLElBQUksT0FBTyxLQUFLNUMsT0FBTCxDQUFhYyxVQUFwQixLQUFtQyxRQUF2QyxFQUFpRDtBQUN0RG9DLE1BQUFBLE9BQU8sR0FBRyxLQUFLbEQsT0FBTCxDQUFhYyxVQUF2QjtBQUNELEtBRk0sTUFFQTtBQUNMb0MsTUFBQUEsT0FBTyxHQUFHLEtBQUtDLFVBQUwsS0FBb0IsTUFBOUI7QUFDRDs7QUFFRCxRQUFJQyxHQUFHLEdBQUcsSUFBVjtBQUNBLFFBQUksS0FBS3RCLEdBQUwsQ0FBU3BCLE9BQVQsQ0FBaUIsTUFBakIsTUFBNkIsQ0FBQyxDQUFsQyxFQUFxQzBDLEdBQUcsR0FBRyxNQUFOO0FBRXJDLFNBQUt0QixHQUFMLElBQVlzQixHQUFHLEdBQUcsdUJBQU4sR0FBZ0NGLE9BQWhDLEdBQTBDLEtBQXREO0FBQ0QsRzs7U0FFREMsVSxHQUFBLHNCQUFjO0FBQ1osUUFBSSxLQUFLcEQsSUFBTCxDQUFVc0QsRUFBZCxFQUFrQjtBQUNoQixhQUFPLEtBQUt6QixRQUFMLENBQWMsS0FBSzdCLElBQUwsQ0FBVXNELEVBQXhCLENBQVA7QUFDRDs7QUFDRCxRQUFJLEtBQUt0RCxJQUFMLENBQVU0QixJQUFkLEVBQW9CO0FBQ2xCLGFBQU8sS0FBS0MsUUFBTCxDQUFjLEtBQUs3QixJQUFMLENBQVU0QixJQUF4QixDQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxRQUFQO0FBQ0QsRzs7U0FFRDJCLFcsR0FBQSx1QkFBZTtBQUNiLFNBQUtDLGNBQUw7QUFDQSxRQUFJLEtBQUt0QyxnQkFBTCxFQUFKLEVBQTZCLEtBQUtRLGlCQUFMO0FBQzdCLFFBQUksS0FBS3RCLFFBQUwsR0FBZ0JDLE1BQWhCLEdBQXlCLENBQTdCLEVBQWdDLEtBQUsyQixhQUFMO0FBQ2hDLFFBQUksS0FBS1MsWUFBTCxFQUFKLEVBQXlCLEtBQUtTLGFBQUw7O0FBRXpCLFFBQUksS0FBS3JDLFFBQUwsRUFBSixFQUFxQjtBQUNuQixhQUFPLENBQUMsS0FBS2tCLEdBQU4sQ0FBUDtBQUNEOztBQUNELFdBQU8sQ0FBQyxLQUFLQSxHQUFOLEVBQVcsS0FBSzdCLEdBQWhCLENBQVA7QUFDRCxHOztTQUVEMkIsUSxHQUFBLGtCQUFVSyxJQUFWLEVBQWdCO0FBQ2QsUUFBSUEsSUFBSSxDQUFDdkIsT0FBTCxDQUFhLEdBQWIsTUFBc0IsQ0FBMUIsRUFBNkIsT0FBT3VCLElBQVA7QUFDN0IsUUFBSSxZQUFZdUIsSUFBWixDQUFpQnZCLElBQWpCLENBQUosRUFBNEIsT0FBT0EsSUFBUDtBQUU1QixRQUFJTixJQUFJLEdBQUcsS0FBSzVCLElBQUwsQ0FBVXNELEVBQVYsR0FBZW5CLGNBQUtDLE9BQUwsQ0FBYSxLQUFLcEMsSUFBTCxDQUFVc0QsRUFBdkIsQ0FBZixHQUE0QyxHQUF2RDs7QUFFQSxRQUFJLE9BQU8sS0FBS3JELE9BQUwsQ0FBYWMsVUFBcEIsS0FBbUMsUUFBdkMsRUFBaUQ7QUFDL0NhLE1BQUFBLElBQUksR0FBR08sY0FBS0MsT0FBTCxDQUFhRCxjQUFLdUIsT0FBTCxDQUFhOUIsSUFBYixFQUFtQixLQUFLM0IsT0FBTCxDQUFhYyxVQUFoQyxDQUFiLENBQVA7QUFDRDs7QUFFRG1CLElBQUFBLElBQUksR0FBR0MsY0FBS04sUUFBTCxDQUFjRCxJQUFkLEVBQW9CTSxJQUFwQixDQUFQOztBQUNBLFFBQUlDLGNBQUt3QixHQUFMLEtBQWEsSUFBakIsRUFBdUI7QUFDckIsYUFBT3pCLElBQUksQ0FBQzBCLE9BQUwsQ0FBYSxLQUFiLEVBQW9CLEdBQXBCLENBQVA7QUFDRDs7QUFDRCxXQUFPMUIsSUFBUDtBQUNELEc7O1NBRUQyQixVLEdBQUEsb0JBQVlyRCxJQUFaLEVBQWtCO0FBQ2hCLFFBQUksS0FBS1AsT0FBTCxDQUFhMkIsSUFBakIsRUFBdUI7QUFDckIsYUFBTyxLQUFLM0IsT0FBTCxDQUFhMkIsSUFBcEI7QUFDRDs7QUFDRCxXQUFPLEtBQUtDLFFBQUwsQ0FBY3JCLElBQUksQ0FBQ0MsTUFBTCxDQUFZQyxLQUFaLENBQWtCa0IsSUFBaEMsQ0FBUDtBQUNELEc7O1NBRUQ0QixjLEdBQUEsMEJBQWtCO0FBQUE7O0FBQ2hCLFNBQUt6QixHQUFMLEdBQVcsRUFBWDtBQUNBLFNBQUs3QixHQUFMLEdBQVcsSUFBSW1DLG1CQUFReUIsa0JBQVosQ0FBK0I7QUFBRTVCLE1BQUFBLElBQUksRUFBRSxLQUFLa0IsVUFBTDtBQUFSLEtBQS9CLENBQVg7QUFFQSxRQUFJVyxJQUFJLEdBQUcsQ0FBWDtBQUNBLFFBQUlDLE1BQU0sR0FBRyxDQUFiO0FBRUEsUUFBSUMsS0FBSixFQUFXQyxJQUFYO0FBQ0EsU0FBS3BFLFNBQUwsQ0FBZSxLQUFLQyxJQUFwQixFQUEwQixVQUFDNEMsR0FBRCxFQUFNbkMsSUFBTixFQUFZZSxJQUFaLEVBQXFCO0FBQzdDLE1BQUEsTUFBSSxDQUFDUSxHQUFMLElBQVlZLEdBQVo7O0FBRUEsVUFBSW5DLElBQUksSUFBSWUsSUFBSSxLQUFLLEtBQXJCLEVBQTRCO0FBQzFCLFlBQUlmLElBQUksQ0FBQ0MsTUFBTCxJQUFlRCxJQUFJLENBQUNDLE1BQUwsQ0FBWTBELEtBQS9CLEVBQXNDO0FBQ3BDLFVBQUEsTUFBSSxDQUFDakUsR0FBTCxDQUFTa0UsVUFBVCxDQUFvQjtBQUNsQjNELFlBQUFBLE1BQU0sRUFBRSxNQUFJLENBQUNvRCxVQUFMLENBQWdCckQsSUFBaEIsQ0FEVTtBQUVsQjZELFlBQUFBLFNBQVMsRUFBRTtBQUFFTixjQUFBQSxJQUFJLEVBQUpBLElBQUY7QUFBUUMsY0FBQUEsTUFBTSxFQUFFQSxNQUFNLEdBQUc7QUFBekIsYUFGTztBQUdsQk0sWUFBQUEsUUFBUSxFQUFFO0FBQ1JQLGNBQUFBLElBQUksRUFBRXZELElBQUksQ0FBQ0MsTUFBTCxDQUFZMEQsS0FBWixDQUFrQkosSUFEaEI7QUFFUkMsY0FBQUEsTUFBTSxFQUFFeEQsSUFBSSxDQUFDQyxNQUFMLENBQVkwRCxLQUFaLENBQWtCSCxNQUFsQixHQUEyQjtBQUYzQjtBQUhRLFdBQXBCO0FBUUQsU0FURCxNQVNPO0FBQ0wsVUFBQSxNQUFJLENBQUM5RCxHQUFMLENBQVNrRSxVQUFULENBQW9CO0FBQ2xCM0QsWUFBQUEsTUFBTSxFQUFFLGFBRFU7QUFFbEI2RCxZQUFBQSxRQUFRLEVBQUU7QUFBRVAsY0FBQUEsSUFBSSxFQUFFLENBQVI7QUFBV0MsY0FBQUEsTUFBTSxFQUFFO0FBQW5CLGFBRlE7QUFHbEJLLFlBQUFBLFNBQVMsRUFBRTtBQUFFTixjQUFBQSxJQUFJLEVBQUpBLElBQUY7QUFBUUMsY0FBQUEsTUFBTSxFQUFFQSxNQUFNLEdBQUc7QUFBekI7QUFITyxXQUFwQjtBQUtEO0FBQ0Y7O0FBRURDLE1BQUFBLEtBQUssR0FBR3RCLEdBQUcsQ0FBQzRCLEtBQUosQ0FBVSxLQUFWLENBQVI7O0FBQ0EsVUFBSU4sS0FBSixFQUFXO0FBQ1RGLFFBQUFBLElBQUksSUFBSUUsS0FBSyxDQUFDNUQsTUFBZDtBQUNBNkQsUUFBQUEsSUFBSSxHQUFHdkIsR0FBRyxDQUFDNkIsV0FBSixDQUFnQixJQUFoQixDQUFQO0FBQ0FSLFFBQUFBLE1BQU0sR0FBR3JCLEdBQUcsQ0FBQ3RDLE1BQUosR0FBYTZELElBQXRCO0FBQ0QsT0FKRCxNQUlPO0FBQ0xGLFFBQUFBLE1BQU0sSUFBSXJCLEdBQUcsQ0FBQ3RDLE1BQWQ7QUFDRDs7QUFFRCxVQUFJRyxJQUFJLElBQUllLElBQUksS0FBSyxPQUFyQixFQUE4QjtBQUM1QixZQUFJa0QsQ0FBQyxHQUFHakUsSUFBSSxDQUFDa0UsTUFBTCxJQUFlO0FBQUVDLFVBQUFBLElBQUksRUFBRTtBQUFSLFNBQXZCOztBQUNBLFlBQUluRSxJQUFJLENBQUNlLElBQUwsS0FBYyxNQUFkLElBQXdCZixJQUFJLEtBQUtpRSxDQUFDLENBQUNQLElBQW5DLElBQTJDTyxDQUFDLENBQUNFLElBQUYsQ0FBT0MsU0FBdEQsRUFBaUU7QUFDL0QsY0FBSXBFLElBQUksQ0FBQ0MsTUFBTCxJQUFlRCxJQUFJLENBQUNDLE1BQUwsQ0FBWW9FLEdBQS9CLEVBQW9DO0FBQ2xDLFlBQUEsTUFBSSxDQUFDM0UsR0FBTCxDQUFTa0UsVUFBVCxDQUFvQjtBQUNsQjNELGNBQUFBLE1BQU0sRUFBRSxNQUFJLENBQUNvRCxVQUFMLENBQWdCckQsSUFBaEIsQ0FEVTtBQUVsQjZELGNBQUFBLFNBQVMsRUFBRTtBQUFFTixnQkFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLGdCQUFBQSxNQUFNLEVBQUVBLE1BQU0sR0FBRztBQUF6QixlQUZPO0FBR2xCTSxjQUFBQSxRQUFRLEVBQUU7QUFDUlAsZ0JBQUFBLElBQUksRUFBRXZELElBQUksQ0FBQ0MsTUFBTCxDQUFZb0UsR0FBWixDQUFnQmQsSUFEZDtBQUVSQyxnQkFBQUEsTUFBTSxFQUFFeEQsSUFBSSxDQUFDQyxNQUFMLENBQVlvRSxHQUFaLENBQWdCYixNQUFoQixHQUF5QjtBQUZ6QjtBQUhRLGFBQXBCO0FBUUQsV0FURCxNQVNPO0FBQ0wsWUFBQSxNQUFJLENBQUM5RCxHQUFMLENBQVNrRSxVQUFULENBQW9CO0FBQ2xCM0QsY0FBQUEsTUFBTSxFQUFFLGFBRFU7QUFFbEI2RCxjQUFBQSxRQUFRLEVBQUU7QUFBRVAsZ0JBQUFBLElBQUksRUFBRSxDQUFSO0FBQVdDLGdCQUFBQSxNQUFNLEVBQUU7QUFBbkIsZUFGUTtBQUdsQkssY0FBQUEsU0FBUyxFQUFFO0FBQUVOLGdCQUFBQSxJQUFJLEVBQUpBLElBQUY7QUFBUUMsZ0JBQUFBLE1BQU0sRUFBRUEsTUFBTSxHQUFHO0FBQXpCO0FBSE8sYUFBcEI7QUFLRDtBQUNGO0FBQ0Y7QUFDRixLQXBERDtBQXFERCxHOztTQUVEYyxRLEdBQUEsb0JBQVk7QUFDVixTQUFLekQsZUFBTDs7QUFFQSxRQUFJLEtBQUtsQixLQUFMLEVBQUosRUFBa0I7QUFDaEIsYUFBTyxLQUFLb0QsV0FBTCxFQUFQO0FBQ0Q7O0FBRUQsUUFBSXdCLE1BQU0sR0FBRyxFQUFiO0FBQ0EsU0FBS2pGLFNBQUwsQ0FBZSxLQUFLQyxJQUFwQixFQUEwQixVQUFBa0IsQ0FBQyxFQUFJO0FBQzdCOEQsTUFBQUEsTUFBTSxJQUFJOUQsQ0FBVjtBQUNELEtBRkQ7QUFHQSxXQUFPLENBQUM4RCxNQUFELENBQVA7QUFDRCxHOzs7OztlQUdZbEYsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb3ppbGxhIGZyb20gJ3NvdXJjZS1tYXAnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuXG5jbGFzcyBNYXBHZW5lcmF0b3Ige1xuICBjb25zdHJ1Y3RvciAoc3RyaW5naWZ5LCByb290LCBvcHRzKSB7XG4gICAgdGhpcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcbiAgICB0aGlzLm1hcE9wdHMgPSBvcHRzLm1hcCB8fCB7IH1cbiAgICB0aGlzLnJvb3QgPSByb290XG4gICAgdGhpcy5vcHRzID0gb3B0c1xuICB9XG5cbiAgaXNNYXAgKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRzLm1hcCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAhIXRoaXMub3B0cy5tYXBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwXG4gIH1cblxuICBwcmV2aW91cyAoKSB7XG4gICAgaWYgKCF0aGlzLnByZXZpb3VzTWFwcykge1xuICAgICAgdGhpcy5wcmV2aW91c01hcHMgPSBbXVxuICAgICAgdGhpcy5yb290LndhbGsobm9kZSA9PiB7XG4gICAgICAgIGlmIChub2RlLnNvdXJjZSAmJiBub2RlLnNvdXJjZS5pbnB1dC5tYXApIHtcbiAgICAgICAgICBsZXQgbWFwID0gbm9kZS5zb3VyY2UuaW5wdXQubWFwXG4gICAgICAgICAgaWYgKHRoaXMucHJldmlvdXNNYXBzLmluZGV4T2YobWFwKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNNYXBzLnB1c2gobWFwKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcmV2aW91c01hcHNcbiAgfVxuXG4gIGlzSW5saW5lICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMubWFwT3B0cy5pbmxpbmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLmlubGluZVxuICAgIH1cblxuICAgIGxldCBhbm5vdGF0aW9uID0gdGhpcy5tYXBPcHRzLmFubm90YXRpb25cbiAgICBpZiAodHlwZW9mIGFubm90YXRpb24gIT09ICd1bmRlZmluZWQnICYmIGFubm90YXRpb24gIT09IHRydWUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnByZXZpb3VzKCkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcmV2aW91cygpLnNvbWUoaSA9PiBpLmlubGluZSlcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlzU291cmNlc0NvbnRlbnQgKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5tYXBPcHRzLnNvdXJjZXNDb250ZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudFxuICAgIH1cbiAgICBpZiAodGhpcy5wcmV2aW91cygpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKGkgPT4gaS53aXRoQ29udGVudCgpKVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY2xlYXJBbm5vdGF0aW9uICgpIHtcbiAgICBpZiAodGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09IGZhbHNlKSByZXR1cm5cblxuICAgIGxldCBub2RlXG4gICAgZm9yIChsZXQgaSA9IHRoaXMucm9vdC5ub2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbm9kZSA9IHRoaXMucm9vdC5ub2Rlc1tpXVxuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ2NvbW1lbnQnKSBjb250aW51ZVxuICAgICAgaWYgKG5vZGUudGV4dC5pbmRleE9mKCcjIHNvdXJjZU1hcHBpbmdVUkw9JykgPT09IDApIHtcbiAgICAgICAgdGhpcy5yb290LnJlbW92ZUNoaWxkKGkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0U291cmNlc0NvbnRlbnQgKCkge1xuICAgIGxldCBhbHJlYWR5ID0geyB9XG4gICAgdGhpcy5yb290LndhbGsobm9kZSA9PiB7XG4gICAgICBpZiAobm9kZS5zb3VyY2UpIHtcbiAgICAgICAgbGV0IGZyb20gPSBub2RlLnNvdXJjZS5pbnB1dC5mcm9tXG4gICAgICAgIGlmIChmcm9tICYmICFhbHJlYWR5W2Zyb21dKSB7XG4gICAgICAgICAgYWxyZWFkeVtmcm9tXSA9IHRydWVcbiAgICAgICAgICBsZXQgcmVsYXRpdmUgPSB0aGlzLnJlbGF0aXZlKGZyb20pXG4gICAgICAgICAgdGhpcy5tYXAuc2V0U291cmNlQ29udGVudChyZWxhdGl2ZSwgbm9kZS5zb3VyY2UuaW5wdXQuY3NzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGFwcGx5UHJldk1hcHMgKCkge1xuICAgIGZvciAobGV0IHByZXYgb2YgdGhpcy5wcmV2aW91cygpKSB7XG4gICAgICBsZXQgZnJvbSA9IHRoaXMucmVsYXRpdmUocHJldi5maWxlKVxuICAgICAgbGV0IHJvb3QgPSBwcmV2LnJvb3QgfHwgcGF0aC5kaXJuYW1lKHByZXYuZmlsZSlcbiAgICAgIGxldCBtYXBcblxuICAgICAgaWYgKHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgbWFwID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIocHJldi50ZXh0KVxuICAgICAgICBpZiAobWFwLnNvdXJjZXNDb250ZW50KSB7XG4gICAgICAgICAgbWFwLnNvdXJjZXNDb250ZW50ID0gbWFwLnNvdXJjZXNDb250ZW50Lm1hcCgoKSA9PiBudWxsKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXAgPSBwcmV2LmNvbnN1bWVyKClcbiAgICAgIH1cblxuICAgICAgdGhpcy5tYXAuYXBwbHlTb3VyY2VNYXAobWFwLCBmcm9tLCB0aGlzLnJlbGF0aXZlKHJvb3QpKVxuICAgIH1cbiAgfVxuXG4gIGlzQW5ub3RhdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvblxuICAgIH1cbiAgICBpZiAodGhpcy5wcmV2aW91cygpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKGkgPT4gaS5hbm5vdGF0aW9uKVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgdG9CYXNlNjQgKHN0cikge1xuICAgIGlmIChCdWZmZXIpIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShzdHIpLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgIH1cbiAgICByZXR1cm4gd2luZG93LmJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikpKVxuICB9XG5cbiAgYWRkQW5ub3RhdGlvbiAoKSB7XG4gICAgbGV0IGNvbnRlbnRcblxuICAgIGlmICh0aGlzLmlzSW5saW5lKCkpIHtcbiAgICAgIGNvbnRlbnQgPSAnZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICtcbiAgICAgICAgICAgICAgICB0aGlzLnRvQmFzZTY0KHRoaXMubWFwLnRvU3RyaW5nKCkpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb250ZW50ID0gdGhpcy5tYXBPcHRzLmFubm90YXRpb25cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRoaXMub3V0cHV0RmlsZSgpICsgJy5tYXAnXG4gICAgfVxuXG4gICAgbGV0IGVvbCA9ICdcXG4nXG4gICAgaWYgKHRoaXMuY3NzLmluZGV4T2YoJ1xcclxcbicpICE9PSAtMSkgZW9sID0gJ1xcclxcbidcblxuICAgIHRoaXMuY3NzICs9IGVvbCArICcvKiMgc291cmNlTWFwcGluZ1VSTD0nICsgY29udGVudCArICcgKi8nXG4gIH1cblxuICBvdXRwdXRGaWxlICgpIHtcbiAgICBpZiAodGhpcy5vcHRzLnRvKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZSh0aGlzLm9wdHMudG8pXG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMuZnJvbSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmUodGhpcy5vcHRzLmZyb20pXG4gICAgfVxuICAgIHJldHVybiAndG8uY3NzJ1xuICB9XG5cbiAgZ2VuZXJhdGVNYXAgKCkge1xuICAgIHRoaXMuZ2VuZXJhdGVTdHJpbmcoKVxuICAgIGlmICh0aGlzLmlzU291cmNlc0NvbnRlbnQoKSkgdGhpcy5zZXRTb3VyY2VzQ29udGVudCgpXG4gICAgaWYgKHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwKSB0aGlzLmFwcGx5UHJldk1hcHMoKVxuICAgIGlmICh0aGlzLmlzQW5ub3RhdGlvbigpKSB0aGlzLmFkZEFubm90YXRpb24oKVxuXG4gICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIFt0aGlzLmNzc11cbiAgICB9XG4gICAgcmV0dXJuIFt0aGlzLmNzcywgdGhpcy5tYXBdXG4gIH1cblxuICByZWxhdGl2ZSAoZmlsZSkge1xuICAgIGlmIChmaWxlLmluZGV4T2YoJzwnKSA9PT0gMCkgcmV0dXJuIGZpbGVcbiAgICBpZiAoL15cXHcrOlxcL1xcLy8udGVzdChmaWxlKSkgcmV0dXJuIGZpbGVcblxuICAgIGxldCBmcm9tID0gdGhpcy5vcHRzLnRvID8gcGF0aC5kaXJuYW1lKHRoaXMub3B0cy50bykgOiAnLidcblxuICAgIGlmICh0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBmcm9tID0gcGF0aC5kaXJuYW1lKHBhdGgucmVzb2x2ZShmcm9tLCB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvbikpXG4gICAgfVxuXG4gICAgZmlsZSA9IHBhdGgucmVsYXRpdmUoZnJvbSwgZmlsZSlcbiAgICBpZiAocGF0aC5zZXAgPT09ICdcXFxcJykge1xuICAgICAgcmV0dXJuIGZpbGUucmVwbGFjZSgvXFxcXC9nLCAnLycpXG4gICAgfVxuICAgIHJldHVybiBmaWxlXG4gIH1cblxuICBzb3VyY2VQYXRoIChub2RlKSB7XG4gICAgaWYgKHRoaXMubWFwT3B0cy5mcm9tKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLmZyb21cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpdmUobm9kZS5zb3VyY2UuaW5wdXQuZnJvbSlcbiAgfVxuXG4gIGdlbmVyYXRlU3RyaW5nICgpIHtcbiAgICB0aGlzLmNzcyA9ICcnXG4gICAgdGhpcy5tYXAgPSBuZXcgbW96aWxsYS5Tb3VyY2VNYXBHZW5lcmF0b3IoeyBmaWxlOiB0aGlzLm91dHB1dEZpbGUoKSB9KVxuXG4gICAgbGV0IGxpbmUgPSAxXG4gICAgbGV0IGNvbHVtbiA9IDFcblxuICAgIGxldCBsaW5lcywgbGFzdFxuICAgIHRoaXMuc3RyaW5naWZ5KHRoaXMucm9vdCwgKHN0ciwgbm9kZSwgdHlwZSkgPT4ge1xuICAgICAgdGhpcy5jc3MgKz0gc3RyXG5cbiAgICAgIGlmIChub2RlICYmIHR5cGUgIT09ICdlbmQnKSB7XG4gICAgICAgIGlmIChub2RlLnNvdXJjZSAmJiBub2RlLnNvdXJjZS5zdGFydCkge1xuICAgICAgICAgIHRoaXMubWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLnNvdXJjZVBhdGgobm9kZSksXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH0sXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBub2RlLnNvdXJjZS5zdGFydC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLnN0YXJ0LmNvbHVtbiAtIDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiAnPG5vIHNvdXJjZT4nLFxuICAgICAgICAgICAgb3JpZ2luYWw6IHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpbmVzID0gc3RyLm1hdGNoKC9cXG4vZylcbiAgICAgIGlmIChsaW5lcykge1xuICAgICAgICBsaW5lICs9IGxpbmVzLmxlbmd0aFxuICAgICAgICBsYXN0ID0gc3RyLmxhc3RJbmRleE9mKCdcXG4nKVxuICAgICAgICBjb2x1bW4gPSBzdHIubGVuZ3RoIC0gbGFzdFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sdW1uICs9IHN0ci5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUgJiYgdHlwZSAhPT0gJ3N0YXJ0Jykge1xuICAgICAgICBsZXQgcCA9IG5vZGUucGFyZW50IHx8IHsgcmF3czogeyB9IH1cbiAgICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ2RlY2wnIHx8IG5vZGUgIT09IHAubGFzdCB8fCBwLnJhd3Muc2VtaWNvbG9uKSB7XG4gICAgICAgICAgaWYgKG5vZGUuc291cmNlICYmIG5vZGUuc291cmNlLmVuZCkge1xuICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VQYXRoKG5vZGUpLFxuICAgICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAyIH0sXG4gICAgICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICAgICAgbGluZTogbm9kZS5zb3VyY2UuZW5kLmxpbmUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBub2RlLnNvdXJjZS5lbmQuY29sdW1uIC0gMVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgICAgc291cmNlOiAnPG5vIHNvdXJjZT4nLFxuICAgICAgICAgICAgICBvcmlnaW5hbDogeyBsaW5lOiAxLCBjb2x1bW46IDAgfSxcbiAgICAgICAgICAgICAgZ2VuZXJhdGVkOiB7IGxpbmUsIGNvbHVtbjogY29sdW1uIC0gMSB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZW5lcmF0ZSAoKSB7XG4gICAgdGhpcy5jbGVhckFubm90YXRpb24oKVxuXG4gICAgaWYgKHRoaXMuaXNNYXAoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVNYXAoKVxuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSAnJ1xuICAgIHRoaXMuc3RyaW5naWZ5KHRoaXMucm9vdCwgaSA9PiB7XG4gICAgICByZXN1bHQgKz0gaVxuICAgIH0pXG4gICAgcmV0dXJuIFtyZXN1bHRdXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFwR2VuZXJhdG9yXG4iXSwiZmlsZSI6Im1hcC1nZW5lcmF0b3IuanMifQ==\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n  if (0 <= number && number < intToCharMap.length) {\n    return intToCharMap[number];\n  }\n  throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n  var bigA = 65;     // 'A'\n  var bigZ = 90;     // 'Z'\n\n  var littleA = 97;  // 'a'\n  var littleZ = 122; // 'z'\n\n  var zero = 48;     // '0'\n  var nine = 57;     // '9'\n\n  var plus = 43;     // '+'\n  var slash = 47;    // '/'\n\n  var littleOffset = 26;\n  var numberOffset = 52;\n\n  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n  if (bigA <= charCode && charCode <= bigZ) {\n    return (charCode - bigA);\n  }\n\n  // 26 - 51: abcdefghijklmnopqrstuvwxyz\n  if (littleA <= charCode && charCode <= littleZ) {\n    return (charCode - littleA + littleOffset);\n  }\n\n  // 52 - 61: 0123456789\n  if (zero <= charCode && charCode <= nine) {\n    return (charCode - zero + numberOffset);\n  }\n\n  // 62: +\n  if (charCode == plus) {\n    return 62;\n  }\n\n  // 63: /\n  if (charCode == slash) {\n    return 63;\n  }\n\n  // Invalid base64 digit.\n  return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n  // Optimized for most common case\n  var lineA = mappingA.generatedLine;\n  var lineB = mappingB.generatedLine;\n  var columnA = mappingA.generatedColumn;\n  var columnB = mappingB.generatedColumn;\n  return lineB > lineA || lineB == lineA && columnB >= columnA ||\n         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n  this._array = [];\n  this._sorted = true;\n  // Serves as infimum\n  this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n  function MappingList_forEach(aCallback, aThisArg) {\n    this._array.forEach(aCallback, aThisArg);\n  };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n  if (generatedPositionAfter(this._last, aMapping)) {\n    this._last = aMapping;\n    this._array.push(aMapping);\n  } else {\n    this._sorted = false;\n    this._array.push(aMapping);\n  }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n  if (!this._sorted) {\n    this._array.sort(util.compareByGeneratedPositionsInflated);\n    this._sorted = true;\n  }\n  return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  return sourceMap.sections != null\n    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n//     {\n//       generatedLine: The line number in the generated code,\n//       generatedColumn: The column number in the generated code,\n//       source: The path to the original source file that generated this\n//               chunk of code,\n//       originalLine: The line number in the original source that\n//                     corresponds to this chunk of generated code,\n//       originalColumn: The column number in the original source that\n//                       corresponds to this chunk of generated code,\n//       name: The name of the original symbol which generated this chunk of\n//             code.\n//     }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__generatedMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__generatedMappings;\n  }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__originalMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__originalMappings;\n  }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n    var c = aStr.charAt(index);\n    return c === \";\" || c === \",\";\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    throw new Error(\"Subclasses must implement _parseMappings\");\n  };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n *        The function that is called with each mapping.\n * @param Object aContext\n *        Optional. If specified, this object will be the value of `this` every\n *        time that `aCallback` is called.\n * @param aOrder\n *        Either `SourceMapConsumer.GENERATED_ORDER` or\n *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n *        iterate over the mappings sorted by the generated file's line/column\n *        order or the original's source/line/column order, respectively. Defaults to\n *        `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n    var context = aContext || null;\n    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n    var mappings;\n    switch (order) {\n    case SourceMapConsumer.GENERATED_ORDER:\n      mappings = this._generatedMappings;\n      break;\n    case SourceMapConsumer.ORIGINAL_ORDER:\n      mappings = this._originalMappings;\n      break;\n    default:\n      throw new Error(\"Unknown order of iteration.\");\n    }\n\n    var sourceRoot = this.sourceRoot;\n    mappings.map(function (mapping) {\n      var source = mapping.source === null ? null : this._sources.at(mapping.source);\n      source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n      return {\n        source: source,\n        generatedLine: mapping.generatedLine,\n        generatedColumn: mapping.generatedColumn,\n        originalLine: mapping.originalLine,\n        originalColumn: mapping.originalColumn,\n        name: mapping.name === null ? null : this._names.at(mapping.name)\n      };\n    }, this).forEach(aCallback, context);\n  };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number is 1-based.\n *   - column: Optional. the column number in the original source.\n *    The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *    line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *    The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n    var line = util.getArg(aArgs, 'line');\n\n    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n    // returns the index of the closest mapping less than the needle. By\n    // setting needle.originalColumn to 0, we thus find the last mapping for\n    // the given line, provided such a mapping exists.\n    var needle = {\n      source: util.getArg(aArgs, 'source'),\n      originalLine: line,\n      originalColumn: util.getArg(aArgs, 'column', 0)\n    };\n\n    needle.source = this._findSourceIndex(needle.source);\n    if (needle.source < 0) {\n      return [];\n    }\n\n    var mappings = [];\n\n    var index = this._findMapping(needle,\n                                  this._originalMappings,\n                                  \"originalLine\",\n                                  \"originalColumn\",\n                                  util.compareByOriginalPositions,\n                                  binarySearch.LEAST_UPPER_BOUND);\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (aArgs.column === undefined) {\n        var originalLine = mapping.originalLine;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we found. Since\n        // mappings are sorted, this is guaranteed to find all mappings for\n        // the line we found.\n        while (mapping && mapping.originalLine === originalLine) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      } else {\n        var originalColumn = mapping.originalColumn;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we were searching for.\n        // Since mappings are sorted, this is guaranteed to find all mappings for\n        // the line we are searching for.\n        while (mapping &&\n               mapping.originalLine === line &&\n               mapping.originalColumn == originalColumn) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      }\n    }\n\n    return mappings;\n  };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - sources: An array of URLs to the original source files.\n *   - names: An array of identifiers which can be referrenced by individual mappings.\n *   - sourceRoot: Optional. The URL root from which all sources are relative.\n *   - sourcesContent: Optional. An array of contents of the original source files.\n *   - mappings: A string of base64 VLQs which contain the actual mappings.\n *   - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n *     {\n *       version : 3,\n *       file: \"out.js\",\n *       sourceRoot : \"\",\n *       sources: [\"foo.js\", \"bar.js\"],\n *       names: [\"src\", \"maps\", \"are\", \"fun\"],\n *       mappings: \"AA,AB;;ABCDE;\"\n *     }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sources = util.getArg(sourceMap, 'sources');\n  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n  // requires the array) to play nice here.\n  var names = util.getArg(sourceMap, 'names', []);\n  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n  var mappings = util.getArg(sourceMap, 'mappings');\n  var file = util.getArg(sourceMap, 'file', null);\n\n  // Once again, Sass deviates from the spec and supplies the version as a\n  // string rather than a number, so we use loose equality checking here.\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  if (sourceRoot) {\n    sourceRoot = util.normalize(sourceRoot);\n  }\n\n  sources = sources\n    .map(String)\n    // Some source maps produce relative source paths like \"./foo.js\" instead of\n    // \"foo.js\".  Normalize these first so that future comparisons will succeed.\n    // See bugzil.la/1090768.\n    .map(util.normalize)\n    // Always ensure that absolute sources are internally stored relative to\n    // the source root, if the source root is absolute. Not doing this would\n    // be particularly problematic when the source root is a prefix of the\n    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n    .map(function (source) {\n      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n        ? util.relative(sourceRoot, source)\n        : source;\n    });\n\n  // Pass `true` below to allow duplicate names and sources. While source maps\n  // are intended to be compressed and deduplicated, the TypeScript compiler\n  // sometimes generates source maps with duplicates in them. See Github issue\n  // #72 and bugzil.la/889492.\n  this._names = ArraySet.fromArray(names.map(String), true);\n  this._sources = ArraySet.fromArray(sources, true);\n\n  this._absoluteSources = this._sources.toArray().map(function (s) {\n    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n  });\n\n  this.sourceRoot = sourceRoot;\n  this.sourcesContent = sourcesContent;\n  this._mappings = mappings;\n  this._sourceMapURL = aSourceMapURL;\n  this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source.  Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n  var relativeSource = aSource;\n  if (this.sourceRoot != null) {\n    relativeSource = util.relative(this.sourceRoot, relativeSource);\n  }\n\n  if (this._sources.has(relativeSource)) {\n    return this._sources.indexOf(relativeSource);\n  }\n\n  // Maybe aSource is an absolute URL as returned by |sources|.  In\n  // this case we can't simply undo the transform.\n  var i;\n  for (i = 0; i < this._absoluteSources.length; ++i) {\n    if (this._absoluteSources[i] == aSource) {\n      return i;\n    }\n  }\n\n  return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n *        The source map that will be consumed.\n * @param String aSourceMapURL\n *        The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n  function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n    var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n    var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n    var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n    smc.sourceRoot = aSourceMap._sourceRoot;\n    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n                                                            smc.sourceRoot);\n    smc.file = aSourceMap._file;\n    smc._sourceMapURL = aSourceMapURL;\n    smc._absoluteSources = smc._sources.toArray().map(function (s) {\n      return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n    });\n\n    // Because we are modifying the entries (by converting string sources and\n    // names to indices into the sources and names ArraySets), we have to make\n    // a copy of the entry or else bad things happen. Shared mutable state\n    // strikes again! See github issue #191.\n\n    var generatedMappings = aSourceMap._mappings.toArray().slice();\n    var destGeneratedMappings = smc.__generatedMappings = [];\n    var destOriginalMappings = smc.__originalMappings = [];\n\n    for (var i = 0, length = generatedMappings.length; i < length; i++) {\n      var srcMapping = generatedMappings[i];\n      var destMapping = new Mapping;\n      destMapping.generatedLine = srcMapping.generatedLine;\n      destMapping.generatedColumn = srcMapping.generatedColumn;\n\n      if (srcMapping.source) {\n        destMapping.source = sources.indexOf(srcMapping.source);\n        destMapping.originalLine = srcMapping.originalLine;\n        destMapping.originalColumn = srcMapping.originalColumn;\n\n        if (srcMapping.name) {\n          destMapping.name = names.indexOf(srcMapping.name);\n        }\n\n        destOriginalMappings.push(destMapping);\n      }\n\n      destGeneratedMappings.push(destMapping);\n    }\n\n    quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n    return smc;\n  };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    return this._absoluteSources.slice();\n  }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n  this.generatedLine = 0;\n  this.generatedColumn = 0;\n  this.source = null;\n  this.originalLine = null;\n  this.originalColumn = null;\n  this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    var generatedLine = 1;\n    var previousGeneratedColumn = 0;\n    var previousOriginalLine = 0;\n    var previousOriginalColumn = 0;\n    var previousSource = 0;\n    var previousName = 0;\n    var length = aStr.length;\n    var index = 0;\n    var cachedSegments = {};\n    var temp = {};\n    var originalMappings = [];\n    var generatedMappings = [];\n    var mapping, str, segment, end, value;\n\n    while (index < length) {\n      if (aStr.charAt(index) === ';') {\n        generatedLine++;\n        index++;\n        previousGeneratedColumn = 0;\n      }\n      else if (aStr.charAt(index) === ',') {\n        index++;\n      }\n      else {\n        mapping = new Mapping();\n        mapping.generatedLine = generatedLine;\n\n        // Because each offset is encoded relative to the previous one,\n        // many segments often have the same encoding. We can exploit this\n        // fact by caching the parsed variable length fields of each segment,\n        // allowing us to avoid a second parse if we encounter the same\n        // segment again.\n        for (end = index; end < length; end++) {\n          if (this._charIsMappingSeparator(aStr, end)) {\n            break;\n          }\n        }\n        str = aStr.slice(index, end);\n\n        segment = cachedSegments[str];\n        if (segment) {\n          index += str.length;\n        } else {\n          segment = [];\n          while (index < end) {\n            base64VLQ.decode(aStr, index, temp);\n            value = temp.value;\n            index = temp.rest;\n            segment.push(value);\n          }\n\n          if (segment.length === 2) {\n            throw new Error('Found a source, but no line and column');\n          }\n\n          if (segment.length === 3) {\n            throw new Error('Found a source and line, but no column');\n          }\n\n          cachedSegments[str] = segment;\n        }\n\n        // Generated column.\n        mapping.generatedColumn = previousGeneratedColumn + segment[0];\n        previousGeneratedColumn = mapping.generatedColumn;\n\n        if (segment.length > 1) {\n          // Original source.\n          mapping.source = previousSource + segment[1];\n          previousSource += segment[1];\n\n          // Original line.\n          mapping.originalLine = previousOriginalLine + segment[2];\n          previousOriginalLine = mapping.originalLine;\n          // Lines are stored 0-based\n          mapping.originalLine += 1;\n\n          // Original column.\n          mapping.originalColumn = previousOriginalColumn + segment[3];\n          previousOriginalColumn = mapping.originalColumn;\n\n          if (segment.length > 4) {\n            // Original name.\n            mapping.name = previousName + segment[4];\n            previousName += segment[4];\n          }\n        }\n\n        generatedMappings.push(mapping);\n        if (typeof mapping.originalLine === 'number') {\n          originalMappings.push(mapping);\n        }\n      }\n    }\n\n    quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n    this.__generatedMappings = generatedMappings;\n\n    quickSort(originalMappings, util.compareByOriginalPositions);\n    this.__originalMappings = originalMappings;\n  };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n                                         aColumnName, aComparator, aBias) {\n    // To return the position we are searching for, we must first find the\n    // mapping for the given position and then return the opposite position it\n    // points to. Because the mappings are sorted, we can use binary search to\n    // find the best mapping.\n\n    if (aNeedle[aLineName] <= 0) {\n      throw new TypeError('Line must be greater than or equal to 1, got '\n                          + aNeedle[aLineName]);\n    }\n    if (aNeedle[aColumnName] < 0) {\n      throw new TypeError('Column must be greater than or equal to 0, got '\n                          + aNeedle[aColumnName]);\n    }\n\n    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n  };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n  function SourceMapConsumer_computeColumnSpans() {\n    for (var index = 0; index < this._generatedMappings.length; ++index) {\n      var mapping = this._generatedMappings[index];\n\n      // Mappings do not contain a field for the last generated columnt. We\n      // can come up with an optimistic estimate, however, by assuming that\n      // mappings are contiguous (i.e. given two consecutive mappings, the\n      // first mapping ends where the second one starts).\n      if (index + 1 < this._generatedMappings.length) {\n        var nextMapping = this._generatedMappings[index + 1];\n\n        if (mapping.generatedLine === nextMapping.generatedLine) {\n          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n          continue;\n        }\n      }\n\n      // The last mapping for each line spans the entire line.\n      mapping.lastGeneratedColumn = Infinity;\n    }\n  };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n  function SourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._generatedMappings,\n      \"generatedLine\",\n      \"generatedColumn\",\n      util.compareByGeneratedPositionsDeflated,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._generatedMappings[index];\n\n      if (mapping.generatedLine === needle.generatedLine) {\n        var source = util.getArg(mapping, 'source', null);\n        if (source !== null) {\n          source = this._sources.at(source);\n          source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n        }\n        var name = util.getArg(mapping, 'name', null);\n        if (name !== null) {\n          name = this._names.at(name);\n        }\n        return {\n          source: source,\n          line: util.getArg(mapping, 'originalLine', null),\n          column: util.getArg(mapping, 'originalColumn', null),\n          name: name\n        };\n      }\n    }\n\n    return {\n      source: null,\n      line: null,\n      column: null,\n      name: null\n    };\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function BasicSourceMapConsumer_hasContentsOfAllSources() {\n    if (!this.sourcesContent) {\n      return false;\n    }\n    return this.sourcesContent.length >= this._sources.size() &&\n      !this.sourcesContent.some(function (sc) { return sc == null; });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    if (!this.sourcesContent) {\n      return null;\n    }\n\n    var index = this._findSourceIndex(aSource);\n    if (index >= 0) {\n      return this.sourcesContent[index];\n    }\n\n    var relativeSource = aSource;\n    if (this.sourceRoot != null) {\n      relativeSource = util.relative(this.sourceRoot, relativeSource);\n    }\n\n    var url;\n    if (this.sourceRoot != null\n        && (url = util.urlParse(this.sourceRoot))) {\n      // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n      // many users. We can help them out when they expect file:// URIs to\n      // behave like it would if they were running a local HTTP server. See\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n      var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n      if (url.scheme == \"file\"\n          && this._sources.has(fileUriAbsPath)) {\n        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n      }\n\n      if ((!url.path || url.path == \"/\")\n          && this._sources.has(\"/\" + relativeSource)) {\n        return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n      }\n    }\n\n    // This function is used recursively from\n    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n    // don't want to throw if we can't find the source - we just want to\n    // return null, so we provide a flag to exit gracefully.\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n  function SourceMapConsumer_generatedPositionFor(aArgs) {\n    var source = util.getArg(aArgs, 'source');\n    source = this._findSourceIndex(source);\n    if (source < 0) {\n      return {\n        line: null,\n        column: null,\n        lastColumn: null\n      };\n    }\n\n    var needle = {\n      source: source,\n      originalLine: util.getArg(aArgs, 'line'),\n      originalColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._originalMappings,\n      \"originalLine\",\n      \"originalColumn\",\n      util.compareByOriginalPositions,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (mapping.source === needle.source) {\n        return {\n          line: util.getArg(mapping, 'generatedLine', null),\n          column: util.getArg(mapping, 'generatedColumn', null),\n          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n        };\n      }\n    }\n\n    return {\n      line: null,\n      column: null,\n      lastColumn: null\n    };\n  };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - file: Optional. The generated file this source map is associated with.\n *   - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n *   - offset: The offset into the original specified at which this section\n *       begins to apply, defined as an object with a \"line\" and \"column\"\n *       field.\n *   - map: A source map definition. This source map could also be indexed,\n *       but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n *  {\n *    version : 3,\n *    file: \"app.js\",\n *    sections: [{\n *      offset: {line:100, column:10},\n *      map: {\n *        version : 3,\n *        file: \"section.js\",\n *        sources: [\"foo.js\", \"bar.js\"],\n *        names: [\"src\", \"maps\", \"are\", \"fun\"],\n *        mappings: \"AAAA,E;;ABCDE;\"\n *      }\n *    }],\n *  }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sections = util.getArg(sourceMap, 'sections');\n\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n\n  var lastOffset = {\n    line: -1,\n    column: 0\n  };\n  this._sections = sections.map(function (s) {\n    if (s.url) {\n      // The url field will require support for asynchronicity.\n      // See https://github.com/mozilla/source-map/issues/16\n      throw new Error('Support for url field in sections not implemented.');\n    }\n    var offset = util.getArg(s, 'offset');\n    var offsetLine = util.getArg(offset, 'line');\n    var offsetColumn = util.getArg(offset, 'column');\n\n    if (offsetLine < lastOffset.line ||\n        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n      throw new Error('Section offsets must be ordered and non-overlapping.');\n    }\n    lastOffset = offset;\n\n    return {\n      generatedOffset: {\n        // The offset fields are 0-based, but we use 1-based indices when\n        // encoding/decoding from VLQ.\n        generatedLine: offsetLine + 1,\n        generatedColumn: offsetColumn + 1\n      },\n      consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n    }\n  });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    var sources = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n        sources.push(this._sections[i].consumer.sources[j]);\n      }\n    }\n    return sources;\n  }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    // Find the section containing the generated position we're trying to map\n    // to an original position.\n    var sectionIndex = binarySearch.search(needle, this._sections,\n      function(needle, section) {\n        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n        if (cmp) {\n          return cmp;\n        }\n\n        return (needle.generatedColumn -\n                section.generatedOffset.generatedColumn);\n      });\n    var section = this._sections[sectionIndex];\n\n    if (!section) {\n      return {\n        source: null,\n        line: null,\n        column: null,\n        name: null\n      };\n    }\n\n    return section.consumer.originalPositionFor({\n      line: needle.generatedLine -\n        (section.generatedOffset.generatedLine - 1),\n      column: needle.generatedColumn -\n        (section.generatedOffset.generatedLine === needle.generatedLine\n         ? section.generatedOffset.generatedColumn - 1\n         : 0),\n      bias: aArgs.bias\n    });\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n    return this._sections.every(function (s) {\n      return s.consumer.hasContentsOfAllSources();\n    });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      var content = section.consumer.sourceContentFor(aSource, true);\n      if (content) {\n        return content;\n      }\n    }\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based. \n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      // Only consider this section if the requested source is in the list of\n      // sources of the consumer.\n      if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n        continue;\n      }\n      var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n      if (generatedPosition) {\n        var ret = {\n          line: generatedPosition.line +\n            (section.generatedOffset.generatedLine - 1),\n          column: generatedPosition.column +\n            (section.generatedOffset.generatedLine === generatedPosition.line\n             ? section.generatedOffset.generatedColumn - 1\n             : 0)\n        };\n        return ret;\n      }\n    }\n\n    return {\n      line: null,\n      column: null\n    };\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    this.__generatedMappings = [];\n    this.__originalMappings = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n      var sectionMappings = section.consumer._generatedMappings;\n      for (var j = 0; j < sectionMappings.length; j++) {\n        var mapping = sectionMappings[j];\n\n        var source = section.consumer._sources.at(mapping.source);\n        source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n        this._sources.add(source);\n        source = this._sources.indexOf(source);\n\n        var name = null;\n        if (mapping.name) {\n          name = section.consumer._names.at(mapping.name);\n          this._names.add(name);\n          name = this._names.indexOf(name);\n        }\n\n        // The mappings coming from the consumer for the section have\n        // generated positions relative to the start of the section, so we\n        // need to offset them to be relative to the start of the concatenated\n        // generated file.\n        var adjustedMapping = {\n          source: source,\n          generatedLine: mapping.generatedLine +\n            (section.generatedOffset.generatedLine - 1),\n          generatedColumn: mapping.generatedColumn +\n            (section.generatedOffset.generatedLine === mapping.generatedLine\n            ? section.generatedOffset.generatedColumn - 1\n            : 0),\n          originalLine: mapping.originalLine,\n          originalColumn: mapping.originalColumn,\n          name: name\n        };\n\n        this.__generatedMappings.push(adjustedMapping);\n        if (typeof adjustedMapping.originalLine === 'number') {\n          this.__originalMappings.push(adjustedMapping);\n        }\n      }\n    }\n\n    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n    quickSort(this.__originalMappings, util.compareByOriginalPositions);\n  };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n  // This function terminates when one of the following is true:\n  //\n  //   1. We find the exact element we are looking for.\n  //\n  //   2. We did not find the exact element, but we can return the index of\n  //      the next-closest element.\n  //\n  //   3. We did not find the exact element, and there is no next-closest\n  //      element than the one we are searching for, so we return -1.\n  var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n  var cmp = aCompare(aNeedle, aHaystack[mid], true);\n  if (cmp === 0) {\n    // Found the element we are looking for.\n    return mid;\n  }\n  else if (cmp > 0) {\n    // Our needle is greater than aHaystack[mid].\n    if (aHigh - mid > 1) {\n      // The element is in the upper half.\n      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // The exact needle element was not found in this haystack. Determine if\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return aHigh < aHaystack.length ? aHigh : -1;\n    } else {\n      return mid;\n    }\n  }\n  else {\n    // Our needle is less than aHaystack[mid].\n    if (mid - aLow > 1) {\n      // The element is in the lower half.\n      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return mid;\n    } else {\n      return aLow < 0 ? -1 : aLow;\n    }\n  }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n *     array and returns -1, 0, or 1 depending on whether the needle is less\n *     than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n  if (aHaystack.length === 0) {\n    return -1;\n  }\n\n  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n  if (index < 0) {\n    return -1;\n  }\n\n  // We have found either the exact element, or the next-closest element than\n  // the one we are searching for. However, there may be more than one such\n  // element. Make sure we always return the smallest of these.\n  while (index - 1 >= 0) {\n    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n      break;\n    }\n    --index;\n  }\n\n  return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n *        The array.\n * @param {Number} x\n *        The index of the first item.\n * @param {Number} y\n *        The index of the second item.\n */\nfunction swap(ary, x, y) {\n  var temp = ary[x];\n  ary[x] = ary[y];\n  ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n *        The lower bound on the range.\n * @param {Number} high\n *        The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n  return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n * @param {Number} p\n *        Start index of the array\n * @param {Number} r\n *        End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n  // If our lower bound is less than our upper bound, we (1) partition the\n  // array into two pieces and (2) recurse on each half. If it is not, this is\n  // the empty array and our base case.\n\n  if (p < r) {\n    // (1) Partitioning.\n    //\n    // The partitioning chooses a pivot between `p` and `r` and moves all\n    // elements that are less than or equal to the pivot to the before it, and\n    // all the elements that are greater than it after it. The effect is that\n    // once partition is done, the pivot is in the exact place it will be when\n    // the array is put in sorted order, and it will not need to be moved\n    // again. This runs in O(n) time.\n\n    // Always choose a random pivot so that an input array which is reverse\n    // sorted does not cause O(n^2) running time.\n    var pivotIndex = randomIntInRange(p, r);\n    var i = p - 1;\n\n    swap(ary, pivotIndex, r);\n    var pivot = ary[r];\n\n    // Immediately after `j` is incremented in this loop, the following hold\n    // true:\n    //\n    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.\n    //\n    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n    for (var j = p; j < r; j++) {\n      if (comparator(ary[j], pivot) <= 0) {\n        i += 1;\n        swap(ary, i, j);\n      }\n    }\n\n    swap(ary, i + 1, j);\n    var q = i + 1;\n\n    // (2) Recurse on each half.\n\n    doQuickSort(ary, comparator, p, q - 1);\n    doQuickSort(ary, comparator, q + 1, r);\n  }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n  doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n *        generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n  this.children = [];\n  this.sourceContents = {};\n  this.line = aLine == null ? null : aLine;\n  this.column = aColumn == null ? null : aColumn;\n  this.source = aSource == null ? null : aSource;\n  this.name = aName == null ? null : aName;\n  this[isSourceNode] = true;\n  if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n *        SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n    // The SourceNode we want to fill with the generated code\n    // and the SourceMap\n    var node = new SourceNode();\n\n    // All even indices of this array are one line of the generated code,\n    // while all odd indices are the newlines between two adjacent lines\n    // (since `REGEX_NEWLINE` captures its match).\n    // Processed fragments are accessed by calling `shiftNextLine`.\n    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n    var remainingLinesIndex = 0;\n    var shiftNextLine = function() {\n      var lineContents = getNextLine();\n      // The last line of a file might not have a newline.\n      var newLine = getNextLine() || \"\";\n      return lineContents + newLine;\n\n      function getNextLine() {\n        return remainingLinesIndex < remainingLines.length ?\n            remainingLines[remainingLinesIndex++] : undefined;\n      }\n    };\n\n    // We need to remember the position of \"remainingLines\"\n    var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n    // The generate SourceNodes we need a code range.\n    // To extract it current and last mapping is used.\n    // Here we store the last mapping.\n    var lastMapping = null;\n\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      if (lastMapping !== null) {\n        // We add the code from \"lastMapping\" to \"mapping\":\n        // First check if there is a new line in between.\n        if (lastGeneratedLine < mapping.generatedLine) {\n          // Associate first line with \"lastMapping\"\n          addMappingWithCode(lastMapping, shiftNextLine());\n          lastGeneratedLine++;\n          lastGeneratedColumn = 0;\n          // The remaining code is added without mapping\n        } else {\n          // There is no new line in between.\n          // Associate the code between \"lastGeneratedColumn\" and\n          // \"mapping.generatedColumn\" with \"lastMapping\"\n          var nextLine = remainingLines[remainingLinesIndex] || '';\n          var code = nextLine.substr(0, mapping.generatedColumn -\n                                        lastGeneratedColumn);\n          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n                                              lastGeneratedColumn);\n          lastGeneratedColumn = mapping.generatedColumn;\n          addMappingWithCode(lastMapping, code);\n          // No more remaining code, continue\n          lastMapping = mapping;\n          return;\n        }\n      }\n      // We add the generated code until the first mapping\n      // to the SourceNode without any mapping.\n      // Each line is added as separate string.\n      while (lastGeneratedLine < mapping.generatedLine) {\n        node.add(shiftNextLine());\n        lastGeneratedLine++;\n      }\n      if (lastGeneratedColumn < mapping.generatedColumn) {\n        var nextLine = remainingLines[remainingLinesIndex] || '';\n        node.add(nextLine.substr(0, mapping.generatedColumn));\n        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n        lastGeneratedColumn = mapping.generatedColumn;\n      }\n      lastMapping = mapping;\n    }, this);\n    // We have processed all mappings.\n    if (remainingLinesIndex < remainingLines.length) {\n      if (lastMapping) {\n        // Associate the remaining code in the current line with \"lastMapping\"\n        addMappingWithCode(lastMapping, shiftNextLine());\n      }\n      // and add the remaining lines without any mapping\n      node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n    }\n\n    // Copy sourcesContent into SourceNode\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aRelativePath != null) {\n          sourceFile = util.join(aRelativePath, sourceFile);\n        }\n        node.setSourceContent(sourceFile, content);\n      }\n    });\n\n    return node;\n\n    function addMappingWithCode(mapping, code) {\n      if (mapping === null || mapping.source === undefined) {\n        node.add(code);\n      } else {\n        var source = aRelativePath\n          ? util.join(aRelativePath, mapping.source)\n          : mapping.source;\n        node.add(new SourceNode(mapping.originalLine,\n                                mapping.originalColumn,\n                                source,\n                                code,\n                                mapping.name));\n      }\n    }\n  };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n  if (Array.isArray(aChunk)) {\n    aChunk.forEach(function (chunk) {\n      this.add(chunk);\n    }, this);\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    if (aChunk) {\n      this.children.push(aChunk);\n    }\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n  if (Array.isArray(aChunk)) {\n    for (var i = aChunk.length-1; i >= 0; i--) {\n      this.prepend(aChunk[i]);\n    }\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    this.children.unshift(aChunk);\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n  var chunk;\n  for (var i = 0, len = this.children.length; i < len; i++) {\n    chunk = this.children[i];\n    if (chunk[isSourceNode]) {\n      chunk.walk(aFn);\n    }\n    else {\n      if (chunk !== '') {\n        aFn(chunk, { source: this.source,\n                     line: this.line,\n                     column: this.column,\n                     name: this.name });\n      }\n    }\n  }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n  var newChildren;\n  var i;\n  var len = this.children.length;\n  if (len > 0) {\n    newChildren = [];\n    for (i = 0; i < len-1; i++) {\n      newChildren.push(this.children[i]);\n      newChildren.push(aSep);\n    }\n    newChildren.push(this.children[i]);\n    this.children = newChildren;\n  }\n  return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n  var lastChild = this.children[this.children.length - 1];\n  if (lastChild[isSourceNode]) {\n    lastChild.replaceRight(aPattern, aReplacement);\n  }\n  else if (typeof lastChild === 'string') {\n    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n  }\n  else {\n    this.children.push(''.replace(aPattern, aReplacement));\n  }\n  return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n  };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n  function SourceNode_walkSourceContents(aFn) {\n    for (var i = 0, len = this.children.length; i < len; i++) {\n      if (this.children[i][isSourceNode]) {\n        this.children[i].walkSourceContents(aFn);\n      }\n    }\n\n    var sources = Object.keys(this.sourceContents);\n    for (var i = 0, len = sources.length; i < len; i++) {\n      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n    }\n  };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n  var str = \"\";\n  this.walk(function (chunk) {\n    str += chunk;\n  });\n  return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n  var generated = {\n    code: \"\",\n    line: 1,\n    column: 0\n  };\n  var map = new SourceMapGenerator(aArgs);\n  var sourceMappingActive = false;\n  var lastOriginalSource = null;\n  var lastOriginalLine = null;\n  var lastOriginalColumn = null;\n  var lastOriginalName = null;\n  this.walk(function (chunk, original) {\n    generated.code += chunk;\n    if (original.source !== null\n        && original.line !== null\n        && original.column !== null) {\n      if(lastOriginalSource !== original.source\n         || lastOriginalLine !== original.line\n         || lastOriginalColumn !== original.column\n         || lastOriginalName !== original.name) {\n        map.addMapping({\n          source: original.source,\n          original: {\n            line: original.line,\n            column: original.column\n          },\n          generated: {\n            line: generated.line,\n            column: generated.column\n          },\n          name: original.name\n        });\n      }\n      lastOriginalSource = original.source;\n      lastOriginalLine = original.line;\n      lastOriginalColumn = original.column;\n      lastOriginalName = original.name;\n      sourceMappingActive = true;\n    } else if (sourceMappingActive) {\n      map.addMapping({\n        generated: {\n          line: generated.line,\n          column: generated.column\n        }\n      });\n      lastOriginalSource = null;\n      sourceMappingActive = false;\n    }\n    for (var idx = 0, length = chunk.length; idx < length; idx++) {\n      if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n        generated.line++;\n        generated.column = 0;\n        // Mappings end at eol\n        if (idx + 1 === length) {\n          lastOriginalSource = null;\n          sourceMappingActive = false;\n        } else if (sourceMappingActive) {\n          map.addMapping({\n            source: original.source,\n            original: {\n              line: original.line,\n              column: original.column\n            },\n            generated: {\n              line: generated.line,\n              column: generated.column\n            },\n            name: original.name\n          });\n        }\n      } else {\n        generated.column++;\n      }\n    }\n  });\n  this.walkSourceContents(function (sourceFile, sourceContent) {\n    map.setSourceContent(sourceFile, sourceContent);\n  });\n\n  return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = warnOnce;\nvar printed = {};\n\nfunction warnOnce(message) {\n  if (printed[message]) return;\n  printed[message] = true;\n\n  if (typeof console !== 'undefined' && console.warn) {\n    console.warn(message);\n  }\n}\n\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm4tb25jZS5lczYiXSwibmFtZXMiOlsicHJpbnRlZCIsIndhcm5PbmNlIiwibWVzc2FnZSIsImNvbnNvbGUiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBSUEsT0FBTyxHQUFHLEVBQWQ7O0FBRWUsU0FBU0MsUUFBVCxDQUFtQkMsT0FBbkIsRUFBNEI7QUFDekMsTUFBSUYsT0FBTyxDQUFDRSxPQUFELENBQVgsRUFBc0I7QUFDdEJGLEVBQUFBLE9BQU8sQ0FBQ0UsT0FBRCxDQUFQLEdBQW1CLElBQW5COztBQUVBLE1BQUksT0FBT0MsT0FBUCxLQUFtQixXQUFuQixJQUFrQ0EsT0FBTyxDQUFDQyxJQUE5QyxFQUFvRDtBQUNsREQsSUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWFGLE9BQWI7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsibGV0IHByaW50ZWQgPSB7IH1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gd2Fybk9uY2UgKG1lc3NhZ2UpIHtcbiAgaWYgKHByaW50ZWRbbWVzc2FnZV0pIHJldHVyblxuICBwcmludGVkW21lc3NhZ2VdID0gdHJ1ZVxuXG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgY29uc29sZS53YXJuKG1lc3NhZ2UpXG4gIH1cbn1cbiJdLCJmaWxlIjoid2Fybi1vbmNlLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _warning = _interopRequireDefault(require(\"./warning\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\n/**\n * Provides the result of the PostCSS transformations.\n *\n * A Result instance is returned by {@link LazyResult#then}\n * or {@link Root#toResult} methods.\n *\n * @example\n * postcss([autoprefixer]).process(css).then(result => {\n *  console.log(result.css)\n * })\n *\n * @example\n * const result2 = postcss.parse(css).toResult()\n */\nvar Result = /*#__PURE__*/function () {\n  /**\n   * @param {Processor} processor Processor used for this transformation.\n   * @param {Root}      root      Root node after all transformations.\n   * @param {processOptions} opts Options from the {@link Processor#process}\n   *                              or {@link Root#toResult}.\n   */\n  function Result(processor, root, opts) {\n    /**\n     * The Processor instance used for this transformation.\n     *\n     * @type {Processor}\n     *\n     * @example\n     * for (const plugin of result.processor.plugins) {\n     *   if (plugin.postcssPlugin === 'postcss-bad') {\n     *     throw 'postcss-good is incompatible with postcss-bad'\n     *   }\n     * })\n     */\n    this.processor = processor;\n    /**\n     * Contains messages from plugins (e.g., warnings or custom messages).\n     * Each message should have type and plugin properties.\n     *\n     * @type {Message[]}\n     *\n     * @example\n     * postcss.plugin('postcss-min-browser', () => {\n     *   return (root, result) => {\n     *     const browsers = detectMinBrowsersByCanIUse(root)\n     *     result.messages.push({\n     *       type: 'min-browser',\n     *       plugin: 'postcss-min-browser',\n     *       browsers\n     *     })\n     *   }\n     * })\n     */\n\n    this.messages = [];\n    /**\n     * Root node after all transformations.\n     *\n     * @type {Root}\n     *\n     * @example\n     * root.toResult().root === root\n     */\n\n    this.root = root;\n    /**\n     * Options from the {@link Processor#process} or {@link Root#toResult} call\n     * that produced this Result instance.\n     *\n     * @type {processOptions}\n     *\n     * @example\n     * root.toResult(opts).opts === opts\n     */\n\n    this.opts = opts;\n    /**\n     * A CSS string representing of {@link Result#root}.\n     *\n     * @type {string}\n     *\n     * @example\n     * postcss.parse('a{}').toResult().css //=> \"a{}\"\n     */\n\n    this.css = undefined;\n    /**\n     * An instance of `SourceMapGenerator` class from the `source-map` library,\n     * representing changes to the {@link Result#root} instance.\n     *\n     * @type {SourceMapGenerator}\n     *\n     * @example\n     * result.map.toJSON() //=> { version: 3, file: 'a.css', … }\n     *\n     * @example\n     * if (result.map) {\n     *   fs.writeFileSync(result.opts.to + '.map', result.map.toString())\n     * }\n     */\n\n    this.map = undefined;\n  }\n  /**\n   * Returns for @{link Result#css} content.\n   *\n   * @example\n   * result + '' === result.css\n   *\n   * @return {string} String representing of {@link Result#root}.\n   */\n\n\n  var _proto = Result.prototype;\n\n  _proto.toString = function toString() {\n    return this.css;\n  }\n  /**\n   * Creates an instance of {@link Warning} and adds it\n   * to {@link Result#messages}.\n   *\n   * @param {string} text        Warning message.\n   * @param {Object} [opts]      Warning options.\n   * @param {Node}   opts.node   CSS node that caused the warning.\n   * @param {string} opts.word   Word in CSS source that caused the warning.\n   * @param {number} opts.index  Index in CSS node string that caused\n   *                             the warning.\n   * @param {string} opts.plugin Name of the plugin that created\n   *                             this warning. {@link Result#warn} fills\n   *                             this property automatically.\n   *\n   * @return {Warning} Created warning.\n   */\n  ;\n\n  _proto.warn = function warn(text, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin;\n      }\n    }\n\n    var warning = new _warning.default(text, opts);\n    this.messages.push(warning);\n    return warning;\n  }\n  /**\n     * Returns warnings from plugins. Filters {@link Warning} instances\n     * from {@link Result#messages}.\n     *\n     * @example\n     * result.warnings().forEach(warn => {\n     *   console.warn(warn.toString())\n     * })\n     *\n     * @return {Warning[]} Warnings from plugins.\n     */\n  ;\n\n  _proto.warnings = function warnings() {\n    return this.messages.filter(function (i) {\n      return i.type === 'warning';\n    });\n  }\n  /**\n   * An alias for the {@link Result#css} property.\n   * Use it with syntaxes that generate non-CSS output.\n   *\n   * @type {string}\n   *\n   * @example\n   * result.css === result.content\n   */\n  ;\n\n  _createClass(Result, [{\n    key: \"content\",\n    get: function get() {\n      return this.css;\n    }\n  }]);\n\n  return Result;\n}();\n\nvar _default = Result;\n/**\n * @typedef  {object} Message\n * @property {string} type   Message type.\n * @property {string} plugin Source PostCSS plugin name.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3VsdC5lczYiXSwibmFtZXMiOlsiUmVzdWx0IiwicHJvY2Vzc29yIiwicm9vdCIsIm9wdHMiLCJtZXNzYWdlcyIsImNzcyIsInVuZGVmaW5lZCIsIm1hcCIsInRvU3RyaW5nIiwid2FybiIsInRleHQiLCJwbHVnaW4iLCJsYXN0UGx1Z2luIiwicG9zdGNzc1BsdWdpbiIsIndhcm5pbmciLCJXYXJuaW5nIiwicHVzaCIsIndhcm5pbmdzIiwiZmlsdGVyIiwiaSIsInR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O0lBY01BLE07QUFDSjs7Ozs7O0FBTUEsa0JBQWFDLFNBQWIsRUFBd0JDLElBQXhCLEVBQThCQyxJQUE5QixFQUFvQztBQUNsQzs7Ozs7Ozs7Ozs7O0FBWUEsU0FBS0YsU0FBTCxHQUFpQkEsU0FBakI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFLRyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0E7Ozs7Ozs7OztBQVFBLFNBQUtGLElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7Ozs7O0FBU0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0E7Ozs7Ozs7OztBQVFBLFNBQUtFLEdBQUwsR0FBV0MsU0FBWDtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFLQyxHQUFMLEdBQVdELFNBQVg7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7U0FRQUUsUSxHQUFBLG9CQUFZO0FBQ1YsV0FBTyxLQUFLSCxHQUFaO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBZ0JBSSxJLEdBQUEsY0FBTUMsSUFBTixFQUFZUCxJQUFaLEVBQXdCO0FBQUEsUUFBWkEsSUFBWTtBQUFaQSxNQUFBQSxJQUFZLEdBQUwsRUFBSztBQUFBOztBQUN0QixRQUFJLENBQUNBLElBQUksQ0FBQ1EsTUFBVixFQUFrQjtBQUNoQixVQUFJLEtBQUtDLFVBQUwsSUFBbUIsS0FBS0EsVUFBTCxDQUFnQkMsYUFBdkMsRUFBc0Q7QUFDcERWLFFBQUFBLElBQUksQ0FBQ1EsTUFBTCxHQUFjLEtBQUtDLFVBQUwsQ0FBZ0JDLGFBQTlCO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJQyxPQUFPLEdBQUcsSUFBSUMsZ0JBQUosQ0FBWUwsSUFBWixFQUFrQlAsSUFBbEIsQ0FBZDtBQUNBLFNBQUtDLFFBQUwsQ0FBY1ksSUFBZCxDQUFtQkYsT0FBbkI7QUFFQSxXQUFPQSxPQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7OztTQVdBRyxRLEdBQUEsb0JBQVk7QUFDVixXQUFPLEtBQUtiLFFBQUwsQ0FBY2MsTUFBZCxDQUFxQixVQUFBQyxDQUFDO0FBQUEsYUFBSUEsQ0FBQyxDQUFDQyxJQUFGLEtBQVcsU0FBZjtBQUFBLEtBQXRCLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7O3dCQVNlO0FBQ2IsYUFBTyxLQUFLZixHQUFaO0FBQ0Q7Ozs7OztlQUdZTCxNO0FBRWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV2FybmluZyBmcm9tICcuL3dhcm5pbmcnXG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIHJlc3VsdCBvZiB0aGUgUG9zdENTUyB0cmFuc2Zvcm1hdGlvbnMuXG4gKlxuICogQSBSZXN1bHQgaW5zdGFuY2UgaXMgcmV0dXJuZWQgYnkge0BsaW5rIExhenlSZXN1bHQjdGhlbn1cbiAqIG9yIHtAbGluayBSb290I3RvUmVzdWx0fSBtZXRob2RzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcykudGhlbihyZXN1bHQgPT4ge1xuICogIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gKiB9KVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQyID0gcG9zdGNzcy5wYXJzZShjc3MpLnRvUmVzdWx0KClcbiAqL1xuY2xhc3MgUmVzdWx0IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7UHJvY2Vzc29yfSBwcm9jZXNzb3IgUHJvY2Vzc29yIHVzZWQgZm9yIHRoaXMgdHJhbnNmb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7Um9vdH0gICAgICByb290ICAgICAgUm9vdCBub2RlIGFmdGVyIGFsbCB0cmFuc2Zvcm1hdGlvbnMuXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IG9wdHMgT3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ige0BsaW5rIFJvb3QjdG9SZXN1bHR9LlxuICAgKi9cbiAgY29uc3RydWN0b3IgKHByb2Nlc3Nvciwgcm9vdCwgb3B0cykge1xuICAgIC8qKlxuICAgICAqIFRoZSBQcm9jZXNzb3IgaW5zdGFuY2UgdXNlZCBmb3IgdGhpcyB0cmFuc2Zvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtQcm9jZXNzb3J9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGZvciAoY29uc3QgcGx1Z2luIG9mIHJlc3VsdC5wcm9jZXNzb3IucGx1Z2lucykge1xuICAgICAqICAgaWYgKHBsdWdpbi5wb3N0Y3NzUGx1Z2luID09PSAncG9zdGNzcy1iYWQnKSB7XG4gICAgICogICAgIHRocm93ICdwb3N0Y3NzLWdvb2QgaXMgaW5jb21wYXRpYmxlIHdpdGggcG9zdGNzcy1iYWQnXG4gICAgICogICB9XG4gICAgICogfSlcbiAgICAgKi9cbiAgICB0aGlzLnByb2Nlc3NvciA9IHByb2Nlc3NvclxuICAgIC8qKlxuICAgICAqIENvbnRhaW5zIG1lc3NhZ2VzIGZyb20gcGx1Z2lucyAoZS5nLiwgd2FybmluZ3Mgb3IgY3VzdG9tIG1lc3NhZ2VzKS5cbiAgICAgKiBFYWNoIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgdHlwZSBhbmQgcGx1Z2luIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7TWVzc2FnZVtdfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1taW4tYnJvd3NlcicsICgpID0+IHtcbiAgICAgKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gICAgICogICAgIGNvbnN0IGJyb3dzZXJzID0gZGV0ZWN0TWluQnJvd3NlcnNCeUNhbklVc2Uocm9vdClcbiAgICAgKiAgICAgcmVzdWx0Lm1lc3NhZ2VzLnB1c2goe1xuICAgICAqICAgICAgIHR5cGU6ICdtaW4tYnJvd3NlcicsXG4gICAgICogICAgICAgcGx1Z2luOiAncG9zdGNzcy1taW4tYnJvd3NlcicsXG4gICAgICogICAgICAgYnJvd3NlcnNcbiAgICAgKiAgICAgfSlcbiAgICAgKiAgIH1cbiAgICAgKiB9KVxuICAgICAqL1xuICAgIHRoaXMubWVzc2FnZXMgPSBbXVxuICAgIC8qKlxuICAgICAqIFJvb3Qgbm9kZSBhZnRlciBhbGwgdHJhbnNmb3JtYXRpb25zLlxuICAgICAqXG4gICAgICogQHR5cGUge1Jvb3R9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3QudG9SZXN1bHQoKS5yb290ID09PSByb290XG4gICAgICovXG4gICAgdGhpcy5yb290ID0gcm9vdFxuICAgIC8qKlxuICAgICAqIE9wdGlvbnMgZnJvbSB0aGUge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBvciB7QGxpbmsgUm9vdCN0b1Jlc3VsdH0gY2FsbFxuICAgICAqIHRoYXQgcHJvZHVjZWQgdGhpcyBSZXN1bHQgaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7cHJvY2Vzc09wdGlvbnN9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3QudG9SZXN1bHQob3B0cykub3B0cyA9PT0gb3B0c1xuICAgICAqL1xuICAgIHRoaXMub3B0cyA9IG9wdHNcbiAgICAvKipcbiAgICAgKiBBIENTUyBzdHJpbmcgcmVwcmVzZW50aW5nIG9mIHtAbGluayBSZXN1bHQjcm9vdH0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBwb3N0Y3NzLnBhcnNlKCdhe30nKS50b1Jlc3VsdCgpLmNzcyAvLz0+IFwiYXt9XCJcbiAgICAgKi9cbiAgICB0aGlzLmNzcyA9IHVuZGVmaW5lZFxuICAgIC8qKlxuICAgICAqIEFuIGluc3RhbmNlIG9mIGBTb3VyY2VNYXBHZW5lcmF0b3JgIGNsYXNzIGZyb20gdGhlIGBzb3VyY2UtbWFwYCBsaWJyYXJ5LFxuICAgICAqIHJlcHJlc2VudGluZyBjaGFuZ2VzIHRvIHRoZSB7QGxpbmsgUmVzdWx0I3Jvb3R9IGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHR5cGUge1NvdXJjZU1hcEdlbmVyYXRvcn1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcmVzdWx0Lm1hcC50b0pTT04oKSAvLz0+IHsgdmVyc2lvbjogMywgZmlsZTogJ2EuY3NzJywg4oCmIH1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogaWYgKHJlc3VsdC5tYXApIHtcbiAgICAgKiAgIGZzLndyaXRlRmlsZVN5bmMocmVzdWx0Lm9wdHMudG8gKyAnLm1hcCcsIHJlc3VsdC5tYXAudG9TdHJpbmcoKSlcbiAgICAgKiB9XG4gICAgICovXG4gICAgdGhpcy5tYXAgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZvciBAe2xpbmsgUmVzdWx0I2Nzc30gY29udGVudC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcmVzdWx0ICsgJycgPT09IHJlc3VsdC5jc3NcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBTdHJpbmcgcmVwcmVzZW50aW5nIG9mIHtAbGluayBSZXN1bHQjcm9vdH0uXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3NzXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgV2FybmluZ30gYW5kIGFkZHMgaXRcbiAgICogdG8ge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgICBXYXJuaW5nIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gICAgICBXYXJuaW5nIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7Tm9kZX0gICBvcHRzLm5vZGUgICBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMud29yZCAgIFdvcmQgaW4gQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdHMuaW5kZXggIEluZGV4IGluIENTUyBub2RlIHN0cmluZyB0aGF0IGNhdXNlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHdhcm5pbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLnBsdWdpbiBOYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHdhcm5pbmcuIHtAbGluayBSZXN1bHQjd2Fybn0gZmlsbHNcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcHJvcGVydHkgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHJldHVybiB7V2FybmluZ30gQ3JlYXRlZCB3YXJuaW5nLlxuICAgKi9cbiAgd2FybiAodGV4dCwgb3B0cyA9IHsgfSkge1xuICAgIGlmICghb3B0cy5wbHVnaW4pIHtcbiAgICAgIGlmICh0aGlzLmxhc3RQbHVnaW4gJiYgdGhpcy5sYXN0UGx1Z2luLnBvc3Rjc3NQbHVnaW4pIHtcbiAgICAgICAgb3B0cy5wbHVnaW4gPSB0aGlzLmxhc3RQbHVnaW4ucG9zdGNzc1BsdWdpblxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB3YXJuaW5nID0gbmV3IFdhcm5pbmcodGV4dCwgb3B0cylcbiAgICB0aGlzLm1lc3NhZ2VzLnB1c2god2FybmluZylcblxuICAgIHJldHVybiB3YXJuaW5nXG4gIH1cblxuICAvKipcbiAgICAgKiBSZXR1cm5zIHdhcm5pbmdzIGZyb20gcGx1Z2lucy4gRmlsdGVycyB7QGxpbmsgV2FybmluZ30gaW5zdGFuY2VzXG4gICAgICogZnJvbSB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcmVzdWx0Lndhcm5pbmdzKCkuZm9yRWFjaCh3YXJuID0+IHtcbiAgICAgKiAgIGNvbnNvbGUud2Fybih3YXJuLnRvU3RyaW5nKCkpXG4gICAgICogfSlcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gV2FybmluZ3MgZnJvbSBwbHVnaW5zLlxuICAgICAqL1xuICB3YXJuaW5ncyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZXMuZmlsdGVyKGkgPT4gaS50eXBlID09PSAnd2FybmluZycpXG4gIH1cblxuICAvKipcbiAgICogQW4gYWxpYXMgZm9yIHRoZSB7QGxpbmsgUmVzdWx0I2Nzc30gcHJvcGVydHkuXG4gICAqIFVzZSBpdCB3aXRoIHN5bnRheGVzIHRoYXQgZ2VuZXJhdGUgbm9uLUNTUyBvdXRwdXQuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJlc3VsdC5jc3MgPT09IHJlc3VsdC5jb250ZW50XG4gICAqL1xuICBnZXQgY29udGVudCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3NzXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVzdWx0XG5cbi8qKlxuICogQHR5cGVkZWYgIHtvYmplY3R9IE1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlICAgTWVzc2FnZSB0eXBlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBsdWdpbiBTb3VyY2UgUG9zdENTUyBwbHVnaW4gbmFtZS5cbiAqL1xuIl0sImZpbGUiOiJyZXN1bHQuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Represents a plugin’s warning. It can be created using {@link Node#warn}.\n *\n * @example\n * if (decl.important) {\n *   decl.warn(result, 'Avoid !important', { word: '!important' })\n * }\n */\nvar Warning = /*#__PURE__*/function () {\n  /**\n   * @param {string} text        Warning message.\n   * @param {Object} [opts]      Warning options.\n   * @param {Node}   opts.node   CSS node that caused the warning.\n   * @param {string} opts.word   Word in CSS source that caused the warning.\n   * @param {number} opts.index  Index in CSS node string that caused\n   *                             the warning.\n   * @param {string} opts.plugin Name of the plugin that created\n   *                             this warning. {@link Result#warn} fills\n   *                             this property automatically.\n   */\n  function Warning(text, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    /**\n     * Type to filter warnings from {@link Result#messages}.\n     * Always equal to `\"warning\"`.\n     *\n     * @type {string}\n     *\n     * @example\n     * const nonWarning = result.messages.filter(i => i.type !== 'warning')\n     */\n    this.type = 'warning';\n    /**\n     * The warning message.\n     *\n     * @type {string}\n     *\n     * @example\n     * warning.text //=> 'Try to avoid !important'\n     */\n\n    this.text = text;\n\n    if (opts.node && opts.node.source) {\n      var pos = opts.node.positionBy(opts);\n      /**\n       * Line in the input file with this warning’s source.\n       * @type {number}\n       *\n       * @example\n       * warning.line //=> 5\n       */\n\n      this.line = pos.line;\n      /**\n       * Column in the input file with this warning’s source.\n       *\n       * @type {number}\n       *\n       * @example\n       * warning.column //=> 6\n       */\n\n      this.column = pos.column;\n    }\n\n    for (var opt in opts) {\n      this[opt] = opts[opt];\n    }\n  }\n  /**\n   * Returns a warning position and message.\n   *\n   * @example\n   * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'\n   *\n   * @return {string} Warning position and message.\n   */\n\n\n  var _proto = Warning.prototype;\n\n  _proto.toString = function toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        plugin: this.plugin,\n        index: this.index,\n        word: this.word\n      }).message;\n    }\n\n    if (this.plugin) {\n      return this.plugin + ': ' + this.text;\n    }\n\n    return this.text;\n  }\n  /**\n   * @memberof Warning#\n   * @member {string} plugin The name of the plugin that created\n   *                         it will fill this property automatically.\n   *                         this warning. When you call {@link Node#warn}\n   *\n   * @example\n   * warning.plugin //=> 'postcss-important'\n   */\n\n  /**\n   * @memberof Warning#\n   * @member {Node} node Contains the CSS node that caused the warning.\n   *\n   * @example\n   * warning.node.toString() //=> 'color: white !important'\n   */\n  ;\n\n  return Warning;\n}();\n\nvar _default = Warning;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm5pbmcuZXM2Il0sIm5hbWVzIjpbIldhcm5pbmciLCJ0ZXh0Iiwib3B0cyIsInR5cGUiLCJub2RlIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImxpbmUiLCJjb2x1bW4iLCJvcHQiLCJ0b1N0cmluZyIsImVycm9yIiwicGx1Z2luIiwiaW5kZXgiLCJ3b3JkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7SUFRTUEsTztBQUNKOzs7Ozs7Ozs7OztBQVdBLG1CQUFhQyxJQUFiLEVBQW1CQyxJQUFuQixFQUErQjtBQUFBLFFBQVpBLElBQVk7QUFBWkEsTUFBQUEsSUFBWSxHQUFMLEVBQUs7QUFBQTs7QUFDN0I7Ozs7Ozs7OztBQVNBLFNBQUtDLElBQUwsR0FBWSxTQUFaO0FBQ0E7Ozs7Ozs7OztBQVFBLFNBQUtGLElBQUwsR0FBWUEsSUFBWjs7QUFFQSxRQUFJQyxJQUFJLENBQUNFLElBQUwsSUFBYUYsSUFBSSxDQUFDRSxJQUFMLENBQVVDLE1BQTNCLEVBQW1DO0FBQ2pDLFVBQUlDLEdBQUcsR0FBR0osSUFBSSxDQUFDRSxJQUFMLENBQVVHLFVBQVYsQ0FBcUJMLElBQXJCLENBQVY7QUFDQTs7Ozs7Ozs7QUFPQSxXQUFLTSxJQUFMLEdBQVlGLEdBQUcsQ0FBQ0UsSUFBaEI7QUFDQTs7Ozs7Ozs7O0FBUUEsV0FBS0MsTUFBTCxHQUFjSCxHQUFHLENBQUNHLE1BQWxCO0FBQ0Q7O0FBRUQsU0FBSyxJQUFJQyxHQUFULElBQWdCUixJQUFoQjtBQUFzQixXQUFLUSxHQUFMLElBQVlSLElBQUksQ0FBQ1EsR0FBRCxDQUFoQjtBQUF0QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVFBQyxRLEdBQUEsb0JBQVk7QUFDVixRQUFJLEtBQUtQLElBQVQsRUFBZTtBQUNiLGFBQU8sS0FBS0EsSUFBTCxDQUFVUSxLQUFWLENBQWdCLEtBQUtYLElBQXJCLEVBQTJCO0FBQ2hDWSxRQUFBQSxNQUFNLEVBQUUsS0FBS0EsTUFEbUI7QUFFaENDLFFBQUFBLEtBQUssRUFBRSxLQUFLQSxLQUZvQjtBQUdoQ0MsUUFBQUEsSUFBSSxFQUFFLEtBQUtBO0FBSHFCLE9BQTNCLEVBSUpDLE9BSkg7QUFLRDs7QUFFRCxRQUFJLEtBQUtILE1BQVQsRUFBaUI7QUFDZixhQUFPLEtBQUtBLE1BQUwsR0FBYyxJQUFkLEdBQXFCLEtBQUtaLElBQWpDO0FBQ0Q7O0FBRUQsV0FBTyxLQUFLQSxJQUFaO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7Ozs7ZUFTYUQsTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwcmVzZW50cyBhIHBsdWdpbuKAmXMgd2FybmluZy4gSXQgY2FuIGJlIGNyZWF0ZWQgdXNpbmcge0BsaW5rIE5vZGUjd2Fybn0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGlmIChkZWNsLmltcG9ydGFudCkge1xuICogICBkZWNsLndhcm4ocmVzdWx0LCAnQXZvaWQgIWltcG9ydGFudCcsIHsgd29yZDogJyFpbXBvcnRhbnQnIH0pXG4gKiB9XG4gKi9cbmNsYXNzIFdhcm5pbmcge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgIFdhcm5pbmcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAgICAgIFdhcm5pbmcgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtOb2RlfSAgIG9wdHMubm9kZSAgIENTUyBub2RlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy53b3JkICAgV29yZCBpbiBDU1Mgc291cmNlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgSW5kZXggaW4gQ1NTIG5vZGUgc3RyaW5nIHRoYXQgY2F1c2VkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIE5hbWUgb2YgdGhlIHBsdWdpbiB0aGF0IGNyZWF0ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwcm9wZXJ0eSBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgY29uc3RydWN0b3IgKHRleHQsIG9wdHMgPSB7IH0pIHtcbiAgICAvKipcbiAgICAgKiBUeXBlIHRvIGZpbHRlciB3YXJuaW5ncyBmcm9tIHtAbGluayBSZXN1bHQjbWVzc2FnZXN9LlxuICAgICAqIEFsd2F5cyBlcXVhbCB0byBgXCJ3YXJuaW5nXCJgLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgbm9uV2FybmluZyA9IHJlc3VsdC5tZXNzYWdlcy5maWx0ZXIoaSA9PiBpLnR5cGUgIT09ICd3YXJuaW5nJylcbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSAnd2FybmluZydcbiAgICAvKipcbiAgICAgKiBUaGUgd2FybmluZyBtZXNzYWdlLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2FybmluZy50ZXh0IC8vPT4gJ1RyeSB0byBhdm9pZCAhaW1wb3J0YW50J1xuICAgICAqL1xuICAgIHRoaXMudGV4dCA9IHRleHRcblxuICAgIGlmIChvcHRzLm5vZGUgJiYgb3B0cy5ub2RlLnNvdXJjZSkge1xuICAgICAgbGV0IHBvcyA9IG9wdHMubm9kZS5wb3NpdGlvbkJ5KG9wdHMpXG4gICAgICAvKipcbiAgICAgICAqIExpbmUgaW4gdGhlIGlucHV0IGZpbGUgd2l0aCB0aGlzIHdhcm5pbmfigJlzIHNvdXJjZS5cbiAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIHdhcm5pbmcubGluZSAvLz0+IDVcbiAgICAgICAqL1xuICAgICAgdGhpcy5saW5lID0gcG9zLmxpbmVcbiAgICAgIC8qKlxuICAgICAgICogQ29sdW1uIGluIHRoZSBpbnB1dCBmaWxlIHdpdGggdGhpcyB3YXJuaW5n4oCZcyBzb3VyY2UuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogd2FybmluZy5jb2x1bW4gLy89PiA2XG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29sdW1uID0gcG9zLmNvbHVtblxuICAgIH1cblxuICAgIGZvciAobGV0IG9wdCBpbiBvcHRzKSB0aGlzW29wdF0gPSBvcHRzW29wdF1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgd2FybmluZyBwb3NpdGlvbiBhbmQgbWVzc2FnZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogd2FybmluZy50b1N0cmluZygpIC8vPT4gJ3Bvc3Rjc3MtbGludDphLmNzczoxMDoxNDogQXZvaWQgIWltcG9ydGFudCdcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBXYXJuaW5nIHBvc2l0aW9uIGFuZCBtZXNzYWdlLlxuICAgKi9cbiAgdG9TdHJpbmcgKCkge1xuICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUuZXJyb3IodGhpcy50ZXh0LCB7XG4gICAgICAgIHBsdWdpbjogdGhpcy5wbHVnaW4sXG4gICAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgICB3b3JkOiB0aGlzLndvcmRcbiAgICAgIH0pLm1lc3NhZ2VcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wbHVnaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnBsdWdpbiArICc6ICcgKyB0aGlzLnRleHRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZXh0XG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFdhcm5pbmcjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcGx1Z2luIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGl0IHdpbGwgZmlsbCB0aGlzIHByb3BlcnR5IGF1dG9tYXRpY2FsbHkuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4gV2hlbiB5b3UgY2FsbCB7QGxpbmsgTm9kZSN3YXJufVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB3YXJuaW5nLnBsdWdpbiAvLz0+ICdwb3N0Y3NzLWltcG9ydGFudCdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXYXJuaW5nI1xuICAgKiBAbWVtYmVyIHtOb2RlfSBub2RlIENvbnRhaW5zIHRoZSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogd2FybmluZy5ub2RlLnRvU3RyaW5nKCkgLy89PiAnY29sb3I6IHdoaXRlICFpbXBvcnRhbnQnXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBXYXJuaW5nXG4iXSwiZmlsZSI6Indhcm5pbmcuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _declaration = _interopRequireDefault(require(\"./declaration\"));\n\nvar _tokenize = _interopRequireDefault(require(\"./tokenize\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _atRule = _interopRequireDefault(require(\"./at-rule\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nvar _rule = _interopRequireDefault(require(\"./rule\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Parser = /*#__PURE__*/function () {\n  function Parser(input) {\n    this.input = input;\n    this.root = new _root.default();\n    this.current = this.root;\n    this.spaces = '';\n    this.semicolon = false;\n    this.createTokenizer();\n    this.root.source = {\n      input: input,\n      start: {\n        line: 1,\n        column: 1\n      }\n    };\n  }\n\n  var _proto = Parser.prototype;\n\n  _proto.createTokenizer = function createTokenizer() {\n    this.tokenizer = (0, _tokenize.default)(this.input);\n  };\n\n  _proto.parse = function parse() {\n    var token;\n\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n\n      switch (token[0]) {\n        case 'space':\n          this.spaces += token[1];\n          break;\n\n        case ';':\n          this.freeSemicolon(token);\n          break;\n\n        case '}':\n          this.end(token);\n          break;\n\n        case 'comment':\n          this.comment(token);\n          break;\n\n        case 'at-word':\n          this.atrule(token);\n          break;\n\n        case '{':\n          this.emptyRule(token);\n          break;\n\n        default:\n          this.other(token);\n          break;\n      }\n    }\n\n    this.endFile();\n  };\n\n  _proto.comment = function comment(token) {\n    var node = new _comment.default();\n    this.init(node, token[2], token[3]);\n    node.source.end = {\n      line: token[4],\n      column: token[5]\n    };\n    var text = token[1].slice(2, -2);\n\n    if (/^\\s*$/.test(text)) {\n      node.text = '';\n      node.raws.left = text;\n      node.raws.right = '';\n    } else {\n      var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n      node.text = match[2];\n      node.raws.left = match[1];\n      node.raws.right = match[3];\n    }\n  };\n\n  _proto.emptyRule = function emptyRule(token) {\n    var node = new _rule.default();\n    this.init(node, token[2], token[3]);\n    node.selector = '';\n    node.raws.between = '';\n    this.current = node;\n  };\n\n  _proto.other = function other(start) {\n    var end = false;\n    var type = null;\n    var colon = false;\n    var bracket = null;\n    var brackets = [];\n    var tokens = [];\n    var token = start;\n\n    while (token) {\n      type = token[0];\n      tokens.push(token);\n\n      if (type === '(' || type === '[') {\n        if (!bracket) bracket = token;\n        brackets.push(type === '(' ? ')' : ']');\n      } else if (brackets.length === 0) {\n        if (type === ';') {\n          if (colon) {\n            this.decl(tokens);\n            return;\n          } else {\n            break;\n          }\n        } else if (type === '{') {\n          this.rule(tokens);\n          return;\n        } else if (type === '}') {\n          this.tokenizer.back(tokens.pop());\n          end = true;\n          break;\n        } else if (type === ':') {\n          colon = true;\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n        if (brackets.length === 0) bracket = null;\n      }\n\n      token = this.tokenizer.nextToken();\n    }\n\n    if (this.tokenizer.endOfFile()) end = true;\n    if (brackets.length > 0) this.unclosedBracket(bracket);\n\n    if (end && colon) {\n      while (tokens.length) {\n        token = tokens[tokens.length - 1][0];\n        if (token !== 'space' && token !== 'comment') break;\n        this.tokenizer.back(tokens.pop());\n      }\n\n      this.decl(tokens);\n    } else {\n      this.unknownWord(tokens);\n    }\n  };\n\n  _proto.rule = function rule(tokens) {\n    tokens.pop();\n    var node = new _rule.default();\n    this.init(node, tokens[0][2], tokens[0][3]);\n    node.raws.between = this.spacesAndCommentsFromEnd(tokens);\n    this.raw(node, 'selector', tokens);\n    this.current = node;\n  };\n\n  _proto.decl = function decl(tokens) {\n    var node = new _declaration.default();\n    this.init(node);\n    var last = tokens[tokens.length - 1];\n\n    if (last[0] === ';') {\n      this.semicolon = true;\n      tokens.pop();\n    }\n\n    if (last[4]) {\n      node.source.end = {\n        line: last[4],\n        column: last[5]\n      };\n    } else {\n      node.source.end = {\n        line: last[2],\n        column: last[3]\n      };\n    }\n\n    while (tokens[0][0] !== 'word') {\n      if (tokens.length === 1) this.unknownWord(tokens);\n      node.raws.before += tokens.shift()[1];\n    }\n\n    node.source.start = {\n      line: tokens[0][2],\n      column: tokens[0][3]\n    };\n    node.prop = '';\n\n    while (tokens.length) {\n      var type = tokens[0][0];\n\n      if (type === ':' || type === 'space' || type === 'comment') {\n        break;\n      }\n\n      node.prop += tokens.shift()[1];\n    }\n\n    node.raws.between = '';\n    var token;\n\n    while (tokens.length) {\n      token = tokens.shift();\n\n      if (token[0] === ':') {\n        node.raws.between += token[1];\n        break;\n      } else {\n        if (token[0] === 'word' && /\\w/.test(token[1])) {\n          this.unknownWord([token]);\n        }\n\n        node.raws.between += token[1];\n      }\n    }\n\n    if (node.prop[0] === '_' || node.prop[0] === '*') {\n      node.raws.before += node.prop[0];\n      node.prop = node.prop.slice(1);\n    }\n\n    node.raws.between += this.spacesAndCommentsFromStart(tokens);\n    this.precheckMissedSemicolon(tokens);\n\n    for (var i = tokens.length - 1; i > 0; i--) {\n      token = tokens[i];\n\n      if (token[1].toLowerCase() === '!important') {\n        node.important = true;\n        var string = this.stringFrom(tokens, i);\n        string = this.spacesFromEnd(tokens) + string;\n        if (string !== ' !important') node.raws.important = string;\n        break;\n      } else if (token[1].toLowerCase() === 'important') {\n        var cache = tokens.slice(0);\n        var str = '';\n\n        for (var j = i; j > 0; j--) {\n          var _type = cache[j][0];\n\n          if (str.trim().indexOf('!') === 0 && _type !== 'space') {\n            break;\n          }\n\n          str = cache.pop()[1] + str;\n        }\n\n        if (str.trim().indexOf('!') === 0) {\n          node.important = true;\n          node.raws.important = str;\n          tokens = cache;\n        }\n      }\n\n      if (token[0] !== 'space' && token[0] !== 'comment') {\n        break;\n      }\n    }\n\n    this.raw(node, 'value', tokens);\n    if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens);\n  };\n\n  _proto.atrule = function atrule(token) {\n    var node = new _atRule.default();\n    node.name = token[1].slice(1);\n\n    if (node.name === '') {\n      this.unnamedAtrule(node, token);\n    }\n\n    this.init(node, token[2], token[3]);\n    var prev;\n    var shift;\n    var last = false;\n    var open = false;\n    var params = [];\n\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n\n      if (token[0] === ';') {\n        node.source.end = {\n          line: token[2],\n          column: token[3]\n        };\n        this.semicolon = true;\n        break;\n      } else if (token[0] === '{') {\n        open = true;\n        break;\n      } else if (token[0] === '}') {\n        if (params.length > 0) {\n          shift = params.length - 1;\n          prev = params[shift];\n\n          while (prev && prev[0] === 'space') {\n            prev = params[--shift];\n          }\n\n          if (prev) {\n            node.source.end = {\n              line: prev[4],\n              column: prev[5]\n            };\n          }\n        }\n\n        this.end(token);\n        break;\n      } else {\n        params.push(token);\n      }\n\n      if (this.tokenizer.endOfFile()) {\n        last = true;\n        break;\n      }\n    }\n\n    node.raws.between = this.spacesAndCommentsFromEnd(params);\n\n    if (params.length) {\n      node.raws.afterName = this.spacesAndCommentsFromStart(params);\n      this.raw(node, 'params', params);\n\n      if (last) {\n        token = params[params.length - 1];\n        node.source.end = {\n          line: token[4],\n          column: token[5]\n        };\n        this.spaces = node.raws.between;\n        node.raws.between = '';\n      }\n    } else {\n      node.raws.afterName = '';\n      node.params = '';\n    }\n\n    if (open) {\n      node.nodes = [];\n      this.current = node;\n    }\n  };\n\n  _proto.end = function end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n\n    this.semicolon = false;\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n    this.spaces = '';\n\n    if (this.current.parent) {\n      this.current.source.end = {\n        line: token[2],\n        column: token[3]\n      };\n      this.current = this.current.parent;\n    } else {\n      this.unexpectedClose(token);\n    }\n  };\n\n  _proto.endFile = function endFile() {\n    if (this.current.parent) this.unclosedBlock();\n\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n  };\n\n  _proto.freeSemicolon = function freeSemicolon(token) {\n    this.spaces += token[1];\n\n    if (this.current.nodes) {\n      var prev = this.current.nodes[this.current.nodes.length - 1];\n\n      if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces;\n        this.spaces = '';\n      }\n    }\n  } // Helpers\n  ;\n\n  _proto.init = function init(node, line, column) {\n    this.current.push(node);\n    node.source = {\n      start: {\n        line: line,\n        column: column\n      },\n      input: this.input\n    };\n    node.raws.before = this.spaces;\n    this.spaces = '';\n    if (node.type !== 'comment') this.semicolon = false;\n  };\n\n  _proto.raw = function raw(node, prop, tokens) {\n    var token, type;\n    var length = tokens.length;\n    var value = '';\n    var clean = true;\n    var next, prev;\n    var pattern = /^([.|#])?([\\w])+/i;\n\n    for (var i = 0; i < length; i += 1) {\n      token = tokens[i];\n      type = token[0];\n\n      if (type === 'comment' && node.type === 'rule') {\n        prev = tokens[i - 1];\n        next = tokens[i + 1];\n\n        if (prev[0] !== 'space' && next[0] !== 'space' && pattern.test(prev[1]) && pattern.test(next[1])) {\n          value += token[1];\n        } else {\n          clean = false;\n        }\n\n        continue;\n      }\n\n      if (type === 'comment' || type === 'space' && i === length - 1) {\n        clean = false;\n      } else {\n        value += token[1];\n      }\n    }\n\n    if (!clean) {\n      var raw = tokens.reduce(function (all, i) {\n        return all + i[1];\n      }, '');\n      node.raws[prop] = {\n        value: value,\n        raw: raw\n      };\n    }\n\n    node[prop] = value;\n  };\n\n  _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n    var lastTokenType;\n    var spaces = '';\n\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== 'space' && lastTokenType !== 'comment') break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n\n    return spaces;\n  };\n\n  _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n    var next;\n    var spaces = '';\n\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== 'space' && next !== 'comment') break;\n      spaces += tokens.shift()[1];\n    }\n\n    return spaces;\n  };\n\n  _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n    var lastTokenType;\n    var spaces = '';\n\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== 'space') break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n\n    return spaces;\n  };\n\n  _proto.stringFrom = function stringFrom(tokens, from) {\n    var result = '';\n\n    for (var i = from; i < tokens.length; i++) {\n      result += tokens[i][1];\n    }\n\n    tokens.splice(from, tokens.length - from);\n    return result;\n  };\n\n  _proto.colon = function colon(tokens) {\n    var brackets = 0;\n    var token, type, prev;\n\n    for (var i = 0; i < tokens.length; i++) {\n      token = tokens[i];\n      type = token[0];\n\n      if (type === '(') {\n        brackets += 1;\n      }\n\n      if (type === ')') {\n        brackets -= 1;\n      }\n\n      if (brackets === 0 && type === ':') {\n        if (!prev) {\n          this.doubleColon(token);\n        } else if (prev[0] === 'word' && prev[1] === 'progid') {\n          continue;\n        } else {\n          return i;\n        }\n      }\n\n      prev = token;\n    }\n\n    return false;\n  } // Errors\n  ;\n\n  _proto.unclosedBracket = function unclosedBracket(bracket) {\n    throw this.input.error('Unclosed bracket', bracket[2], bracket[3]);\n  };\n\n  _proto.unknownWord = function unknownWord(tokens) {\n    throw this.input.error('Unknown word', tokens[0][2], tokens[0][3]);\n  };\n\n  _proto.unexpectedClose = function unexpectedClose(token) {\n    throw this.input.error('Unexpected }', token[2], token[3]);\n  };\n\n  _proto.unclosedBlock = function unclosedBlock() {\n    var pos = this.current.source.start;\n    throw this.input.error('Unclosed block', pos.line, pos.column);\n  };\n\n  _proto.doubleColon = function doubleColon(token) {\n    throw this.input.error('Double colon', token[2], token[3]);\n  };\n\n  _proto.unnamedAtrule = function unnamedAtrule(node, token) {\n    throw this.input.error('At-rule without name', token[2], token[3]);\n  };\n\n  _proto.precheckMissedSemicolon = function precheckMissedSemicolon()\n  /* tokens */\n  {// Hook for Safe Parser\n  };\n\n  _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n    var colon = this.colon(tokens);\n    if (colon === false) return;\n    var founded = 0;\n    var token;\n\n    for (var j = colon - 1; j >= 0; j--) {\n      token = tokens[j];\n\n      if (token[0] !== 'space') {\n        founded += 1;\n        if (founded === 2) break;\n      }\n    }\n\n    throw this.input.error('Missed semicolon', token[2], token[3]);\n  };\n\n  return Parser;\n}();\n\nexports.default = Parser;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJyb290IiwiUm9vdCIsImN1cnJlbnQiLCJzcGFjZXMiLCJzZW1pY29sb24iLCJjcmVhdGVUb2tlbml6ZXIiLCJzb3VyY2UiLCJzdGFydCIsImxpbmUiLCJjb2x1bW4iLCJ0b2tlbml6ZXIiLCJwYXJzZSIsInRva2VuIiwiZW5kT2ZGaWxlIiwibmV4dFRva2VuIiwiZnJlZVNlbWljb2xvbiIsImVuZCIsImNvbW1lbnQiLCJhdHJ1bGUiLCJlbXB0eVJ1bGUiLCJvdGhlciIsImVuZEZpbGUiLCJub2RlIiwiQ29tbWVudCIsImluaXQiLCJ0ZXh0Iiwic2xpY2UiLCJ0ZXN0IiwicmF3cyIsImxlZnQiLCJyaWdodCIsIm1hdGNoIiwiUnVsZSIsInNlbGVjdG9yIiwiYmV0d2VlbiIsInR5cGUiLCJjb2xvbiIsImJyYWNrZXQiLCJicmFja2V0cyIsInRva2VucyIsInB1c2giLCJsZW5ndGgiLCJkZWNsIiwicnVsZSIsImJhY2siLCJwb3AiLCJ1bmNsb3NlZEJyYWNrZXQiLCJ1bmtub3duV29yZCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCIsInJhdyIsIkRlY2xhcmF0aW9uIiwibGFzdCIsImJlZm9yZSIsInNoaWZ0IiwicHJvcCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0IiwicHJlY2hlY2tNaXNzZWRTZW1pY29sb24iLCJpIiwidG9Mb3dlckNhc2UiLCJpbXBvcnRhbnQiLCJzdHJpbmciLCJzdHJpbmdGcm9tIiwic3BhY2VzRnJvbUVuZCIsImNhY2hlIiwic3RyIiwiaiIsInRyaW0iLCJpbmRleE9mIiwidmFsdWUiLCJjaGVja01pc3NlZFNlbWljb2xvbiIsIkF0UnVsZSIsIm5hbWUiLCJ1bm5hbWVkQXRydWxlIiwicHJldiIsIm9wZW4iLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJub2RlcyIsImFmdGVyIiwicGFyZW50IiwidW5leHBlY3RlZENsb3NlIiwidW5jbG9zZWRCbG9jayIsIm93blNlbWljb2xvbiIsImNsZWFuIiwibmV4dCIsInBhdHRlcm4iLCJyZWR1Y2UiLCJhbGwiLCJsYXN0VG9rZW5UeXBlIiwiZnJvbSIsInJlc3VsdCIsInNwbGljZSIsImRvdWJsZUNvbG9uIiwiZXJyb3IiLCJwb3MiLCJmb3VuZGVkIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0lBRXFCQSxNO0FBQ25CLGtCQUFhQyxLQUFiLEVBQW9CO0FBQ2xCLFNBQUtBLEtBQUwsR0FBYUEsS0FBYjtBQUVBLFNBQUtDLElBQUwsR0FBWSxJQUFJQyxhQUFKLEVBQVo7QUFDQSxTQUFLQyxPQUFMLEdBQWUsS0FBS0YsSUFBcEI7QUFDQSxTQUFLRyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsS0FBakI7QUFFQSxTQUFLQyxlQUFMO0FBQ0EsU0FBS0wsSUFBTCxDQUFVTSxNQUFWLEdBQW1CO0FBQUVQLE1BQUFBLEtBQUssRUFBTEEsS0FBRjtBQUFTUSxNQUFBQSxLQUFLLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFLENBQVI7QUFBV0MsUUFBQUEsTUFBTSxFQUFFO0FBQW5CO0FBQWhCLEtBQW5CO0FBQ0Q7Ozs7U0FFREosZSxHQUFBLDJCQUFtQjtBQUNqQixTQUFLSyxTQUFMLEdBQWlCLHVCQUFVLEtBQUtYLEtBQWYsQ0FBakI7QUFDRCxHOztTQUVEWSxLLEdBQUEsaUJBQVM7QUFDUCxRQUFJQyxLQUFKOztBQUNBLFdBQU8sQ0FBQyxLQUFLRixTQUFMLENBQWVHLFNBQWYsRUFBUixFQUFvQztBQUNsQ0QsTUFBQUEsS0FBSyxHQUFHLEtBQUtGLFNBQUwsQ0FBZUksU0FBZixFQUFSOztBQUVBLGNBQVFGLEtBQUssQ0FBQyxDQUFELENBQWI7QUFDRSxhQUFLLE9BQUw7QUFDRSxlQUFLVCxNQUFMLElBQWVTLEtBQUssQ0FBQyxDQUFELENBQXBCO0FBQ0E7O0FBRUYsYUFBSyxHQUFMO0FBQ0UsZUFBS0csYUFBTCxDQUFtQkgsS0FBbkI7QUFD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LENBQWhCLEVBQW1CO0FBQ3BCO0FBQ0Y7O0FBQ0QsVUFBTSxLQUFLaEcsS0FBTCxDQUFXOEYsS0FBWCxDQUFpQixrQkFBakIsRUFBcUNqRixLQUFLLENBQUMsQ0FBRCxDQUExQyxFQUErQ0EsS0FBSyxDQUFDLENBQUQsQ0FBcEQsQ0FBTjtBQUNELEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCB0b2tlbml6ZXIgZnJvbSAnLi90b2tlbml6ZSdcbmltcG9ydCBDb21tZW50IGZyb20gJy4vY29tbWVudCdcbmltcG9ydCBBdFJ1bGUgZnJvbSAnLi9hdC1ydWxlJ1xuaW1wb3J0IFJvb3QgZnJvbSAnLi9yb290J1xuaW1wb3J0IFJ1bGUgZnJvbSAnLi9ydWxlJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvciAoaW5wdXQpIHtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXRcblxuICAgIHRoaXMucm9vdCA9IG5ldyBSb290KClcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnJvb3RcbiAgICB0aGlzLnNwYWNlcyA9ICcnXG4gICAgdGhpcy5zZW1pY29sb24gPSBmYWxzZVxuXG4gICAgdGhpcy5jcmVhdGVUb2tlbml6ZXIoKVxuICAgIHRoaXMucm9vdC5zb3VyY2UgPSB7IGlucHV0LCBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEgfSB9XG4gIH1cblxuICBjcmVhdGVUb2tlbml6ZXIgKCkge1xuICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyKHRoaXMuaW5wdXQpXG4gIH1cblxuICBwYXJzZSAoKSB7XG4gICAgbGV0IHRva2VuXG4gICAgd2hpbGUgKCF0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKSkge1xuICAgICAgdG9rZW4gPSB0aGlzLnRva2VuaXplci5uZXh0VG9rZW4oKVxuXG4gICAgICBzd2l0Y2ggKHRva2VuWzBdKSB7XG4gICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICB0aGlzLnNwYWNlcyArPSB0b2tlblsxXVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnOyc6XG4gICAgICAgICAgdGhpcy5mcmVlU2VtaWNvbG9uKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgdGhpcy5lbmQodG9rZW4pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICB0aGlzLmNvbW1lbnQodG9rZW4pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdhdC13b3JkJzpcbiAgICAgICAgICB0aGlzLmF0cnVsZSh0b2tlbilcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgIHRoaXMuZW1wdHlSdWxlKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLm90aGVyKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZW5kRmlsZSgpXG4gIH1cblxuICBjb21tZW50ICh0b2tlbikge1xuICAgIGxldCBub2RlID0gbmV3IENvbW1lbnQoKVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9XG5cbiAgICBsZXQgdGV4dCA9IHRva2VuWzFdLnNsaWNlKDIsIC0yKVxuICAgIGlmICgvXlxccyokLy50ZXN0KHRleHQpKSB7XG4gICAgICBub2RlLnRleHQgPSAnJ1xuICAgICAgbm9kZS5yYXdzLmxlZnQgPSB0ZXh0XG4gICAgICBub2RlLnJhd3MucmlnaHQgPSAnJ1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eKFxccyopKFteXSpbXlxcc10pKFxccyopJC8pXG4gICAgICBub2RlLnRleHQgPSBtYXRjaFsyXVxuICAgICAgbm9kZS5yYXdzLmxlZnQgPSBtYXRjaFsxXVxuICAgICAgbm9kZS5yYXdzLnJpZ2h0ID0gbWF0Y2hbM11cbiAgICB9XG4gIH1cblxuICBlbXB0eVJ1bGUgKHRva2VuKSB7XG4gICAgbGV0IG5vZGUgPSBuZXcgUnVsZSgpXG4gICAgdGhpcy5pbml0KG5vZGUsIHRva2VuWzJdLCB0b2tlblszXSlcbiAgICBub2RlLnNlbGVjdG9yID0gJydcbiAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnXG4gICAgdGhpcy5jdXJyZW50ID0gbm9kZVxuICB9XG5cbiAgb3RoZXIgKHN0YXJ0KSB7XG4gICAgbGV0IGVuZCA9IGZhbHNlXG4gICAgbGV0IHR5cGUgPSBudWxsXG4gICAgbGV0IGNvbG9uID0gZmFsc2VcbiAgICBsZXQgYnJhY2tldCA9IG51bGxcbiAgICBsZXQgYnJhY2tldHMgPSBbXVxuXG4gICAgbGV0IHRva2VucyA9IFtdXG4gICAgbGV0IHRva2VuID0gc3RhcnRcbiAgICB3aGlsZSAodG9rZW4pIHtcbiAgICAgIHR5cGUgPSB0b2tlblswXVxuICAgICAgdG9rZW5zLnB1c2godG9rZW4pXG5cbiAgICAgIGlmICh0eXBlID09PSAnKCcgfHwgdHlwZSA9PT0gJ1snKSB7XG4gICAgICAgIGlmICghYnJhY2tldCkgYnJhY2tldCA9IHRva2VuXG4gICAgICAgIGJyYWNrZXRzLnB1c2godHlwZSA9PT0gJygnID8gJyknIDogJ10nKVxuICAgICAgfSBlbHNlIGlmIChicmFja2V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICc7Jykge1xuICAgICAgICAgIGlmIChjb2xvbikge1xuICAgICAgICAgICAgdGhpcy5kZWNsKHRva2VucylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAneycpIHtcbiAgICAgICAgICB0aGlzLnJ1bGUodG9rZW5zKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd9Jykge1xuICAgICAgICAgIHRoaXMudG9rZW5pemVyLmJhY2sodG9rZW5zLnBvcCgpKVxuICAgICAgICAgIGVuZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICc6Jykge1xuICAgICAgICAgIGNvbG9uID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IGJyYWNrZXRzW2JyYWNrZXRzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgIGJyYWNrZXRzLnBvcCgpXG4gICAgICAgIGlmIChicmFja2V0cy5sZW5ndGggPT09IDApIGJyYWNrZXQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkpIGVuZCA9IHRydWVcbiAgICBpZiAoYnJhY2tldHMubGVuZ3RoID4gMCkgdGhpcy51bmNsb3NlZEJyYWNrZXQoYnJhY2tldClcblxuICAgIGlmIChlbmQgJiYgY29sb24pIHtcbiAgICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKSB7XG4gICAgICAgIHRva2VuID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXVswXVxuICAgICAgICBpZiAodG9rZW4gIT09ICdzcGFjZScgJiYgdG9rZW4gIT09ICdjb21tZW50JykgYnJlYWtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuYmFjayh0b2tlbnMucG9wKCkpXG4gICAgICB9XG4gICAgICB0aGlzLmRlY2wodG9rZW5zKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVua25vd25Xb3JkKHRva2VucylcbiAgICB9XG4gIH1cblxuICBydWxlICh0b2tlbnMpIHtcbiAgICB0b2tlbnMucG9wKClcblxuICAgIGxldCBub2RlID0gbmV3IFJ1bGUoKVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlbnNbMF1bMl0sIHRva2Vuc1swXVszXSlcblxuICAgIG5vZGUucmF3cy5iZXR3ZWVuID0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21FbmQodG9rZW5zKVxuICAgIHRoaXMucmF3KG5vZGUsICdzZWxlY3RvcicsIHRva2VucylcbiAgICB0aGlzLmN1cnJlbnQgPSBub2RlXG4gIH1cblxuICBkZWNsICh0b2tlbnMpIHtcbiAgICBsZXQgbm9kZSA9IG5ldyBEZWNsYXJhdGlvbigpXG4gICAgdGhpcy5pbml0KG5vZGUpXG5cbiAgICBsZXQgbGFzdCA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1cbiAgICBpZiAobGFzdFswXSA9PT0gJzsnKSB7XG4gICAgICB0aGlzLnNlbWljb2xvbiA9IHRydWVcbiAgICAgIHRva2Vucy5wb3AoKVxuICAgIH1cbiAgICBpZiAobGFzdFs0XSkge1xuICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiBsYXN0WzRdLCBjb2x1bW46IGxhc3RbNV0gfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IGxhc3RbMl0sIGNvbHVtbjogbGFzdFszXSB9XG4gICAgfVxuXG4gICAgd2hpbGUgKHRva2Vuc1swXVswXSAhPT0gJ3dvcmQnKSB7XG4gICAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMSkgdGhpcy51bmtub3duV29yZCh0b2tlbnMpXG4gICAgICBub2RlLnJhd3MuYmVmb3JlICs9IHRva2Vucy5zaGlmdCgpWzFdXG4gICAgfVxuICAgIG5vZGUuc291cmNlLnN0YXJ0ID0geyBsaW5lOiB0b2tlbnNbMF1bMl0sIGNvbHVtbjogdG9rZW5zWzBdWzNdIH1cblxuICAgIG5vZGUucHJvcCA9ICcnXG4gICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpIHtcbiAgICAgIGxldCB0eXBlID0gdG9rZW5zWzBdWzBdXG4gICAgICBpZiAodHlwZSA9PT0gJzonIHx8IHR5cGUgPT09ICdzcGFjZScgfHwgdHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBub2RlLnByb3AgKz0gdG9rZW5zLnNoaWZ0KClbMV1cbiAgICB9XG5cbiAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnXG5cbiAgICBsZXQgdG9rZW5cbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgdG9rZW4gPSB0b2tlbnMuc2hpZnQoKVxuXG4gICAgICBpZiAodG9rZW5bMF0gPT09ICc6Jykge1xuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiArPSB0b2tlblsxXVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRva2VuWzBdID09PSAnd29yZCcgJiYgL1xcdy8udGVzdCh0b2tlblsxXSkpIHtcbiAgICAgICAgICB0aGlzLnVua25vd25Xb3JkKFt0b2tlbl0pXG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdG9rZW5bMV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobm9kZS5wcm9wWzBdID09PSAnXycgfHwgbm9kZS5wcm9wWzBdID09PSAnKicpIHtcbiAgICAgIG5vZGUucmF3cy5iZWZvcmUgKz0gbm9kZS5wcm9wWzBdXG4gICAgICBub2RlLnByb3AgPSBub2RlLnByb3Auc2xpY2UoMSlcbiAgICB9XG4gICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpXG4gICAgdGhpcy5wcmVjaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpXG5cbiAgICBmb3IgKGxldCBpID0gdG9rZW5zLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICBpZiAodG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PT0gJyFpbXBvcnRhbnQnKSB7XG4gICAgICAgIG5vZGUuaW1wb3J0YW50ID0gdHJ1ZVxuICAgICAgICBsZXQgc3RyaW5nID0gdGhpcy5zdHJpbmdGcm9tKHRva2VucywgaSlcbiAgICAgICAgc3RyaW5nID0gdGhpcy5zcGFjZXNGcm9tRW5kKHRva2VucykgKyBzdHJpbmdcbiAgICAgICAgaWYgKHN0cmluZyAhPT0gJyAhaW1wb3J0YW50Jykgbm9kZS5yYXdzLmltcG9ydGFudCA9IHN0cmluZ1xuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICh0b2tlblsxXS50b0xvd2VyQ2FzZSgpID09PSAnaW1wb3J0YW50Jykge1xuICAgICAgICBsZXQgY2FjaGUgPSB0b2tlbnMuc2xpY2UoMClcbiAgICAgICAgbGV0IHN0ciA9ICcnXG4gICAgICAgIGZvciAobGV0IGogPSBpOyBqID4gMDsgai0tKSB7XG4gICAgICAgICAgbGV0IHR5cGUgPSBjYWNoZVtqXVswXVxuICAgICAgICAgIGlmIChzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCAmJiB0eXBlICE9PSAnc3BhY2UnKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdHIgPSBjYWNoZS5wb3AoKVsxXSArIHN0clxuICAgICAgICB9XG4gICAgICAgIGlmIChzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCkge1xuICAgICAgICAgIG5vZGUuaW1wb3J0YW50ID0gdHJ1ZVxuICAgICAgICAgIG5vZGUucmF3cy5pbXBvcnRhbnQgPSBzdHJcbiAgICAgICAgICB0b2tlbnMgPSBjYWNoZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlblswXSAhPT0gJ3NwYWNlJyAmJiB0b2tlblswXSAhPT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yYXcobm9kZSwgJ3ZhbHVlJywgdG9rZW5zKVxuXG4gICAgaWYgKG5vZGUudmFsdWUuaW5kZXhPZignOicpICE9PSAtMSkgdGhpcy5jaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpXG4gIH1cblxuICBhdHJ1bGUgKHRva2VuKSB7XG4gICAgbGV0IG5vZGUgPSBuZXcgQXRSdWxlKClcbiAgICBub2RlLm5hbWUgPSB0b2tlblsxXS5zbGljZSgxKVxuICAgIGlmIChub2RlLm5hbWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnVubmFtZWRBdHJ1bGUobm9kZSwgdG9rZW4pXG4gICAgfVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlblsyXSwgdG9rZW5bM10pXG5cbiAgICBsZXQgcHJldlxuICAgIGxldCBzaGlmdFxuICAgIGxldCBsYXN0ID0gZmFsc2VcbiAgICBsZXQgb3BlbiA9IGZhbHNlXG4gICAgbGV0IHBhcmFtcyA9IFtdXG5cbiAgICB3aGlsZSAoIXRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpKSB7XG4gICAgICB0b2tlbiA9IHRoaXMudG9rZW5pemVyLm5leHRUb2tlbigpXG5cbiAgICAgIGlmICh0b2tlblswXSA9PT0gJzsnKSB7XG4gICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogdG9rZW5bMl0sIGNvbHVtbjogdG9rZW5bM10gfVxuICAgICAgICB0aGlzLnNlbWljb2xvbiA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH0gZWxzZSBpZiAodG9rZW5bMF0gPT09ICd7Jykge1xuICAgICAgICBvcGVuID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICh0b2tlblswXSA9PT0gJ30nKSB7XG4gICAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNoaWZ0ID0gcGFyYW1zLmxlbmd0aCAtIDFcbiAgICAgICAgICBwcmV2ID0gcGFyYW1zW3NoaWZ0XVxuICAgICAgICAgIHdoaWxlIChwcmV2ICYmIHByZXZbMF0gPT09ICdzcGFjZScpIHtcbiAgICAgICAgICAgIHByZXYgPSBwYXJhbXNbLS1zaGlmdF1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogcHJldls0XSwgY29sdW1uOiBwcmV2WzVdIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmQodG9rZW4pXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbXMucHVzaCh0b2tlbilcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpKSB7XG4gICAgICAgIGxhc3QgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgbm9kZS5yYXdzLmJldHdlZW4gPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZChwYXJhbXMpXG4gICAgaWYgKHBhcmFtcy5sZW5ndGgpIHtcbiAgICAgIG5vZGUucmF3cy5hZnRlck5hbWUgPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0KHBhcmFtcylcbiAgICAgIHRoaXMucmF3KG5vZGUsICdwYXJhbXMnLCBwYXJhbXMpXG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICB0b2tlbiA9IHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV1cbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9XG4gICAgICAgIHRoaXMuc3BhY2VzID0gbm9kZS5yYXdzLmJldHdlZW5cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gPSAnJ1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnJhd3MuYWZ0ZXJOYW1lID0gJydcbiAgICAgIG5vZGUucGFyYW1zID0gJydcbiAgICB9XG5cbiAgICBpZiAob3Blbikge1xuICAgICAgbm9kZS5ub2RlcyA9IFtdXG4gICAgICB0aGlzLmN1cnJlbnQgPSBub2RlXG4gICAgfVxuICB9XG5cbiAgZW5kICh0b2tlbikge1xuICAgIGlmICh0aGlzLmN1cnJlbnQubm9kZXMgJiYgdGhpcy5jdXJyZW50Lm5vZGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5jdXJyZW50LnJhd3Muc2VtaWNvbG9uID0gdGhpcy5zZW1pY29sb25cbiAgICB9XG4gICAgdGhpcy5zZW1pY29sb24gPSBmYWxzZVxuXG4gICAgdGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgPSAodGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgfHwgJycpICsgdGhpcy5zcGFjZXNcbiAgICB0aGlzLnNwYWNlcyA9ICcnXG5cbiAgICBpZiAodGhpcy5jdXJyZW50LnBhcmVudCkge1xuICAgICAgdGhpcy5jdXJyZW50LnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzJdLCBjb2x1bW46IHRva2VuWzNdIH1cbiAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMuY3VycmVudC5wYXJlbnRcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51bmV4cGVjdGVkQ2xvc2UodG9rZW4pXG4gICAgfVxuICB9XG5cbiAgZW5kRmlsZSAoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudC5wYXJlbnQpIHRoaXMudW5jbG9zZWRCbG9jaygpXG4gICAgaWYgKHRoaXMuY3VycmVudC5ub2RlcyAmJiB0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN1cnJlbnQucmF3cy5zZW1pY29sb24gPSB0aGlzLnNlbWljb2xvblxuICAgIH1cbiAgICB0aGlzLmN1cnJlbnQucmF3cy5hZnRlciA9ICh0aGlzLmN1cnJlbnQucmF3cy5hZnRlciB8fCAnJykgKyB0aGlzLnNwYWNlc1xuICB9XG5cbiAgZnJlZVNlbWljb2xvbiAodG9rZW4pIHtcbiAgICB0aGlzLnNwYWNlcyArPSB0b2tlblsxXVxuICAgIGlmICh0aGlzLmN1cnJlbnQubm9kZXMpIHtcbiAgICAgIGxldCBwcmV2ID0gdGhpcy5jdXJyZW50Lm5vZGVzW3RoaXMuY3VycmVudC5ub2Rlcy5sZW5ndGggLSAxXVxuICAgICAgaWYgKHByZXYgJiYgcHJldi50eXBlID09PSAncnVsZScgJiYgIXByZXYucmF3cy5vd25TZW1pY29sb24pIHtcbiAgICAgICAgcHJldi5yYXdzLm93blNlbWljb2xvbiA9IHRoaXMuc3BhY2VzXG4gICAgICAgIHRoaXMuc3BhY2VzID0gJydcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXJzXG5cbiAgaW5pdCAobm9kZSwgbGluZSwgY29sdW1uKSB7XG4gICAgdGhpcy5jdXJyZW50LnB1c2gobm9kZSlcblxuICAgIG5vZGUuc291cmNlID0geyBzdGFydDogeyBsaW5lLCBjb2x1bW4gfSwgaW5wdXQ6IHRoaXMuaW5wdXQgfVxuICAgIG5vZGUucmF3cy5iZWZvcmUgPSB0aGlzLnNwYWNlc1xuICAgIHRoaXMuc3BhY2VzID0gJydcbiAgICBpZiAobm9kZS50eXBlICE9PSAnY29tbWVudCcpIHRoaXMuc2VtaWNvbG9uID0gZmFsc2VcbiAgfVxuXG4gIHJhdyAobm9kZSwgcHJvcCwgdG9rZW5zKSB7XG4gICAgbGV0IHRva2VuLCB0eXBlXG4gICAgbGV0IGxlbmd0aCA9IHRva2Vucy5sZW5ndGhcbiAgICBsZXQgdmFsdWUgPSAnJ1xuICAgIGxldCBjbGVhbiA9IHRydWVcbiAgICBsZXQgbmV4dCwgcHJldlxuICAgIGxldCBwYXR0ZXJuID0gL14oWy58I10pPyhbXFx3XSkrL2lcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICB0eXBlID0gdG9rZW5bMF1cblxuICAgICAgaWYgKHR5cGUgPT09ICdjb21tZW50JyAmJiBub2RlLnR5cGUgPT09ICdydWxlJykge1xuICAgICAgICBwcmV2ID0gdG9rZW5zW2kgLSAxXVxuICAgICAgICBuZXh0ID0gdG9rZW5zW2kgKyAxXVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwcmV2WzBdICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgbmV4dFswXSAhPT0gJ3NwYWNlJyAmJlxuICAgICAgICAgIHBhdHRlcm4udGVzdChwcmV2WzFdKSAmJlxuICAgICAgICAgIHBhdHRlcm4udGVzdChuZXh0WzFdKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSArPSB0b2tlblsxXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNsZWFuID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnY29tbWVudCcgfHwgKHR5cGUgPT09ICdzcGFjZScgJiYgaSA9PT0gbGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgY2xlYW4gPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgKz0gdG9rZW5bMV1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjbGVhbikge1xuICAgICAgbGV0IHJhdyA9IHRva2Vucy5yZWR1Y2UoKGFsbCwgaSkgPT4gYWxsICsgaVsxXSwgJycpXG4gICAgICBub2RlLnJhd3NbcHJvcF0gPSB7IHZhbHVlLCByYXcgfVxuICAgIH1cbiAgICBub2RlW3Byb3BdID0gdmFsdWVcbiAgfVxuXG4gIHNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCAodG9rZW5zKSB7XG4gICAgbGV0IGxhc3RUb2tlblR5cGVcbiAgICBsZXQgc3BhY2VzID0gJydcbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgbGFzdFRva2VuVHlwZSA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1bMF1cbiAgICAgIGlmIChsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnICYmIGxhc3RUb2tlblR5cGUgIT09ICdjb21tZW50JykgYnJlYWtcbiAgICAgIHNwYWNlcyA9IHRva2Vucy5wb3AoKVsxXSArIHNwYWNlc1xuICAgIH1cbiAgICByZXR1cm4gc3BhY2VzXG4gIH1cblxuICBzcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCAodG9rZW5zKSB7XG4gICAgbGV0IG5leHRcbiAgICBsZXQgc3BhY2VzID0gJydcbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgbmV4dCA9IHRva2Vuc1swXVswXVxuICAgICAgaWYgKG5leHQgIT09ICdzcGFjZScgJiYgbmV4dCAhPT0gJ2NvbW1lbnQnKSBicmVha1xuICAgICAgc3BhY2VzICs9IHRva2Vucy5zaGlmdCgpWzFdXG4gICAgfVxuICAgIHJldHVybiBzcGFjZXNcbiAgfVxuXG4gIHNwYWNlc0Zyb21FbmQgKHRva2Vucykge1xuICAgIGxldCBsYXN0VG9rZW5UeXBlXG4gICAgbGV0IHNwYWNlcyA9ICcnXG4gICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpIHtcbiAgICAgIGxhc3RUb2tlblR5cGUgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdXG4gICAgICBpZiAobGFzdFRva2VuVHlwZSAhPT0gJ3NwYWNlJykgYnJlYWtcbiAgICAgIHNwYWNlcyA9IHRva2Vucy5wb3AoKVsxXSArIHNwYWNlc1xuICAgIH1cbiAgICByZXR1cm4gc3BhY2VzXG4gIH1cblxuICBzdHJpbmdGcm9tICh0b2tlbnMsIGZyb20pIHtcbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICBmb3IgKGxldCBpID0gZnJvbTsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0ICs9IHRva2Vuc1tpXVsxXVxuICAgIH1cbiAgICB0b2tlbnMuc3BsaWNlKGZyb20sIHRva2Vucy5sZW5ndGggLSBmcm9tKVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGNvbG9uICh0b2tlbnMpIHtcbiAgICBsZXQgYnJhY2tldHMgPSAwXG4gICAgbGV0IHRva2VuLCB0eXBlLCBwcmV2XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICB0eXBlID0gdG9rZW5bMF1cblxuICAgICAgaWYgKHR5cGUgPT09ICcoJykge1xuICAgICAgICBicmFja2V0cyArPSAxXG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gJyknKSB7XG4gICAgICAgIGJyYWNrZXRzIC09IDFcbiAgICAgIH1cbiAgICAgIGlmIChicmFja2V0cyA9PT0gMCAmJiB0eXBlID09PSAnOicpIHtcbiAgICAgICAgaWYgKCFwcmV2KSB7XG4gICAgICAgICAgdGhpcy5kb3VibGVDb2xvbih0b2tlbilcbiAgICAgICAgfSBlbHNlIGlmIChwcmV2WzBdID09PSAnd29yZCcgJiYgcHJldlsxXSA9PT0gJ3Byb2dpZCcpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJldiA9IHRva2VuXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gRXJyb3JzXG5cbiAgdW5jbG9zZWRCcmFja2V0IChicmFja2V0KSB7XG4gICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5jbG9zZWQgYnJhY2tldCcsIGJyYWNrZXRbMl0sIGJyYWNrZXRbM10pXG4gIH1cblxuICB1bmtub3duV29yZCAodG9rZW5zKSB7XG4gICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5rbm93biB3b3JkJywgdG9rZW5zWzBdWzJdLCB0b2tlbnNbMF1bM10pXG4gIH1cblxuICB1bmV4cGVjdGVkQ2xvc2UgKHRva2VuKSB7XG4gICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5leHBlY3RlZCB9JywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICB9XG5cbiAgdW5jbG9zZWRCbG9jayAoKSB7XG4gICAgbGV0IHBvcyA9IHRoaXMuY3VycmVudC5zb3VyY2Uuc3RhcnRcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmNsb3NlZCBibG9jaycsIHBvcy5saW5lLCBwb3MuY29sdW1uKVxuICB9XG5cbiAgZG91YmxlQ29sb24gKHRva2VuKSB7XG4gICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignRG91YmxlIGNvbG9uJywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICB9XG5cbiAgdW5uYW1lZEF0cnVsZSAobm9kZSwgdG9rZW4pIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdBdC1ydWxlIHdpdGhvdXQgbmFtZScsIHRva2VuWzJdLCB0b2tlblszXSlcbiAgfVxuXG4gIHByZWNoZWNrTWlzc2VkU2VtaWNvbG9uICgvKiB0b2tlbnMgKi8pIHtcbiAgICAvLyBIb29rIGZvciBTYWZlIFBhcnNlclxuICB9XG5cbiAgY2hlY2tNaXNzZWRTZW1pY29sb24gKHRva2Vucykge1xuICAgIGxldCBjb2xvbiA9IHRoaXMuY29sb24odG9rZW5zKVxuICAgIGlmIChjb2xvbiA9PT0gZmFsc2UpIHJldHVyblxuXG4gICAgbGV0IGZvdW5kZWQgPSAwXG4gICAgbGV0IHRva2VuXG4gICAgZm9yIChsZXQgaiA9IGNvbG9uIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2pdXG4gICAgICBpZiAodG9rZW5bMF0gIT09ICdzcGFjZScpIHtcbiAgICAgICAgZm91bmRlZCArPSAxXG4gICAgICAgIGlmIChmb3VuZGVkID09PSAyKSBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdNaXNzZWQgc2VtaWNvbG9uJywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICB9XG59XG4iXSwiZmlsZSI6InBhcnNlci5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = tokenizer;\nvar SINGLE_QUOTE = '\\''.charCodeAt(0);\nvar DOUBLE_QUOTE = '\"'.charCodeAt(0);\nvar BACKSLASH = '\\\\'.charCodeAt(0);\nvar SLASH = '/'.charCodeAt(0);\nvar NEWLINE = '\\n'.charCodeAt(0);\nvar SPACE = ' '.charCodeAt(0);\nvar FEED = '\\f'.charCodeAt(0);\nvar TAB = '\\t'.charCodeAt(0);\nvar CR = '\\r'.charCodeAt(0);\nvar OPEN_SQUARE = '['.charCodeAt(0);\nvar CLOSE_SQUARE = ']'.charCodeAt(0);\nvar OPEN_PARENTHESES = '('.charCodeAt(0);\nvar CLOSE_PARENTHESES = ')'.charCodeAt(0);\nvar OPEN_CURLY = '{'.charCodeAt(0);\nvar CLOSE_CURLY = '}'.charCodeAt(0);\nvar SEMICOLON = ';'.charCodeAt(0);\nvar ASTERISK = '*'.charCodeAt(0);\nvar COLON = ':'.charCodeAt(0);\nvar AT = '@'.charCodeAt(0);\nvar RE_AT_END = /[ \\n\\t\\r\\f{}()'\"\\\\;/[\\]#]/g;\nvar RE_WORD_END = /[ \\n\\t\\r\\f(){}:;@!'\"\\\\\\][#]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\\\/(\"'\\n]/;\nvar RE_HEX_ESCAPE = /[a-f0-9]/i;\n\nfunction tokenizer(input, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var css = input.css.valueOf();\n  var ignore = options.ignoreErrors;\n  var code, next, quote, lines, last, content, escape;\n  var nextLine, nextOffset, escaped, escapePos, prev, n, currentToken;\n  var length = css.length;\n  var offset = -1;\n  var line = 1;\n  var pos = 0;\n  var buffer = [];\n  var returned = [];\n\n  function position() {\n    return pos;\n  }\n\n  function unclosed(what) {\n    throw input.error('Unclosed ' + what, line, pos - offset);\n  }\n\n  function endOfFile() {\n    return returned.length === 0 && pos >= length;\n  }\n\n  function nextToken(opts) {\n    if (returned.length) return returned.pop();\n    if (pos >= length) return;\n    var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n    code = css.charCodeAt(pos);\n\n    if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {\n      offset = pos;\n      line += 1;\n    }\n\n    switch (code) {\n      case NEWLINE:\n      case SPACE:\n      case TAB:\n      case CR:\n      case FEED:\n        next = pos;\n\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n\n          if (code === NEWLINE) {\n            offset = next;\n            line += 1;\n          }\n        } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n\n        currentToken = ['space', css.slice(pos, next)];\n        pos = next - 1;\n        break;\n\n      case OPEN_SQUARE:\n      case CLOSE_SQUARE:\n      case OPEN_CURLY:\n      case CLOSE_CURLY:\n      case COLON:\n      case SEMICOLON:\n      case CLOSE_PARENTHESES:\n        var controlChar = String.fromCharCode(code);\n        currentToken = [controlChar, controlChar, line, pos - offset];\n        break;\n\n      case OPEN_PARENTHESES:\n        prev = buffer.length ? buffer.pop()[1] : '';\n        n = css.charCodeAt(pos + 1);\n\n        if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n          next = pos;\n\n          do {\n            escaped = false;\n            next = css.indexOf(')', next + 1);\n\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos;\n                break;\n              } else {\n                unclosed('bracket');\n              }\n            }\n\n            escapePos = next;\n\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1;\n              escaped = !escaped;\n            }\n          } while (escaped);\n\n          currentToken = ['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n          pos = next;\n        } else {\n          next = css.indexOf(')', pos + 1);\n          content = css.slice(pos, next + 1);\n\n          if (next === -1 || RE_BAD_BRACKET.test(content)) {\n            currentToken = ['(', '(', line, pos - offset];\n          } else {\n            currentToken = ['brackets', content, line, pos - offset, line, next - offset];\n            pos = next;\n          }\n        }\n\n        break;\n\n      case SINGLE_QUOTE:\n      case DOUBLE_QUOTE:\n        quote = code === SINGLE_QUOTE ? '\\'' : '\"';\n        next = pos;\n\n        do {\n          escaped = false;\n          next = css.indexOf(quote, next + 1);\n\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1;\n              break;\n            } else {\n              unclosed('string');\n            }\n          }\n\n          escapePos = next;\n\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n            escapePos -= 1;\n            escaped = !escaped;\n          }\n        } while (escaped);\n\n        content = css.slice(pos, next + 1);\n        lines = content.split('\\n');\n        last = lines.length - 1;\n\n        if (last > 0) {\n          nextLine = line + last;\n          nextOffset = next - lines[last].length;\n        } else {\n          nextLine = line;\n          nextOffset = offset;\n        }\n\n        currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset];\n        offset = nextOffset;\n        line = nextLine;\n        pos = next;\n        break;\n\n      case AT:\n        RE_AT_END.lastIndex = pos + 1;\n        RE_AT_END.test(css);\n\n        if (RE_AT_END.lastIndex === 0) {\n          next = css.length - 1;\n        } else {\n          next = RE_AT_END.lastIndex - 2;\n        }\n\n        currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n        pos = next;\n        break;\n\n      case BACKSLASH:\n        next = pos;\n        escape = true;\n\n        while (css.charCodeAt(next + 1) === BACKSLASH) {\n          next += 1;\n          escape = !escape;\n        }\n\n        code = css.charCodeAt(next + 1);\n\n        if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n          next += 1;\n\n          if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n              next += 1;\n            }\n\n            if (css.charCodeAt(next + 1) === SPACE) {\n              next += 1;\n            }\n          }\n        }\n\n        currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n        pos = next;\n        break;\n\n      default:\n        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n          next = css.indexOf('*/', pos + 2) + 1;\n\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length;\n            } else {\n              unclosed('comment');\n            }\n          }\n\n          content = css.slice(pos, next + 1);\n          lines = content.split('\\n');\n          last = lines.length - 1;\n\n          if (last > 0) {\n            nextLine = line + last;\n            nextOffset = next - lines[last].length;\n          } else {\n            nextLine = line;\n            nextOffset = offset;\n          }\n\n          currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset];\n          offset = nextOffset;\n          line = nextLine;\n          pos = next;\n        } else {\n          RE_WORD_END.lastIndex = pos + 1;\n          RE_WORD_END.test(css);\n\n          if (RE_WORD_END.lastIndex === 0) {\n            next = css.length - 1;\n          } else {\n            next = RE_WORD_END.lastIndex - 2;\n          }\n\n          currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n          buffer.push(currentToken);\n          pos = next;\n        }\n\n        break;\n    }\n\n    pos++;\n    return currentToken;\n  }\n\n  function back(token) {\n    returned.push(token);\n  }\n\n  return {\n    back: back,\n    nextToken: nextToken,\n    endOfFile: endOfFile,\n    position: position\n  };\n}\n\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2VuaXplLmVzNiJdLCJuYW1lcyI6WyJTSU5HTEVfUVVPVEUiLCJjaGFyQ29kZUF0IiwiRE9VQkxFX1FVT1RFIiwiQkFDS1NMQVNIIiwiU0xBU0giLCJORVdMSU5FIiwiU1BBQ0UiLCJGRUVEIiwiVEFCIiwiQ1IiLCJPUEVOX1NRVUFSRSIsIkNMT1NFX1NRVUFSRSIsIk9QRU5fUEFSRU5USEVTRVMiLCJDTE9TRV9QQVJFTlRIRVNFUyIsIk9QRU5fQ1VSTFkiLCJDTE9TRV9DVVJMWSIsIlNFTUlDT0xPTiIsIkFTVEVSSVNLIiwiQ09MT04iLCJBVCIsIlJFX0FUX0VORCIsIlJFX1dPUkRfRU5EIiwiUkVfQkFEX0JSQUNLRVQiLCJSRV9IRVhfRVNDQVBFIiwidG9rZW5pemVyIiwiaW5wdXQiLCJvcHRpb25zIiwiY3NzIiwidmFsdWVPZiIsImlnbm9yZSIsImlnbm9yZUVycm9ycyIsImNvZGUiLCJuZXh0IiwicXVvdGUiLCJsaW5lcyIsImxhc3QiLCJjb250ZW50IiwiZXNjYXBlIiwibmV4dExpbmUiLCJuZXh0T2Zmc2V0IiwiZXNjYXBlZCIsImVzY2FwZVBvcyIsInByZXYiLCJuIiwiY3VycmVudFRva2VuIiwibGVuZ3RoIiwib2Zmc2V0IiwibGluZSIsInBvcyIsImJ1ZmZlciIsInJldHVybmVkIiwicG9zaXRpb24iLCJ1bmNsb3NlZCIsIndoYXQiLCJlcnJvciIsImVuZE9mRmlsZSIsIm5leHRUb2tlbiIsIm9wdHMiLCJwb3AiLCJpZ25vcmVVbmNsb3NlZCIsInNsaWNlIiwiY29udHJvbENoYXIiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJpbmRleE9mIiwidGVzdCIsInNwbGl0IiwibGFzdEluZGV4IiwiY2hhckF0IiwicHVzaCIsImJhY2siLCJ0b2tlbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQU1BLFlBQVksR0FBRyxLQUFLQyxVQUFMLENBQWdCLENBQWhCLENBQXJCO0FBQ0EsSUFBTUMsWUFBWSxHQUFHLElBQUlELFVBQUosQ0FBZSxDQUFm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LElBQVQsQ0FBZUMsS0FBZixFQUFzQjtBQUNwQnJCLElBQUFBLFFBQVEsQ0FBQ21CLElBQVQsQ0FBY0UsS0FBZDtBQUNEOztBQUVELFNBQU87QUFDTEQsSUFBQUEsSUFBSSxFQUFKQSxJQURLO0FBRUxkLElBQUFBLFNBQVMsRUFBVEEsU0FGSztBQUdMRCxJQUFBQSxTQUFTLEVBQVRBLFNBSEs7QUFJTEosSUFBQUEsUUFBUSxFQUFSQTtBQUpLLEdBQVA7QUFNRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNJTkdMRV9RVU9URSA9ICdcXCcnLmNoYXJDb2RlQXQoMClcbmNvbnN0IERPVUJMRV9RVU9URSA9ICdcIicuY2hhckNvZGVBdCgwKVxuY29uc3QgQkFDS1NMQVNIID0gJ1xcXFwnLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNMQVNIID0gJy8nLmNoYXJDb2RlQXQoMClcbmNvbnN0IE5FV0xJTkUgPSAnXFxuJy5jaGFyQ29kZUF0KDApXG5jb25zdCBTUEFDRSA9ICcgJy5jaGFyQ29kZUF0KDApXG5jb25zdCBGRUVEID0gJ1xcZicuY2hhckNvZGVBdCgwKVxuY29uc3QgVEFCID0gJ1xcdCcuY2hhckNvZGVBdCgwKVxuY29uc3QgQ1IgPSAnXFxyJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX1NRVUFSRSA9ICdbJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9TUVVBUkUgPSAnXScuY2hhckNvZGVBdCgwKVxuY29uc3QgT1BFTl9QQVJFTlRIRVNFUyA9ICcoJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9QQVJFTlRIRVNFUyA9ICcpJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX0NVUkxZID0gJ3snLmNoYXJDb2RlQXQoMClcbmNvbnN0IENMT1NFX0NVUkxZID0gJ30nLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNFTUlDT0xPTiA9ICc7Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBU1RFUklTSyA9ICcqJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDT0xPTiA9ICc6Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBVCA9ICdAJy5jaGFyQ29kZUF0KDApXG5cbmNvbnN0IFJFX0FUX0VORCA9IC9bIFxcblxcdFxcclxcZnt9KCknXCJcXFxcOy9bXFxdI10vZ1xuY29uc3QgUkVfV09SRF9FTkQgPSAvWyBcXG5cXHRcXHJcXGYoKXt9OjtAISdcIlxcXFxcXF1bI118XFwvKD89XFwqKS9nXG5jb25zdCBSRV9CQURfQlJBQ0tFVCA9IC8uW1xcXFwvKFwiJ1xcbl0vXG5jb25zdCBSRV9IRVhfRVNDQVBFID0gL1thLWYwLTldL2lcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9rZW5pemVyIChpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBjc3MgPSBpbnB1dC5jc3MudmFsdWVPZigpXG4gIGxldCBpZ25vcmUgPSBvcHRpb25zLmlnbm9yZUVycm9yc1xuXG4gIGxldCBjb2RlLCBuZXh0LCBxdW90ZSwgbGluZXMsIGxhc3QsIGNvbnRlbnQsIGVzY2FwZVxuICBsZXQgbmV4dExpbmUsIG5leHRPZmZzZXQsIGVzY2FwZWQsIGVzY2FwZVBvcywgcHJldiwgbiwgY3VycmVudFRva2VuXG5cbiAgbGV0IGxlbmd0aCA9IGNzcy5sZW5ndGhcbiAgbGV0IG9mZnNldCA9IC0xXG4gIGxldCBsaW5lID0gMVxuICBsZXQgcG9zID0gMFxuICBsZXQgYnVmZmVyID0gW11cbiAgbGV0IHJldHVybmVkID0gW11cblxuICBmdW5jdGlvbiBwb3NpdGlvbiAoKSB7XG4gICAgcmV0dXJuIHBvc1xuICB9XG5cbiAgZnVuY3Rpb24gdW5jbG9zZWQgKHdoYXQpIHtcbiAgICB0aHJvdyBpbnB1dC5lcnJvcignVW5jbG9zZWQgJyArIHdoYXQsIGxpbmUsIHBvcyAtIG9mZnNldClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZE9mRmlsZSAoKSB7XG4gICAgcmV0dXJuIHJldHVybmVkLmxlbmd0aCA9PT0gMCAmJiBwb3MgPj0gbGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiBuZXh0VG9rZW4gKG9wdHMpIHtcbiAgICBpZiAocmV0dXJuZWQubGVuZ3RoKSByZXR1cm4gcmV0dXJuZWQucG9wKClcbiAgICBpZiAocG9zID49IGxlbmd0aCkgcmV0dXJuXG5cbiAgICBsZXQgaWdub3JlVW5jbG9zZWQgPSBvcHRzID8gb3B0cy5pZ25vcmVVbmNsb3NlZCA6IGZhbHNlXG5cbiAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQocG9zKVxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IE5FV0xJTkUgfHwgY29kZSA9PT0gRkVFRCB8fFxuICAgICAgKGNvZGUgPT09IENSICYmIGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpICE9PSBORVdMSU5FKVxuICAgICkge1xuICAgICAgb2Zmc2V0ID0gcG9zXG4gICAgICBsaW5lICs9IDFcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgIGNhc2UgTkVXTElORTpcbiAgICAgIGNhc2UgU1BBQ0U6XG4gICAgICBjYXNlIFRBQjpcbiAgICAgIGNhc2UgQ1I6XG4gICAgICBjYXNlIEZFRUQ6XG4gICAgICAgIG5leHQgPSBwb3NcbiAgICAgICAgZG8ge1xuICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgIGNvZGUgPSBjc3MuY2hhckNvZGVBdChuZXh0KVxuICAgICAgICAgIGlmIChjb2RlID09PSBORVdMSU5FKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBuZXh0XG4gICAgICAgICAgICBsaW5lICs9IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKFxuICAgICAgICAgIGNvZGUgPT09IFNQQUNFIHx8XG4gICAgICAgICAgY29kZSA9PT0gTkVXTElORSB8fFxuICAgICAgICAgIGNvZGUgPT09IFRBQiB8fFxuICAgICAgICAgIGNvZGUgPT09IENSIHx8XG4gICAgICAgICAgY29kZSA9PT0gRkVFRFxuICAgICAgICApXG5cbiAgICAgICAgY3VycmVudFRva2VuID0gWydzcGFjZScsIGNzcy5zbGljZShwb3MsIG5leHQpXVxuICAgICAgICBwb3MgPSBuZXh0IC0gMVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIE9QRU5fU1FVQVJFOlxuICAgICAgY2FzZSBDTE9TRV9TUVVBUkU6XG4gICAgICBjYXNlIE9QRU5fQ1VSTFk6XG4gICAgICBjYXNlIENMT1NFX0NVUkxZOlxuICAgICAgY2FzZSBDT0xPTjpcbiAgICAgIGNhc2UgU0VNSUNPTE9OOlxuICAgICAgY2FzZSBDTE9TRV9QQVJFTlRIRVNFUzpcbiAgICAgICAgbGV0IGNvbnRyb2xDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbY29udHJvbENoYXIsIGNvbnRyb2xDaGFyLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgT1BFTl9QQVJFTlRIRVNFUzpcbiAgICAgICAgcHJldiA9IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIucG9wKClbMV0gOiAnJ1xuICAgICAgICBuID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXYgPT09ICd1cmwnICYmXG4gICAgICAgICAgbiAhPT0gU0lOR0xFX1FVT1RFICYmIG4gIT09IERPVUJMRV9RVU9URSAmJlxuICAgICAgICAgIG4gIT09IFNQQUNFICYmIG4gIT09IE5FV0xJTkUgJiYgbiAhPT0gVEFCICYmXG4gICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUlxuICAgICAgICApIHtcbiAgICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlXG4gICAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YoJyknLCBuZXh0ICsgMSlcbiAgICAgICAgICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgICAgICAgICBpZiAoaWdub3JlIHx8IGlnbm9yZVVuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IHBvc1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdW5jbG9zZWQoJ2JyYWNrZXQnKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0XG4gICAgICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgICAgICBlc2NhcGVQb3MgLT0gMVxuICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IHdoaWxlIChlc2NhcGVkKVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWydicmFja2V0cycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5pbmRleE9mKCcpJywgcG9zICsgMSlcbiAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG5cbiAgICAgICAgICBpZiAobmV4dCA9PT0gLTEgfHwgUkVfQkFEX0JSQUNLRVQudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWycoJywgJygnLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYnJhY2tldHMnLCBjb250ZW50LFxuICAgICAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIFNJTkdMRV9RVU9URTpcbiAgICAgIGNhc2UgRE9VQkxFX1FVT1RFOlxuICAgICAgICBxdW90ZSA9IGNvZGUgPT09IFNJTkdMRV9RVU9URSA/ICdcXCcnIDogJ1wiJ1xuICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBlc2NhcGVkID0gZmFsc2VcbiAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YocXVvdGUsIG5leHQgKyAxKVxuICAgICAgICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGlnbm9yZSB8fCBpZ25vcmVVbmNsb3NlZCkge1xuICAgICAgICAgICAgICBuZXh0ID0gcG9zICsgMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdW5jbG9zZWQoJ3N0cmluZycpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVzY2FwZVBvcyA9IG5leHRcbiAgICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgICAgZXNjYXBlUG9zIC09IDFcbiAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZFxuICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoZXNjYXBlZClcblxuICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG4gICAgICAgIGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJylcbiAgICAgICAgbGFzdCA9IGxpbmVzLmxlbmd0aCAtIDFcblxuICAgICAgICBpZiAobGFzdCA+IDApIHtcbiAgICAgICAgICBuZXh0TGluZSA9IGxpbmUgKyBsYXN0XG4gICAgICAgICAgbmV4dE9mZnNldCA9IG5leHQgLSBsaW5lc1tsYXN0XS5sZW5ndGhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXh0TGluZSA9IGxpbmVcbiAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3N0cmluZycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbmV4dExpbmUsIG5leHQgLSBuZXh0T2Zmc2V0XG4gICAgICAgIF1cblxuICAgICAgICBvZmZzZXQgPSBuZXh0T2Zmc2V0XG4gICAgICAgIGxpbmUgPSBuZXh0TGluZVxuICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgQVQ6XG4gICAgICAgIFJFX0FUX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxXG4gICAgICAgIFJFX0FUX0VORC50ZXN0KGNzcylcbiAgICAgICAgaWYgKFJFX0FUX0VORC5sYXN0SW5kZXggPT09IDApIHtcbiAgICAgICAgICBuZXh0ID0gY3NzLmxlbmd0aCAtIDFcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXh0ID0gUkVfQVRfRU5ELmxhc3RJbmRleCAtIDJcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYXQtd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICBdXG5cbiAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIEJBQ0tTTEFTSDpcbiAgICAgICAgbmV4dCA9IHBvc1xuICAgICAgICBlc2NhcGUgPSB0cnVlXG4gICAgICAgIHdoaWxlIChjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgIGVzY2FwZSA9ICFlc2NhcGVcbiAgICAgICAgfVxuICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpXG4gICAgICAgIGlmIChcbiAgICAgICAgICBlc2NhcGUgJiZcbiAgICAgICAgICBjb2RlICE9PSBTTEFTSCAmJlxuICAgICAgICAgIGNvZGUgIT09IFNQQUNFICYmXG4gICAgICAgICAgY29kZSAhPT0gTkVXTElORSAmJlxuICAgICAgICAgIGNvZGUgIT09IFRBQiAmJlxuICAgICAgICAgIGNvZGUgIT09IENSICYmXG4gICAgICAgICAgY29kZSAhPT0gRkVFRFxuICAgICAgICApIHtcbiAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICBpZiAoUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCkpKSB7XG4gICAgICAgICAgICB3aGlsZSAoUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCArIDEpKSkge1xuICAgICAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IFNQQUNFKSB7XG4gICAgICAgICAgICAgIG5leHQgKz0gMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICBdXG5cbiAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoY29kZSA9PT0gU0xBU0ggJiYgY3NzLmNoYXJDb2RlQXQocG9zICsgMSkgPT09IEFTVEVSSVNLKSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5pbmRleE9mKCcqLycsIHBvcyArIDIpICsgMVxuICAgICAgICAgIGlmIChuZXh0ID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoaWdub3JlIHx8IGlnbm9yZVVuY2xvc2VkKSB7XG4gICAgICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1bmNsb3NlZCgnY29tbWVudCcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGVudCA9IGNzcy5zbGljZShwb3MsIG5leHQgKyAxKVxuICAgICAgICAgIGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJylcbiAgICAgICAgICBsYXN0ID0gbGluZXMubGVuZ3RoIC0gMVxuXG4gICAgICAgICAgaWYgKGxhc3QgPiAwKSB7XG4gICAgICAgICAgICBuZXh0TGluZSA9IGxpbmUgKyBsYXN0XG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gbmV4dCAtIGxpbmVzW2xhc3RdLmxlbmd0aFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0TGluZSA9IGxpbmVcbiAgICAgICAgICAgIG5leHRPZmZzZXQgPSBvZmZzZXRcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ2NvbW1lbnQnLCBjb250ZW50LFxuICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgbmV4dExpbmUsIG5leHQgLSBuZXh0T2Zmc2V0XG4gICAgICAgICAgXVxuXG4gICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldFxuICAgICAgICAgIGxpbmUgPSBuZXh0TGluZVxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxXG4gICAgICAgICAgUkVfV09SRF9FTkQudGVzdChjc3MpXG4gICAgICAgICAgaWYgKFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWyd3b3JkJywgY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpLFxuICAgICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgIF1cblxuICAgICAgICAgIGJ1ZmZlci5wdXNoKGN1cnJlbnRUb2tlbilcblxuICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcG9zKytcbiAgICByZXR1cm4gY3VycmVudFRva2VuXG4gIH1cblxuICBmdW5jdGlvbiBiYWNrICh0b2tlbikge1xuICAgIHJldHVybmVkLnB1c2godG9rZW4pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJhY2ssXG4gICAgbmV4dFRva2VuLFxuICAgIGVuZE9mRmlsZSxcbiAgICBwb3NpdGlvblxuICB9XG59XG4iXSwiZmlsZSI6InRva2VuaXplLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _path = _interopRequireDefault(require(\"path\"));\n\nvar _cssSyntaxError = _interopRequireDefault(require(\"./css-syntax-error\"));\n\nvar _previousMap = _interopRequireDefault(require(\"./previous-map\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nvar sequence = 0;\n/**\n * Represents the source CSS.\n *\n * @example\n * const root  = postcss.parse(css, { from: file })\n * const input = root.source.input\n */\n\nvar Input = /*#__PURE__*/function () {\n  /**\n   * @param {string} css    Input CSS source.\n   * @param {object} [opts] {@link Processor#process} options.\n   */\n  function Input(css, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    if (css === null || typeof css === 'undefined' || typeof css === 'object' && !css.toString) {\n      throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n    }\n    /**\n     * Input CSS source\n     *\n     * @type {string}\n     *\n     * @example\n     * const input = postcss.parse('a{}', { from: file }).input\n     * input.css //=> \"a{}\"\n     */\n\n\n    this.css = css.toString();\n\n    if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"\\uFFFE\") {\n      this.hasBOM = true;\n      this.css = this.css.slice(1);\n    } else {\n      this.hasBOM = false;\n    }\n\n    if (opts.from) {\n      if (/^\\w+:\\/\\//.test(opts.from) || _path.default.isAbsolute(opts.from)) {\n        /**\n         * The absolute path to the CSS source file defined\n         * with the `from` option.\n         *\n         * @type {string}\n         *\n         * @example\n         * const root = postcss.parse(css, { from: 'a.css' })\n         * root.source.input.file //=> '/home/ai/a.css'\n         */\n        this.file = opts.from;\n      } else {\n        this.file = _path.default.resolve(opts.from);\n      }\n    }\n\n    var map = new _previousMap.default(this.css, opts);\n\n    if (map.text) {\n      /**\n       * The input source map passed from a compilation step before PostCSS\n       * (for example, from Sass compiler).\n       *\n       * @type {PreviousMap}\n       *\n       * @example\n       * root.source.input.map.consumer().sources //=> ['a.sass']\n       */\n      this.map = map;\n      var file = map.consumer().file;\n      if (!this.file && file) this.file = this.mapResolve(file);\n    }\n\n    if (!this.file) {\n      sequence += 1;\n      /**\n       * The unique ID of the CSS source. It will be created if `from` option\n       * is not provided (because PostCSS does not know the file path).\n       *\n       * @type {string}\n       *\n       * @example\n       * const root = postcss.parse(css)\n       * root.source.input.file //=> undefined\n       * root.source.input.id   //=> \"<input css 1>\"\n       */\n\n      this.id = '<input css ' + sequence + '>';\n    }\n\n    if (this.map) this.map.file = this.from;\n  }\n\n  var _proto = Input.prototype;\n\n  _proto.error = function error(message, line, column, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    var result;\n    var origin = this.origin(line, column);\n\n    if (origin) {\n      result = new _cssSyntaxError.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);\n    } else {\n      result = new _cssSyntaxError.default(message, line, column, this.css, this.file, opts.plugin);\n    }\n\n    result.input = {\n      line: line,\n      column: column,\n      source: this.css\n    };\n    if (this.file) result.input.file = this.file;\n    return result;\n  }\n  /**\n   * Reads the input source map and returns a symbol position\n   * in the input source (e.g., in a Sass file that was compiled\n   * to CSS before being passed to PostCSS).\n   *\n   * @param {number} line   Line in input CSS.\n   * @param {number} column Column in input CSS.\n   *\n   * @return {filePosition} Position in input source.\n   *\n   * @example\n   * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }\n   */\n  ;\n\n  _proto.origin = function origin(line, column) {\n    if (!this.map) return false;\n    var consumer = this.map.consumer();\n    var from = consumer.originalPositionFor({\n      line: line,\n      column: column\n    });\n    if (!from.source) return false;\n    var result = {\n      file: this.mapResolve(from.source),\n      line: from.line,\n      column: from.column\n    };\n    var source = consumer.sourceContentFor(from.source);\n    if (source) result.source = source;\n    return result;\n  };\n\n  _proto.mapResolve = function mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file;\n    }\n\n    return _path.default.resolve(this.map.consumer().sourceRoot || '.', file);\n  }\n  /**\n   * The CSS source identifier. Contains {@link Input#file} if the user\n   * set the `from` option, or {@link Input#id} if they did not.\n   *\n   * @type {string}\n   *\n   * @example\n   * const root = postcss.parse(css, { from: 'a.css' })\n   * root.source.input.from //=> \"/home/ai/a.css\"\n   *\n   * const root = postcss.parse(css)\n   * root.source.input.from //=> \"<input css 1>\"\n   */\n  ;\n\n  _createClass(Input, [{\n    key: \"from\",\n    get: function get() {\n      return this.file || this.id;\n    }\n  }]);\n\n  return Input;\n}();\n\nvar _default = Input;\n/**\n * @typedef  {object} filePosition\n * @property {string} file   Path to file.\n * @property {number} line   Source line in file.\n * @property {number} column Source column in file.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmVzNiJdLCJuYW1lcyI6WyJzZXF1ZW5jZSIsIklucHV0IiwiY3NzIiwib3B0cyIsInRvU3RyaW5nIiwiRXJyb3IiLCJoYXNCT00iLCJzbGljZSIsImZyb20iLCJ0ZXN0IiwicGF0aCIsImlzQWJzb2x1dGUiLCJmaWxlIiwicmVzb2x2ZSIsIm1hcCIsIlByZXZpb3VzTWFwIiwidGV4dCIsImNvbnN1bWVyIiwibWFwUmVzb2x2ZSIsImlkIiwiZXJyb3IiLCJtZXNzYWdlIiwibGluZSIsImNvbHVtbiIsInJlc3VsdCIsIm9yaWdpbiIsIkNzc1N5bnRheEVycm9yIiwic291cmNlIiwicGx1Z2luIiwiaW5wdXQiLCJvcmlnaW5hbFBvc2l0aW9uRm9yIiwic291cmNlQ29udGVudEZvciIsInNvdXJjZVJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLENBQWY7QUFFQTs7Ozs7Ozs7SUFPTUMsSztBQUNKOzs7O0FBSUEsaUJBQWFDLEdBQWIsRUFBa0JDLElBQWxCLEVBQThCO0FBQUEsUUFBWkEsSUFBWTtBQUFaQSxNQUFBQSxJQUFZLEdBQUwsRUFBSztBQUFBOztBQUM1QixRQUNFRCxHQUFHLEtBQUssSUFBUixJQUNBLE9BQU9BLEdBQVAsS0FBZSxXQURmLElBRUMsT0FBT0EsR0FBUCxLQUFlLFFBQWYsSUFBMkIsQ0FBQ0EsR0FBRyxDQUFDRSxRQUhuQyxFQUlFO0FBQ0EsWUFBTSxJQUFJQyxLQUFKLHVCQUErQkgsR0FBL0IsNEJBQU47QUFDRDtBQUVEOzs7Ozs7Ozs7OztBQVNBLFNBQUtBLEdBQUwsR0FBV0EsR0FBRyxDQUFDRSxRQUFKLEVBQVg7O0FBRUEsUUFBSSxLQUFLRixHQUFMLENBQVMsQ0FBVCxNQUFnQixRQUFoQixJQUE0QixLQUFLQSxHQUFMLENBQVMsQ0FBVCxNQUFnQixRQUFoRCxFQUEwRDtBQUN4RCxXQUFLSSxNQUFMLEdBQWMsSUFBZDtBQUNBLFdBQUtKLEdBQUws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bUJBQVQsQ0FBNkI7QUFBRVIsTUFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLE1BQUFBLE1BQU0sRUFBTkE7QUFBUixLQUE3QixDQUFYO0FBQ0EsUUFBSSxDQUFDZixJQUFJLENBQUNtQixNQUFWLEVBQWtCLE9BQU8sS0FBUDtBQUVsQixRQUFJSCxNQUFNLEdBQUc7QUFDWFosTUFBQUEsSUFBSSxFQUFFLEtBQUtNLFVBQUwsQ0FBZ0JWLElBQUksQ0FBQ21CLE1BQXJCLENBREs7QUFFWEwsTUFBQUEsSUFBSSxFQUFFZCxJQUFJLENBQUNjLElBRkE7QUFHWEMsTUFBQUEsTUFBTSxFQUFFZixJQUFJLENBQUNlO0FBSEYsS0FBYjtBQU1BLFFBQUlJLE1BQU0sR0FBR1YsUUFBUSxDQUFDYyxnQkFBVCxDQUEwQnZCLElBQUksQ0FBQ21CLE1BQS9CLENBQWI7QUFDQSxRQUFJQSxNQUFKLEVBQVlILE1BQU0sQ0FBQ0csTUFBUCxHQUFnQkEsTUFBaEI7QUFFWixXQUFPSCxNQUFQO0FBQ0QsRzs7U0FFRE4sVSxHQUFBLG9CQUFZTixJQUFaLEVBQWtCO0FBQ2hCLFFBQUksWUFBWUgsSUFBWixDQUFpQkcsSUFBakIsQ0FBSixFQUE0QjtBQUMxQixhQUFPQSxJQUFQO0FBQ0Q7O0FBQ0QsV0FBT0YsY0FBS0csT0FBTCxDQUFhLEtBQUtDLEdBQUwsQ0FBU0csUUFBVCxHQUFvQmUsVUFBcEIsSUFBa0MsR0FBL0MsRUFBb0RwQixJQUFwRCxDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBYVk7QUFDVixhQUFPLEtBQUtBLElBQUwsSUFBYSxLQUFLTyxFQUF6QjtBQUNEOzs7Ozs7ZUFHWWxCLEs7QUFFZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5cbmltcG9ydCBDc3NTeW50YXhFcnJvciBmcm9tICcuL2Nzcy1zeW50YXgtZXJyb3InXG5pbXBvcnQgUHJldmlvdXNNYXAgZnJvbSAnLi9wcmV2aW91cy1tYXAnXG5cbmxldCBzZXF1ZW5jZSA9IDBcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBzb3VyY2UgQ1NTLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ICA9IHBvc3Rjc3MucGFyc2UoY3NzLCB7IGZyb206IGZpbGUgfSlcbiAqIGNvbnN0IGlucHV0ID0gcm9vdC5zb3VyY2UuaW5wdXRcbiAqL1xuY2xhc3MgSW5wdXQge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNzcyAgICBJbnB1dCBDU1Mgc291cmNlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30gb3B0aW9ucy5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChjc3MsIG9wdHMgPSB7IH0pIHtcbiAgICBpZiAoXG4gICAgICBjc3MgPT09IG51bGwgfHxcbiAgICAgIHR5cGVvZiBjc3MgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAodHlwZW9mIGNzcyA9PT0gJ29iamVjdCcgJiYgIWNzcy50b1N0cmluZylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUG9zdENTUyByZWNlaXZlZCAkeyBjc3MgfSBpbnN0ZWFkIG9mIENTUyBzdHJpbmdgKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElucHV0IENTUyBzb3VyY2VcbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGlucHV0ID0gcG9zdGNzcy5wYXJzZSgnYXt9JywgeyBmcm9tOiBmaWxlIH0pLmlucHV0XG4gICAgICogaW5wdXQuY3NzIC8vPT4gXCJhe31cIlxuICAgICAqL1xuICAgIHRoaXMuY3NzID0gY3NzLnRvU3RyaW5nKClcblxuICAgIGlmICh0aGlzLmNzc1swXSA9PT0gJ1xcdUZFRkYnIHx8IHRoaXMuY3NzWzBdID09PSAnXFx1RkZGRScpIHtcbiAgICAgIHRoaXMuaGFzQk9NID0gdHJ1ZVxuICAgICAgdGhpcy5jc3MgPSB0aGlzLmNzcy5zbGljZSgxKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhc0JPTSA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKG9wdHMuZnJvbSkge1xuICAgICAgaWYgKC9eXFx3KzpcXC9cXC8vLnRlc3Qob3B0cy5mcm9tKSB8fCBwYXRoLmlzQWJzb2x1dGUob3B0cy5mcm9tKSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIENTUyBzb3VyY2UgZmlsZSBkZWZpbmVkXG4gICAgICAgICAqIHdpdGggdGhlIGBmcm9tYCBvcHRpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiAnYS5jc3MnIH0pXG4gICAgICAgICAqIHJvb3Quc291cmNlLmlucHV0LmZpbGUgLy89PiAnL2hvbWUvYWkvYS5jc3MnXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmZpbGUgPSBvcHRzLmZyb21cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsZSA9IHBhdGgucmVzb2x2ZShvcHRzLmZyb20pXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG1hcCA9IG5ldyBQcmV2aW91c01hcCh0aGlzLmNzcywgb3B0cylcbiAgICBpZiAobWFwLnRleHQpIHtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGlucHV0IHNvdXJjZSBtYXAgcGFzc2VkIGZyb20gYSBjb21waWxhdGlvbiBzdGVwIGJlZm9yZSBQb3N0Q1NTXG4gICAgICAgKiAoZm9yIGV4YW1wbGUsIGZyb20gU2FzcyBjb21waWxlcikuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge1ByZXZpb3VzTWFwfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5tYXAuY29uc3VtZXIoKS5zb3VyY2VzIC8vPT4gWydhLnNhc3MnXVxuICAgICAgICovXG4gICAgICB0aGlzLm1hcCA9IG1hcFxuICAgICAgbGV0IGZpbGUgPSBtYXAuY29uc3VtZXIoKS5maWxlXG4gICAgICBpZiAoIXRoaXMuZmlsZSAmJiBmaWxlKSB0aGlzLmZpbGUgPSB0aGlzLm1hcFJlc29sdmUoZmlsZSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZmlsZSkge1xuICAgICAgc2VxdWVuY2UgKz0gMVxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgdW5pcXVlIElEIG9mIHRoZSBDU1Mgc291cmNlLiBJdCB3aWxsIGJlIGNyZWF0ZWQgaWYgYGZyb21gIG9wdGlvblxuICAgICAgICogaXMgbm90IHByb3ZpZGVkIChiZWNhdXNlIFBvc3RDU1MgZG9lcyBub3Qga25vdyB0aGUgZmlsZSBwYXRoKS5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MpXG4gICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5maWxlIC8vPT4gdW5kZWZpbmVkXG4gICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5pZCAgIC8vPT4gXCI8aW5wdXQgY3NzIDE+XCJcbiAgICAgICAqL1xuICAgICAgdGhpcy5pZCA9ICc8aW5wdXQgY3NzICcgKyBzZXF1ZW5jZSArICc+J1xuICAgIH1cbiAgICBpZiAodGhpcy5tYXApIHRoaXMubWFwLmZpbGUgPSB0aGlzLmZyb21cbiAgfVxuXG4gIGVycm9yIChtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIG9wdHMgPSB7IH0pIHtcbiAgICBsZXQgcmVzdWx0XG4gICAgbGV0IG9yaWdpbiA9IHRoaXMub3JpZ2luKGxpbmUsIGNvbHVtbilcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICByZXN1bHQgPSBuZXcgQ3NzU3ludGF4RXJyb3IoXG4gICAgICAgIG1lc3NhZ2UsIG9yaWdpbi5saW5lLCBvcmlnaW4uY29sdW1uLFxuICAgICAgICBvcmlnaW4uc291cmNlLCBvcmlnaW4uZmlsZSwgb3B0cy5wbHVnaW5cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gbmV3IENzc1N5bnRheEVycm9yKFxuICAgICAgICBtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHRoaXMuY3NzLCB0aGlzLmZpbGUsIG9wdHMucGx1Z2luKVxuICAgIH1cblxuICAgIHJlc3VsdC5pbnB1dCA9IHsgbGluZSwgY29sdW1uLCBzb3VyY2U6IHRoaXMuY3NzIH1cbiAgICBpZiAodGhpcy5maWxlKSByZXN1bHQuaW5wdXQuZmlsZSA9IHRoaXMuZmlsZVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBpbnB1dCBzb3VyY2UgbWFwIGFuZCByZXR1cm5zIGEgc3ltYm9sIHBvc2l0aW9uXG4gICAqIGluIHRoZSBpbnB1dCBzb3VyY2UgKGUuZy4sIGluIGEgU2FzcyBmaWxlIHRoYXQgd2FzIGNvbXBpbGVkXG4gICAqIHRvIENTUyBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIFBvc3RDU1MpLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGluZSAgIExpbmUgaW4gaW5wdXQgQ1NTLlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uIENvbHVtbiBpbiBpbnB1dCBDU1MuXG4gICAqXG4gICAqIEByZXR1cm4ge2ZpbGVQb3NpdGlvbn0gUG9zaXRpb24gaW4gaW5wdXQgc291cmNlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LnNvdXJjZS5pbnB1dC5vcmlnaW4oMSwgMSkgLy89PiB7IGZpbGU6ICdhLmNzcycsIGxpbmU6IDMsIGNvbHVtbjogMSB9XG4gICAqL1xuICBvcmlnaW4gKGxpbmUsIGNvbHVtbikge1xuICAgIGlmICghdGhpcy5tYXApIHJldHVybiBmYWxzZVxuICAgIGxldCBjb25zdW1lciA9IHRoaXMubWFwLmNvbnN1bWVyKClcblxuICAgIGxldCBmcm9tID0gY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7IGxpbmUsIGNvbHVtbiB9KVxuICAgIGlmICghZnJvbS5zb3VyY2UpIHJldHVybiBmYWxzZVxuXG4gICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgIGZpbGU6IHRoaXMubWFwUmVzb2x2ZShmcm9tLnNvdXJjZSksXG4gICAgICBsaW5lOiBmcm9tLmxpbmUsXG4gICAgICBjb2x1bW46IGZyb20uY29sdW1uXG4gICAgfVxuXG4gICAgbGV0IHNvdXJjZSA9IGNvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3IoZnJvbS5zb3VyY2UpXG4gICAgaWYgKHNvdXJjZSkgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgbWFwUmVzb2x2ZSAoZmlsZSkge1xuICAgIGlmICgvXlxcdys6XFwvXFwvLy50ZXN0KGZpbGUpKSB7XG4gICAgICByZXR1cm4gZmlsZVxuICAgIH1cbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMubWFwLmNvbnN1bWVyKCkuc291cmNlUm9vdCB8fCAnLicsIGZpbGUpXG4gIH1cblxuICAvKipcbiAgICogVGhlIENTUyBzb3VyY2UgaWRlbnRpZmllci4gQ29udGFpbnMge0BsaW5rIElucHV0I2ZpbGV9IGlmIHRoZSB1c2VyXG4gICAqIHNldCB0aGUgYGZyb21gIG9wdGlvbiwgb3Ige0BsaW5rIElucHV0I2lkfSBpZiB0aGV5IGRpZCBub3QuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiAnYS5jc3MnIH0pXG4gICAqIHJvb3Quc291cmNlLmlucHV0LmZyb20gLy89PiBcIi9ob21lL2FpL2EuY3NzXCJcbiAgICpcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoY3NzKVxuICAgKiByb290LnNvdXJjZS5pbnB1dC5mcm9tIC8vPT4gXCI8aW5wdXQgY3NzIDE+XCJcbiAgICovXG4gIGdldCBmcm9tICgpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlIHx8IHRoaXMuaWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnB1dFxuXG4vKipcbiAqIEB0eXBlZGVmICB7b2JqZWN0fSBmaWxlUG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmaWxlICAgUGF0aCB0byBmaWxlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxpbmUgICBTb3VyY2UgbGluZSBpbiBmaWxlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbHVtbiBTb3VyY2UgY29sdW1uIGluIGZpbGUuXG4gKi9cbiJdLCJmaWxlIjoiaW5wdXQuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _sourceMap = _interopRequireDefault(require(\"source-map\"));\n\nvar _path = _interopRequireDefault(require(\"path\"));\n\nvar _fs = _interopRequireDefault(require(\"fs\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction fromBase64(str) {\n  if (Buffer) {\n    return Buffer.from(str, 'base64').toString();\n  } else {\n    return window.atob(str);\n  }\n}\n/**\n * Source map information from input CSS.\n * For example, source map after Sass compiler.\n *\n * This class will automatically find source map in input CSS or in file system\n * near input file (according `from` option).\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.sass.css' })\n * root.input.map //=> PreviousMap\n */\n\n\nvar PreviousMap = /*#__PURE__*/function () {\n  /**\n   * @param {string}         css    Input CSS source.\n   * @param {processOptions} [opts] {@link Processor#process} options.\n   */\n  function PreviousMap(css, opts) {\n    this.loadAnnotation(css);\n    /**\n     * Was source map inlined by data-uri to input CSS.\n     *\n     * @type {boolean}\n     */\n\n    this.inline = this.startWith(this.annotation, 'data:');\n    var prev = opts.map ? opts.map.prev : undefined;\n    var text = this.loadMap(opts.from, prev);\n    if (text) this.text = text;\n  }\n  /**\n   * Create a instance of `SourceMapGenerator` class\n   * from the `source-map` library to work with source map information.\n   *\n   * It is lazy method, so it will create object only on first call\n   * and then it will use cache.\n   *\n   * @return {SourceMapGenerator} Object with source map information.\n   */\n\n\n  var _proto = PreviousMap.prototype;\n\n  _proto.consumer = function consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new _sourceMap.default.SourceMapConsumer(this.text);\n    }\n\n    return this.consumerCache;\n  }\n  /**\n   * Does source map contains `sourcesContent` with input source text.\n   *\n   * @return {boolean} Is `sourcesContent` present.\n   */\n  ;\n\n  _proto.withContent = function withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  };\n\n  _proto.startWith = function startWith(string, start) {\n    if (!string) return false;\n    return string.substr(0, start.length) === start;\n  };\n\n  _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n    return sourceMapString.match(/\\/\\*\\s*# sourceMappingURL=((?:(?!sourceMappingURL=).)*)\\*\\//)[1].trim();\n  };\n\n  _proto.loadAnnotation = function loadAnnotation(css) {\n    var annotations = css.match(/\\/\\*\\s*# sourceMappingURL=(?:(?!sourceMappingURL=).)*\\*\\//gm);\n\n    if (annotations && annotations.length > 0) {\n      // Locate the last sourceMappingURL to avoid picking up\n      // sourceMappingURLs from comments, strings, etc.\n      var lastAnnotation = annotations[annotations.length - 1];\n\n      if (lastAnnotation) {\n        this.annotation = this.getAnnotationURL(lastAnnotation);\n      }\n    }\n  };\n\n  _proto.decodeInline = function decodeInline(text) {\n    var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n    var baseUri = /^data:application\\/json;base64,/;\n    var uri = 'data:application/json,';\n\n    if (this.startWith(text, uri)) {\n      return decodeURIComponent(text.substr(uri.length));\n    }\n\n    if (baseCharsetUri.test(text) || baseUri.test(text)) {\n      return fromBase64(text.substr(RegExp.lastMatch.length));\n    }\n\n    var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error('Unsupported source map encoding ' + encoding);\n  };\n\n  _proto.loadMap = function loadMap(file, prev) {\n    if (prev === false) return false;\n\n    if (prev) {\n      if (typeof prev === 'string') {\n        return prev;\n      } else if (typeof prev === 'function') {\n        var prevPath = prev(file);\n\n        if (prevPath && _fs.default.existsSync && _fs.default.existsSync(prevPath)) {\n          return _fs.default.readFileSync(prevPath, 'utf-8').toString().trim();\n        } else {\n          throw new Error('Unable to load previous source map: ' + prevPath.toString());\n        }\n      } else if (prev instanceof _sourceMap.default.SourceMapConsumer) {\n        return _sourceMap.default.SourceMapGenerator.fromSourceMap(prev).toString();\n      } else if (prev instanceof _sourceMap.default.SourceMapGenerator) {\n        return prev.toString();\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev);\n      } else {\n        throw new Error('Unsupported previous source map format: ' + prev.toString());\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation);\n    } else if (this.annotation) {\n      var map = this.annotation;\n      if (file) map = _path.default.join(_path.default.dirname(file), map);\n      this.root = _path.default.dirname(map);\n\n      if (_fs.default.existsSync && _fs.default.existsSync(map)) {\n        return _fs.default.readFileSync(map, 'utf-8').toString().trim();\n      } else {\n        return false;\n      }\n    }\n  };\n\n  _proto.isMap = function isMap(map) {\n    if (typeof map !== 'object') return false;\n    return typeof map.mappings === 'string' || typeof map._mappings === 'string';\n  };\n\n  return PreviousMap;\n}();\n\nvar _default = PreviousMap;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByZXZpb3VzLW1hcC5lczYiXSwibmFtZXMiOlsiZnJvbUJhc2U2NCIsInN0ciIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsIndpbmRvdyIsImF0b2IiLCJQcmV2aW91c01hcCIsImNzcyIsIm9wdHMiLCJsb2FkQW5ub3RhdGlvbiIsImlubGluZSIsInN0YXJ0V2l0aCIsImFubm90YXRpb24iLCJwcmV2IiwibWFwIiwidW5kZWZpbmVkIiwidGV4dCIsImxvYWRNYXAiLCJjb25zdW1lciIsImNvbnN1bWVyQ2FjaGUiLCJtb3ppbGxhIiwiU291cmNlTWFwQ29uc3VtZXIiLCJ3aXRoQ29udGVudCIsInNvdXJjZXNDb250ZW50IiwibGVuZ3RoIiwic3RyaW5nIiwic3RhcnQiLCJzdWJzdHIiLCJnZXRBbm5vdGF0aW9uVVJMIiwic291cmNlTWFwU3RyaW5nIiwibWF0Y2giLCJ0cmltIiwiYW5ub3RhdGlvbnMiLCJsYXN0QW5ub3RhdGlvbiIsImRlY29kZUlubGluZSIsImJhc2VDaGFyc2V0VXJpIiwiYmFzZVVyaSIsInVyaSIsImRlY29kZVVSSUNvbXBvbmVudCIsInRlc3QiLCJSZWdFeHAiLCJsYXN0TWF0Y2giLCJlbmNvZGluZyIsIkVycm9yIiwiZmlsZSIsInByZXZQYXRoIiwiZnMiLCJleGlzdHNTeW5jIiwicmVhZEZpbGVTeW5jIiwiU291cmNlTWFwR2VuZXJhdG9yIiwiZnJvbVNvdXJjZU1hcCIsImlzTWFwIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdGgiLCJqb2luIiwiZGlybmFtZSIsInJvb3QiLCJtYXBwaW5ncyIsIl9tYXBwaW5ncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUVBLFNBQVNBLFVBQVQsQ0FBcUJDLEdBQXJCLEVBQTBCO0FBQ3hCLE1BQUlDLE1BQUosRUFBWTtBQUNWLFdBQU9BLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZRixHQUFaLEVBQWlCLFFBQWpCLEVBQTJCRyxRQUEzQixFQUFQO0FBQ0QsR0FGRCxN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QUFMLENBQWV4QyxJQUFmLENBQVA7QUFDRCxPQUZNLE1BRUE7QUFDTCxjQUFNLElBQUk4QixLQUFKLENBQ0osNkNBQTZDOUIsSUFBSSxDQUFDVixRQUFMLEVBRHpDLENBQU47QUFFRDtBQUNGLEtBckJELE1BcUJPLElBQUksS0FBS08sTUFBVCxFQUFpQjtBQUN0QixhQUFPLEtBQUt3QixZQUFMLENBQWtCLEtBQUt0QixVQUF2QixDQUFQO0FBQ0QsS0FGTSxNQUVBLElBQUksS0FBS0EsVUFBVCxFQUFxQjtBQUMxQixVQUFJRSxHQUFHLEdBQUcsS0FBS0YsVUFBZjtBQUNBLFVBQUlnQyxJQUFKLEVBQVU5QixHQUFHLEdBQUd3QyxjQUFLQyxJQUFMLENBQVVELGNBQUtFLE9BQUwsQ0FBYVosSUFBYixDQUFWLEVBQThCOUIsR0FBOUIsQ0FBTjtBQUVWLFdBQUsyQyxJQUFMLEdBQVlILGNBQUtFLE9BQUwsQ0FBYTFDLEdBQWIsQ0FBWjs7QUFDQSxVQUFJZ0MsWUFBR0MsVUFBSCxJQUFpQkQsWUFBR0MsVUFBSCxDQUFjakMsR0FBZCxDQUFyQixFQUF5QztBQUN2QyxlQUFPZ0MsWUFBR0UsWUFBSCxDQUFnQmxDLEdBQWhCLEVBQXFCLE9BQXJCLEVBQThCWCxRQUE5QixHQUF5QzRCLElBQXpDLEVBQVA7QUFDRCxPQUZELE1BRU87QUFDTCxlQUFPLEtBQVA7QUFDRDtBQUNGO0FBQ0YsRzs7U0FFRG9CLEssR0FBQSxlQUFPckMsR0FBUCxFQUFZO0FBQ1YsUUFBSSxPQUFPQSxHQUFQLEtBQWUsUUFBbkIsRUFBNkIsT0FBTyxLQUFQO0FBQzdCLFdBQU8sT0FBT0EsR0FBRyxDQUFDNEMsUUFBWCxLQUF3QixRQUF4QixJQUFvQyxPQUFPNUMsR0FBRyxDQUFDNkMsU0FBWCxLQUF5QixRQUFwRTtBQUNELEc7Ozs7O2VBR1lyRCxXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vemlsbGEgZnJvbSAnc291cmNlLW1hcCdcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5cbmZ1bmN0aW9uIGZyb21CYXNlNjQgKHN0cikge1xuICBpZiAoQnVmZmVyKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gd2luZG93LmF0b2Ioc3RyKVxuICB9XG59XG5cbi8qKlxuICogU291cmNlIG1hcCBpbmZvcm1hdGlvbiBmcm9tIGlucHV0IENTUy5cbiAqIEZvciBleGFtcGxlLCBzb3VyY2UgbWFwIGFmdGVyIFNhc3MgY29tcGlsZXIuXG4gKlxuICogVGhpcyBjbGFzcyB3aWxsIGF1dG9tYXRpY2FsbHkgZmluZCBzb3VyY2UgbWFwIGluIGlucHV0IENTUyBvciBpbiBmaWxlIHN5c3RlbVxuICogbmVhciBpbnB1dCBmaWxlIChhY2NvcmRpbmcgYGZyb21gIG9wdGlvbikuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiAnYS5zYXNzLmNzcycgfSlcbiAqIHJvb3QuaW5wdXQubWFwIC8vPT4gUHJldmlvdXNNYXBcbiAqL1xuY2xhc3MgUHJldmlvdXNNYXAge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgY3NzICAgIElucHV0IENTUyBzb3VyY2UuXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9IG9wdGlvbnMuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoY3NzLCBvcHRzKSB7XG4gICAgdGhpcy5sb2FkQW5ub3RhdGlvbihjc3MpXG4gICAgLyoqXG4gICAgICogV2FzIHNvdXJjZSBtYXAgaW5saW5lZCBieSBkYXRhLXVyaSB0byBpbnB1dCBDU1MuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmlubGluZSA9IHRoaXMuc3RhcnRXaXRoKHRoaXMuYW5ub3RhdGlvbiwgJ2RhdGE6JylcblxuICAgIGxldCBwcmV2ID0gb3B0cy5tYXAgPyBvcHRzLm1hcC5wcmV2IDogdW5kZWZpbmVkXG4gICAgbGV0IHRleHQgPSB0aGlzLmxvYWRNYXAob3B0cy5mcm9tLCBwcmV2KVxuICAgIGlmICh0ZXh0KSB0aGlzLnRleHQgPSB0ZXh0XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgaW5zdGFuY2Ugb2YgYFNvdXJjZU1hcEdlbmVyYXRvcmAgY2xhc3NcbiAgICogZnJvbSB0aGUgYHNvdXJjZS1tYXBgIGxpYnJhcnkgdG8gd29yayB3aXRoIHNvdXJjZSBtYXAgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEl0IGlzIGxhenkgbWV0aG9kLCBzbyBpdCB3aWxsIGNyZWF0ZSBvYmplY3Qgb25seSBvbiBmaXJzdCBjYWxsXG4gICAqIGFuZCB0aGVuIGl0IHdpbGwgdXNlIGNhY2hlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtTb3VyY2VNYXBHZW5lcmF0b3J9IE9iamVjdCB3aXRoIHNvdXJjZSBtYXAgaW5mb3JtYXRpb24uXG4gICAqL1xuICBjb25zdW1lciAoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnN1bWVyQ2FjaGUpIHtcbiAgICAgIHRoaXMuY29uc3VtZXJDYWNoZSA9IG5ldyBtb3ppbGxhLlNvdXJjZU1hcENvbnN1bWVyKHRoaXMudGV4dClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29uc3VtZXJDYWNoZVxuICB9XG5cbiAgLyoqXG4gICAqIERvZXMgc291cmNlIG1hcCBjb250YWlucyBgc291cmNlc0NvbnRlbnRgIHdpdGggaW5wdXQgc291cmNlIHRleHQuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IElzIGBzb3VyY2VzQ29udGVudGAgcHJlc2VudC5cbiAgICovXG4gIHdpdGhDb250ZW50ICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5jb25zdW1lcigpLnNvdXJjZXNDb250ZW50ICYmXG4gICAgICAgICAgICAgIHRoaXMuY29uc3VtZXIoKS5zb3VyY2VzQ29udGVudC5sZW5ndGggPiAwKVxuICB9XG5cbiAgc3RhcnRXaXRoIChzdHJpbmcsIHN0YXJ0KSB7XG4gICAgaWYgKCFzdHJpbmcpIHJldHVybiBmYWxzZVxuICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIHN0YXJ0Lmxlbmd0aCkgPT09IHN0YXJ0XG4gIH1cblxuICBnZXRBbm5vdGF0aW9uVVJMIChzb3VyY2VNYXBTdHJpbmcpIHtcbiAgICByZXR1cm4gc291cmNlTWFwU3RyaW5nXG4gICAgICAubWF0Y2goL1xcL1xcKlxccyojIHNvdXJjZU1hcHBpbmdVUkw9KCg/Oig/IXNvdXJjZU1hcHBpbmdVUkw9KS4pKilcXCpcXC8vKVsxXVxuICAgICAgLnRyaW0oKVxuICB9XG5cbiAgbG9hZEFubm90YXRpb24gKGNzcykge1xuICAgIGxldCBhbm5vdGF0aW9ucyA9IGNzcy5tYXRjaChcbiAgICAgIC9cXC9cXCpcXHMqIyBzb3VyY2VNYXBwaW5nVVJMPSg/Oig/IXNvdXJjZU1hcHBpbmdVUkw9KS4pKlxcKlxcLy9nbVxuICAgIClcblxuICAgIGlmIChhbm5vdGF0aW9ucyAmJiBhbm5vdGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBMb2NhdGUgdGhlIGxhc3Qgc291cmNlTWFwcGluZ1VSTCB0byBhdm9pZCBwaWNraW5nIHVwXG4gICAgICAvLyBzb3VyY2VNYXBwaW5nVVJMcyBmcm9tIGNvbW1lbnRzLCBzdHJpbmdzLCBldGMuXG4gICAgICBsZXQgbGFzdEFubm90YXRpb24gPSBhbm5vdGF0aW9uc1thbm5vdGF0aW9ucy5sZW5ndGggLSAxXVxuICAgICAgaWYgKGxhc3RBbm5vdGF0aW9uKSB7XG4gICAgICAgIHRoaXMuYW5ub3RhdGlvbiA9IHRoaXMuZ2V0QW5ub3RhdGlvblVSTChsYXN0QW5ub3RhdGlvbilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZWNvZGVJbmxpbmUgKHRleHQpIHtcbiAgICBsZXQgYmFzZUNoYXJzZXRVcmkgPSAvXmRhdGE6YXBwbGljYXRpb25cXC9qc29uO2NoYXJzZXQ9dXRmLT84O2Jhc2U2NCwvXG4gICAgbGV0IGJhc2VVcmkgPSAvXmRhdGE6YXBwbGljYXRpb25cXC9qc29uO2Jhc2U2NCwvXG4gICAgbGV0IHVyaSA9ICdkYXRhOmFwcGxpY2F0aW9uL2pzb24sJ1xuXG4gICAgaWYgKHRoaXMuc3RhcnRXaXRoKHRleHQsIHVyaSkpIHtcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodGV4dC5zdWJzdHIodXJpLmxlbmd0aCkpXG4gICAgfVxuXG4gICAgaWYgKGJhc2VDaGFyc2V0VXJpLnRlc3QodGV4dCkgfHwgYmFzZVVyaS50ZXN0KHRleHQpKSB7XG4gICAgICByZXR1cm4gZnJvbUJhc2U2NCh0ZXh0LnN1YnN0cihSZWdFeHAubGFzdE1hdGNoLmxlbmd0aCkpXG4gICAgfVxuXG4gICAgbGV0IGVuY29kaW5nID0gdGV4dC5tYXRjaCgvZGF0YTphcHBsaWNhdGlvblxcL2pzb247KFteLF0rKSwvKVsxXVxuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgc291cmNlIG1hcCBlbmNvZGluZyAnICsgZW5jb2RpbmcpXG4gIH1cblxuICBsb2FkTWFwIChmaWxlLCBwcmV2KSB7XG4gICAgaWYgKHByZXYgPT09IGZhbHNlKSByZXR1cm4gZmFsc2VcblxuICAgIGlmIChwcmV2KSB7XG4gICAgICBpZiAodHlwZW9mIHByZXYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcmV2ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGxldCBwcmV2UGF0aCA9IHByZXYoZmlsZSlcbiAgICAgICAgaWYgKHByZXZQYXRoICYmIGZzLmV4aXN0c1N5bmMgJiYgZnMuZXhpc3RzU3luYyhwcmV2UGF0aCkpIHtcbiAgICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKHByZXZQYXRoLCAndXRmLTgnKS50b1N0cmluZygpLnRyaW0oKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdVbmFibGUgdG8gbG9hZCBwcmV2aW91cyBzb3VyY2UgbWFwOiAnICsgcHJldlBhdGgudG9TdHJpbmcoKSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcmV2IGluc3RhbmNlb2YgbW96aWxsYS5Tb3VyY2VNYXBDb25zdW1lcikge1xuICAgICAgICByZXR1cm4gbW96aWxsYS5Tb3VyY2VNYXBHZW5lcmF0b3IuZnJvbVNvdXJjZU1hcChwcmV2KS50b1N0cmluZygpXG4gICAgICB9IGVsc2UgaWYgKHByZXYgaW5zdGFuY2VvZiBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvcikge1xuICAgICAgICByZXR1cm4gcHJldi50b1N0cmluZygpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNNYXAocHJldikpIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHByZXYpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1Vuc3VwcG9ydGVkIHByZXZpb3VzIHNvdXJjZSBtYXAgZm9ybWF0OiAnICsgcHJldi50b1N0cmluZygpKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pbmxpbmUpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlY29kZUlubGluZSh0aGlzLmFubm90YXRpb24pXG4gICAgfSBlbHNlIGlmICh0aGlzLmFubm90YXRpb24pIHtcbiAgICAgIGxldCBtYXAgPSB0aGlzLmFubm90YXRpb25cbiAgICAgIGlmIChmaWxlKSBtYXAgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKGZpbGUpLCBtYXApXG5cbiAgICAgIHRoaXMucm9vdCA9IHBhdGguZGlybmFtZShtYXApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyAmJiBmcy5leGlzdHNTeW5jKG1hcCkpIHtcbiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhtYXAsICd1dGYtOCcpLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc01hcCAobWFwKSB7XG4gICAgaWYgKHR5cGVvZiBtYXAgIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gdHlwZW9mIG1hcC5tYXBwaW5ncyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG1hcC5fbWFwcGluZ3MgPT09ICdzdHJpbmcnXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJldmlvdXNNYXBcbiJdLCJmaWxlIjoicHJldmlvdXMtbWFwLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Contains helpers for working with vendor prefixes.\n *\n * @example\n * const vendor = postcss.vendor\n *\n * @namespace vendor\n */\nvar vendor = {\n  /**\n   * Returns the vendor prefix extracted from an input string.\n   *\n   * @param {string} prop String with or without vendor prefix.\n   *\n   * @return {string} vendor prefix or empty string\n   *\n   * @example\n   * postcss.vendor.prefix('-moz-tab-size') //=> '-moz-'\n   * postcss.vendor.prefix('tab-size')      //=> ''\n   */\n  prefix: function prefix(prop) {\n    var match = prop.match(/^(-\\w+-)/);\n\n    if (match) {\n      return match[0];\n    }\n\n    return '';\n  },\n\n  /**\n     * Returns the input string stripped of its vendor prefix.\n     *\n     * @param {string} prop String with or without vendor prefix.\n     *\n     * @return {string} String name without vendor prefixes.\n     *\n     * @example\n     * postcss.vendor.unprefixed('-moz-tab-size') //=> 'tab-size'\n     */\n  unprefixed: function unprefixed(prop) {\n    return prop.replace(/^-\\w+-/, '');\n  }\n};\nvar _default = vendor;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvci5lczYiXSwibmFtZXMiOlsidmVuZG9yIiwicHJlZml4IiwicHJvcCIsIm1hdGNoIiwidW5wcmVmaXhlZCIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7O0FBUUEsSUFBSUEsTUFBTSxHQUFHO0FBRVg7Ozs7Ozs7Ozs7O0FBV0FDLEVBQUFBLE1BYlcsa0JBYUhDLElBYkcsRUFhRztBQUNaLFFBQUlDLEtBQUssR0FBR0QsSUFBSSxDQUFDQyxLQUFMLENBQVcsVUFBWCxDQUFaOztBQUNBLFFBQUlBLEtBQUosRUFBVztBQUNULGFBQU9BLEtBQUssQ0FBQyxDQUFELENBQVo7QUFDRDs7QUFFRCxXQUFPLEVBQVA7QUFDRCxHQXBCVTs7QUFzQlg7Ozs7Ozs7Ozs7QUFVQUMsRUFBQUEsVUFoQ1csc0JBZ0NDRixJQWhDRCxFQWdDTztBQUNoQixXQUFPQSxJQUFJLENBQUNHLE9BQUwsQ0FBYSxRQUFiLEVBQXVCLEVBQXZCLENBQVA7QUFDRDtBQWxDVSxDQUFiO2VBc0NlTCxNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250YWlucyBoZWxwZXJzIGZvciB3b3JraW5nIHdpdGggdmVuZG9yIHByZWZpeGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB2ZW5kb3IgPSBwb3N0Y3NzLnZlbmRvclxuICpcbiAqIEBuYW1lc3BhY2UgdmVuZG9yXG4gKi9cbmxldCB2ZW5kb3IgPSB7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZlbmRvciBwcmVmaXggZXh0cmFjdGVkIGZyb20gYW4gaW5wdXQgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBTdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXguXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdmVuZG9yIHByZWZpeCBvciBlbXB0eSBzdHJpbmdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCctbW96LXRhYi1zaXplJykgLy89PiAnLW1vei0nXG4gICAqIHBvc3Rjc3MudmVuZG9yLnByZWZpeCgndGFiLXNpemUnKSAgICAgIC8vPT4gJydcbiAgICovXG4gIHByZWZpeCAocHJvcCkge1xuICAgIGxldCBtYXRjaCA9IHByb3AubWF0Y2goL14oLVxcdystKS8pXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWF0Y2hbMF1cbiAgICB9XG5cbiAgICByZXR1cm4gJydcbiAgfSxcblxuICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgc3RyaXBwZWQgb2YgaXRzIHZlbmRvciBwcmVmaXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBTdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXguXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyBuYW1lIHdpdGhvdXQgdmVuZG9yIHByZWZpeGVzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBwb3N0Y3NzLnZlbmRvci51bnByZWZpeGVkKCctbW96LXRhYi1zaXplJykgLy89PiAndGFiLXNpemUnXG4gICAgICovXG4gIHVucHJlZml4ZWQgKHByb3ApIHtcbiAgICByZXR1cm4gcHJvcC5yZXBsYWNlKC9eLVxcdystLywgJycpXG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCB2ZW5kb3JcbiJdLCJmaWxlIjoidmVuZG9yLmpzIn0=\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n  return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n  return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n  var batch = getBatch();\n  var first = null;\n  var last = null;\n  return {\n    clear: function clear() {\n      first = null;\n      last = null;\n    },\n    notify: function notify() {\n      batch(function () {\n        var listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n    get: function get() {\n      var listeners = [];\n      var listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n    subscribe: function subscribe(callback) {\n      var isSubscribed = true;\n      var listener = last = {\n        callback: callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n  };\n}\n\nvar nullListeners = {\n  notify: function notify() {},\n  get: function get() {\n    return [];\n  }\n};\nexport function createSubscription(store, parentSub) {\n  var unsubscribe;\n  var listeners = nullListeners;\n\n  function addNestedSub(listener) {\n    trySubscribe();\n    return listeners.subscribe(listener);\n  }\n\n  function notifyNestedSubs() {\n    listeners.notify();\n  }\n\n  function handleChangeWrapper() {\n    if (subscription.onStateChange) {\n      subscription.onStateChange();\n    }\n  }\n\n  function isSubscribed() {\n    return Boolean(unsubscribe);\n  }\n\n  function trySubscribe() {\n    if (!unsubscribe) {\n      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n      listeners = createListenerCollection();\n    }\n  }\n\n  function tryUnsubscribe() {\n    if (unsubscribe) {\n      unsubscribe();\n      unsubscribe = undefined;\n      listeners.clear();\n      listeners = nullListeners;\n    }\n  }\n\n  var subscription = {\n    addNestedSub: addNestedSub,\n    notifyNestedSubs: notifyNestedSubs,\n    handleChangeWrapper: handleChangeWrapper,\n    isSubscribed: isSubscribed,\n    trySubscribe: trySubscribe,\n    tryUnsubscribe: tryUnsubscribe,\n    getListeners: function getListeners() {\n      return listeners;\n    }\n  };\n  return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n  var store = _ref.store,\n      context = _ref.context,\n      children = _ref.children;\n  var contextValue = useMemo(function () {\n    var subscription = createSubscription(store);\n    return {\n      store: store,\n      subscription: subscription\n    };\n  }, [store]);\n  var previousState = useMemo(function () {\n    return store.getState();\n  }, [store]);\n  useIsomorphicLayoutEffect(function () {\n    var subscription = contextValue.subscription;\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return function () {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = null;\n    };\n  }, [contextValue, previousState]);\n  var Context = context || ReactReduxContext;\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  Provider.propTypes = {\n    store: PropTypes.shape({\n      subscribe: PropTypes.func.isRequired,\n      dispatch: PropTypes.func.isRequired,\n      getState: PropTypes.func.isRequired\n    }),\n    context: PropTypes.object,\n    children: PropTypes.any\n  };\n}\n\nexport default Provider;","export default function _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}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n    _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n  var updateCount = state[1];\n  return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  useIsomorphicLayoutEffect(function () {\n    return effectFunc.apply(void 0, effectArgs);\n  }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  lastChildProps.current = actualChildProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n  var didUnsubscribe = false;\n  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  var checkForUpdates = function checkForUpdates() {\n    if (didUnsubscribe) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    }\n\n    var latestStoreState = store.getState();\n    var newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n      forceComponentUpdateDispatch({\n        type: 'STORE_UPDATED',\n        payload: {\n          error: error\n        }\n      });\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  var unsubscribeWrapper = function unsubscribeWrapper() {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n  return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n  selectorFactory is a func that is responsible for returning the selector function used to\r\n  compute new props from state, props, and dispatch. For example:\r\n      export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n      thing: state.things[props.thingId],\r\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n    }))(YourComponent)\r\n    Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n    Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n  selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      _ref2$forwardRef = _ref2.forwardRef,\n      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderCountProp !== undefined) {\n      throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n    }\n\n    if (withRef) {\n      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n    }\n\n    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n    if (storeKey !== 'store') {\n      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n    }\n  }\n\n  var Context = context;\n  return function wrapWithConnect(WrappedComponent) {\n    if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n      throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n    }\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var pure = connectOptions.pure;\n\n    function createChildSelector(store) {\n      return selectorFactory(store.dispatch, selectorFactoryOptions);\n    } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n    // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n    // that just executes the given callback immediately.\n\n\n    var usePureOnlyMemo = pure ? useMemo : function (callback) {\n      return callback();\n    };\n\n    function ConnectFunction(props) {\n      var _useMemo = useMemo(function () {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        var reactReduxForwardedRef = props.reactReduxForwardedRef,\n            wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]),\n          propsContext = _useMemo[0],\n          reactReduxForwardedRef = _useMemo[1],\n          wrapperProps = _useMemo[2];\n\n      var ContextToUse = useMemo(function () {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n      } // Based on the previous check, one of these must be true\n\n\n      var store = didStoreComeFromProps ? props.store : contextValue.store;\n      var childPropsSelector = useMemo(function () {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return createChildSelector(store);\n      }, [store]);\n\n      var _useMemo2 = useMemo(function () {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n        var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]),\n          subscription = _useMemo2[0],\n          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n\n      var overriddenContextValue = useMemo(function () {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return _extends({}, contextValue, {\n          subscription: subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n      // causes a change to the calculated child component props (or we caught an error in mapState)\n\n      var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n          _useReducer$ = _useReducer[0],\n          previousStateUpdateResult = _useReducer$[0],\n          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n      if (previousStateUpdateResult && previousStateUpdateResult.error) {\n        throw previousStateUpdateResult.error;\n      } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n      var lastChildProps = useRef();\n      var lastWrapperProps = useRef(wrapperProps);\n      var childPropsFromStoreUpdate = useRef();\n      var renderIsScheduled = useRef(false);\n      var actualChildProps = usePureOnlyMemo(function () {\n        // Tricky logic here:\n        // - This render may have been triggered by a Redux store update that produced new child props\n        // - However, we may have gotten new wrapper props after that\n        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n        // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n          return childPropsFromStoreUpdate.current;\n        } // TODO We're reading the store directly in render() here. Bad idea?\n        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n        // to determine what the child props should be.\n\n\n        return childPropsSelector(store.getState(), wrapperProps);\n      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      var renderedWrappedComponent = useMemo(function () {\n        return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n          ref: reactReduxForwardedRef\n        }));\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      var renderedChild = useMemo(function () {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n    var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = ConnectFunction.displayName = displayName;\n\n    if (forwardRef) {\n      var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n        return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return hoistStatics(forwarded, WrappedComponent);\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","function is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n  var boundActionCreators = {};\n\n  var _loop = function _loop(key) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = function () {\n        return dispatch(actionCreator.apply(void 0, arguments));\n      };\n    }\n  };\n\n  for (var key in actionCreators) {\n    _loop(key);\n  }\n\n  return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n  connect is a facade over connectAdvanced. It turns its args into a compatible\r\n  selectorFactory, which has the signature:\r\n\r\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n  \r\n  connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n  selectorFactory returns a final props selector from its mapStateToProps,\r\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n  mergePropsFactories, and pure args.\r\n\r\n  The resulting final props selector is called by the Connect component instance whenever\r\n  it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const { store } = useReduxContext()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n  var contextValue = useContext(ReactReduxContext);\n\n  if (process.env.NODE_ENV !== 'production' && !contextValue) {\n    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n  }\n\n  return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useStore() {\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store;\n\n    return store;\n  };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n *   const store = useStore()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n  return function useDispatch() {\n    var store = useStore();\n    return store.dispatch;\n  };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const dispatch = useDispatch()\r\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n *   return (\r\n *     <div>\r\n *       <span>{value}</span>\r\n *       <button onClick={increaseCounter}>Increase counter</button>\r\n *     </div>\r\n *   )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n  return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n  var _useReducer = useReducer(function (s) {\n    return s + 1;\n  }, 0),\n      forceRender = _useReducer[1];\n\n  var subscription = useMemo(function () {\n    return createSubscription(store, contextSub);\n  }, [store, contextSub]);\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef();\n  var latestStoreState = useRef();\n  var latestSelectedState = useRef();\n  var storeState = store.getState();\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n      var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n      if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n        selectedState = newSelectedState;\n      } else {\n        selectedState = latestSelectedState.current;\n      }\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(function () {\n    latestSelector.current = selector;\n    latestStoreState.current = storeState;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(function () {\n    function checkForUpdates() {\n      try {\n        var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n        if (newStoreState === latestStoreState.current) {\n          return;\n        }\n\n        var _newSelectedState = latestSelector.current(newStoreState);\n\n        if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = _newSelectedState;\n        latestStoreState.current = newStoreState;\n      } catch (err) {\n        // we ignore all errors here, since when the component\n        // is re-rendered, the selectors are called again, and\n        // will throw again, if neither props nor store state\n        // changed\n        latestSubscriptionCallbackError.current = err;\n      }\n\n      forceRender();\n    }\n\n    subscription.onStateChange = checkForUpdates;\n    subscription.trySubscribe();\n    checkForUpdates();\n    return function () {\n      return subscription.tryUnsubscribe();\n    };\n  }, [store, subscription]);\n  return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useSelector(selector, equalityFn) {\n    if (equalityFn === void 0) {\n      equalityFn = refEquality;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(\"You must pass a selector to useSelector\");\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(\"You must pass a function as a selector to useSelector\");\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(\"You must pass a function as an equality function to useSelector\");\n      }\n    }\n\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store,\n        contextSub = _useReduxContext.subscription;\n\n    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nvar defaultOptions = {\n  bindI18n: 'languageChanged',\n  bindI18nStore: '',\n  transEmptyNodeValue: '',\n  transSupportBasicHtmlNodes: true,\n  transWrapTextNodes: '',\n  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n  useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.createContext();\nexport function setDefaults() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n  return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n  function ReportNamespaces() {\n    _classCallCheck(this, ReportNamespaces);\n\n    this.usedNamespaces = {};\n  }\n\n  _createClass(ReportNamespaces, [{\n    key: \"addUsedNamespaces\",\n    value: function addUsedNamespaces(namespaces) {\n      var _this = this;\n\n      namespaces.forEach(function (ns) {\n        if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n      });\n    }\n  }, {\n    key: \"getUsedNamespaces\",\n    value: function getUsedNamespaces() {\n      return Object.keys(this.usedNamespaces);\n    }\n  }]);\n\n  return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n  i18nInstance = instance;\n}\nexport function getI18n() {\n  return i18nInstance;\n}\nexport var initReactI18next = {\n  type: '3rdParty',\n  init: function init(instance) {\n    setDefaults(instance.options.react);\n    setI18n(instance);\n  }\n};\nexport function composeInitialProps(ForComponent) {\n  return function (ctx) {\n    return new Promise(function (resolve) {\n      var i18nInitialProps = getInitialProps();\n\n      if (ForComponent.getInitialProps) {\n        ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n          resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n        });\n      } else {\n        resolve(i18nInitialProps);\n      }\n    });\n  };\n}\nexport function getInitialProps() {\n  var i18n = getI18n();\n  var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n  var ret = {};\n  var initialI18nStore = {};\n  i18n.languages.forEach(function (l) {\n    initialI18nStore[l] = {};\n    namespaces.forEach(function (ns) {\n      initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n    });\n  });\n  ret.initialI18nStore = initialI18nStore;\n  ret.initialLanguage = i18n.language;\n  return ret;\n}","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context';\nexport function I18nextProvider(_ref) {\n  var i18n = _ref.i18n,\n      defaultNS = _ref.defaultNS,\n      children = _ref.children;\n  var value = useMemo(function () {\n    return {\n      i18n: i18n,\n      defaultNS: defaultNS\n    };\n  }, [i18n, defaultNS]);\n  return createElement(I18nContext.Provider, {\n    value: value\n  }, children);\n}","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? Object(arguments[i]) : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys.push.apply(ownKeys, 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}","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\n\nvar consoleLogger = {\n  type: 'logger',\n  log: function log(args) {\n    this.output('log', args);\n  },\n  warn: function warn(args) {\n    this.output('warn', args);\n  },\n  error: function error(args) {\n    this.output('error', args);\n  },\n  output: function output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\n\nvar Logger = function () {\n  function Logger(concreteLogger) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Logger);\n\n    this.init(concreteLogger, options);\n  }\n\n  _createClass(Logger, [{\n    key: \"init\",\n    value: function init(concreteLogger) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      this.prefix = options.prefix || 'i18next:';\n      this.logger = concreteLogger || consoleLogger;\n      this.options = options;\n      this.debug = options.debug;\n    }\n  }, {\n    key: \"setDebug\",\n    value: function setDebug(bool) {\n      this.debug = bool;\n    }\n  }, {\n    key: \"log\",\n    value: function log() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return this.forward(args, 'log', '', true);\n    }\n  }, {\n    key: \"warn\",\n    value: function warn() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return this.forward(args, 'warn', '', true);\n    }\n  }, {\n    key: \"error\",\n    value: function error() {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return this.forward(args, 'error', '');\n    }\n  }, {\n    key: \"deprecate\",\n    value: function deprecate() {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n\n      return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n    }\n  }, {\n    key: \"forward\",\n    value: function forward(args, lvl, prefix, debugOnly) {\n      if (debugOnly && !this.debug) return null;\n      if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n      return this.logger[lvl](args);\n    }\n  }, {\n    key: \"create\",\n    value: function create(moduleName) {\n      return new Logger(this.logger, _objectSpread({}, {\n        prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n      }, this.options));\n    }\n  }]);\n\n  return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n  function EventEmitter() {\n    _classCallCheck(this, EventEmitter);\n\n    this.observers = {};\n  }\n\n  _createClass(EventEmitter, [{\n    key: \"on\",\n    value: function on(events, listener) {\n      var _this = this;\n\n      events.split(' ').forEach(function (event) {\n        _this.observers[event] = _this.observers[event] || [];\n\n        _this.observers[event].push(listener);\n      });\n      return this;\n    }\n  }, {\n    key: \"off\",\n    value: function off(event, listener) {\n      if (!this.observers[event]) return;\n\n      if (!listener) {\n        delete this.observers[event];\n        return;\n      }\n\n      this.observers[event] = this.observers[event].filter(function (l) {\n        return l !== listener;\n      });\n    }\n  }, {\n    key: \"emit\",\n    value: function emit(event) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (this.observers[event]) {\n        var cloned = [].concat(this.observers[event]);\n        cloned.forEach(function (observer) {\n          observer.apply(void 0, args);\n        });\n      }\n\n      if (this.observers['*']) {\n        var _cloned = [].concat(this.observers['*']);\n\n        _cloned.forEach(function (observer) {\n          observer.apply(observer, [event].concat(args));\n        });\n      }\n    }\n  }]);\n\n  return EventEmitter;\n}();\n\nfunction defer() {\n  var res;\n  var rej;\n  var promise = new Promise(function (resolve, reject) {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n}\nfunction makeString(object) {\n  if (object == null) return '';\n  return '' + object;\n}\nfunction copy(a, s, t) {\n  a.forEach(function (m) {\n    if (s[m]) t[m] = s[m];\n  });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n  function cleanKey(key) {\n    return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n  }\n\n  function canNotTraverseDeeper() {\n    return !object || typeof object === 'string';\n  }\n\n  var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n  while (stack.length > 1) {\n    if (canNotTraverseDeeper()) return {};\n    var key = cleanKey(stack.shift());\n    if (!object[key] && Empty) object[key] = new Empty();\n\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n  }\n\n  if (canNotTraverseDeeper()) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack.shift())\n  };\n}\n\nfunction setPath(object, path, newValue) {\n  var _getLastOfPath = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath.obj,\n      k = _getLastOfPath.k;\n\n  obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n  var _getLastOfPath2 = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath2.obj,\n      k = _getLastOfPath2.k;\n\n  obj[k] = obj[k] || [];\n  if (concat) obj[k] = obj[k].concat(newValue);\n  if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n  var _getLastOfPath3 = getLastOfPath(object, path),\n      obj = _getLastOfPath3.obj,\n      k = _getLastOfPath3.k;\n\n  if (!obj) return undefined;\n  return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n  var value = getPath(data, key);\n\n  if (value !== undefined) {\n    return value;\n  }\n\n  return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n  for (var prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n\n  return target;\n}\nfunction regexEscape(str) {\n  return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nfunction escape(data) {\n  if (typeof data === 'string') {\n    return data.replace(/[&<>\"'\\/]/g, function (s) {\n      return _entityMap[s];\n    });\n  }\n\n  return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nvar ResourceStore = function (_EventEmitter) {\n  _inherits(ResourceStore, _EventEmitter);\n\n  function ResourceStore(data) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n\n    _classCallCheck(this, ResourceStore);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.data = data || {};\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    return _this;\n  }\n\n  _createClass(ResourceStore, [{\n    key: \"addNamespaces\",\n    value: function addNamespaces(ns) {\n      if (this.options.ns.indexOf(ns) < 0) {\n        this.options.ns.push(ns);\n      }\n    }\n  }, {\n    key: \"removeNamespaces\",\n    value: function removeNamespaces(ns) {\n      var index = this.options.ns.indexOf(ns);\n\n      if (index > -1) {\n        this.options.ns.splice(index, 1);\n      }\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(lng, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var path = [lng, ns];\n      if (key && typeof key !== 'string') path = path.concat(key);\n      if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n      }\n\n      return getPath(this.data, path);\n    }\n  }, {\n    key: \"addResource\",\n    value: function addResource(lng, ns, key, value) {\n      var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n        silent: false\n      };\n      var keySeparator = this.options.keySeparator;\n      if (keySeparator === undefined) keySeparator = '.';\n      var path = [lng, ns];\n      if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        value = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      setPath(this.data, path, value);\n      if (!options.silent) this.emit('added', lng, ns, key, value);\n    }\n  }, {\n    key: \"addResources\",\n    value: function addResources(lng, ns, resources) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n        silent: false\n      };\n\n      for (var m in resources) {\n        if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n          silent: true\n        });\n      }\n\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"addResourceBundle\",\n    value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n        silent: false\n      };\n      var path = [lng, ns];\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        deep = resources;\n        resources = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      var pack = getPath(this.data, path) || {};\n\n      if (deep) {\n        deepExtend(pack, resources, overwrite);\n      } else {\n        pack = _objectSpread({}, pack, resources);\n      }\n\n      setPath(this.data, path, pack);\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"removeResourceBundle\",\n    value: function removeResourceBundle(lng, ns) {\n      if (this.hasResourceBundle(lng, ns)) {\n        delete this.data[lng][ns];\n      }\n\n      this.removeNamespaces(ns);\n      this.emit('removed', lng, ns);\n    }\n  }, {\n    key: \"hasResourceBundle\",\n    value: function hasResourceBundle(lng, ns) {\n      return this.getResource(lng, ns) !== undefined;\n    }\n  }, {\n    key: \"getResourceBundle\",\n    value: function getResourceBundle(lng, ns) {\n      if (!ns) ns = this.options.defaultNS;\n      if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n      return this.getResource(lng, ns);\n    }\n  }, {\n    key: \"getDataByLanguage\",\n    value: function getDataByLanguage(lng) {\n      return this.data[lng];\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.data;\n    }\n  }]);\n\n  return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor: function addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle: function handle(processors, value, key, options, translator) {\n    var _this = this;\n\n    processors.forEach(function (processor) {\n      if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n  _inherits(Translator, _EventEmitter);\n\n  function Translator(services) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Translator);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    _this.logger = baseLogger.create('translator');\n    return _this;\n  }\n\n  _createClass(Translator, [{\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng) {\n      if (lng) this.language = lng;\n    }\n  }, {\n    key: \"exists\",\n    value: function exists(key) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        interpolation: {}\n      };\n      var resolved = this.resolve(key, options);\n      return resolved && resolved.res !== undefined;\n    }\n  }, {\n    key: \"extractFromKey\",\n    value: function extractFromKey(key, options) {\n      var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n      if (nsSeparator === undefined) nsSeparator = ':';\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var namespaces = options.ns || this.options.defaultNS;\n\n      if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n        var m = key.match(this.interpolator.nestingRegexp);\n\n        if (m && m.length > 0) {\n          return {\n            key: key,\n            namespaces: namespaces\n          };\n        }\n\n        var parts = key.split(nsSeparator);\n        if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n        key = parts.join(keySeparator);\n      }\n\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      return {\n        key: key,\n        namespaces: namespaces\n      };\n    }\n  }, {\n    key: \"translate\",\n    value: function translate(keys, options, lastKey) {\n      var _this2 = this;\n\n      if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n        options = this.options.overloadTranslationOptionHandler(arguments);\n      }\n\n      if (!options) options = {};\n      if (keys === undefined || keys === null) return '';\n      if (!Array.isArray(keys)) keys = [String(keys)];\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n      var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n          key = _this$extractFromKey.key,\n          namespaces = _this$extractFromKey.namespaces;\n\n      var namespace = namespaces[namespaces.length - 1];\n      var lng = options.lng || this.language;\n      var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n      if (lng && lng.toLowerCase() === 'cimode') {\n        if (appendNamespaceToCIMode) {\n          var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n          return namespace + nsSeparator + key;\n        }\n\n        return key;\n      }\n\n      var resolved = this.resolve(keys, options);\n      var res = resolved && resolved.res;\n      var resUsedKey = resolved && resolved.usedKey || key;\n      var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n      var resType = Object.prototype.toString.apply(res);\n      var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n      var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n      var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n      var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n      if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n        if (!options.returnObjects && !this.options.returnObjects) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n          return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, options) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n        }\n\n        if (keySeparator) {\n          var resTypeIsArray = resType === '[object Array]';\n          var copy = resTypeIsArray ? [] : {};\n          var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n          for (var m in res) {\n            if (Object.prototype.hasOwnProperty.call(res, m)) {\n              var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n              copy[m] = this.translate(deepKey, _objectSpread({}, options, {\n                joinArrays: false,\n                ns: namespaces\n              }));\n              if (copy[m] === deepKey) copy[m] = res[m];\n            }\n          }\n\n          res = copy;\n        }\n      } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n        res = res.join(joinArrays);\n        if (res) res = this.extendTranslation(res, keys, options, lastKey);\n      } else {\n        var usedDefault = false;\n        var usedKey = false;\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var hasDefaultValue = Translator.hasDefaultValue(options);\n        var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count) : '';\n        var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n        if (!this.isValidLookup(res) && hasDefaultValue) {\n          usedDefault = true;\n          res = defaultValue;\n        }\n\n        if (!this.isValidLookup(res)) {\n          usedKey = true;\n          res = key;\n        }\n\n        var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n        if (usedKey || usedDefault || updateMissing) {\n          this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n          if (keySeparator) {\n            var fk = this.resolve(key, _objectSpread({}, options, {\n              keySeparator: false\n            }));\n            if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n          }\n\n          var lngs = [];\n          var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n          if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n            for (var i = 0; i < fallbackLngs.length; i++) {\n              lngs.push(fallbackLngs[i]);\n            }\n          } else if (this.options.saveMissingTo === 'all') {\n            lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n          } else {\n            lngs.push(options.lng || this.language);\n          }\n\n          var send = function send(l, k, fallbackValue) {\n            if (_this2.options.missingKeyHandler) {\n              _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n            } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n              _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n            }\n\n            _this2.emit('missingKey', l, namespace, k, res);\n          };\n\n          if (this.options.saveMissing) {\n            if (this.options.saveMissingPlurals && needsPluralHandling) {\n              lngs.forEach(function (language) {\n                _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n                  send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n                });\n              });\n            } else {\n              send(lngs, key, defaultValue);\n            }\n          }\n        }\n\n        res = this.extendTranslation(res, keys, options, resolved, lastKey);\n        if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n        if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n      }\n\n      return res;\n    }\n  }, {\n    key: \"extendTranslation\",\n    value: function extendTranslation(res, key, options, resolved, lastKey) {\n      var _this3 = this;\n\n      if (this.i18nFormat && this.i18nFormat.parse) {\n        res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n          resolved: resolved\n        });\n      } else if (!options.skipInterpolation) {\n        if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n          interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n        }));\n        var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n        var nestBef;\n\n        if (skipOnVariables) {\n          var nb = res.match(this.interpolator.nestingRegexp);\n          nestBef = nb && nb.length;\n        }\n\n        var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n        if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n        res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n        if (skipOnVariables) {\n          var na = res.match(this.interpolator.nestingRegexp);\n          var nestAft = na && na.length;\n          if (nestBef < nestAft) options.nest = false;\n        }\n\n        if (options.nest !== false) res = this.interpolator.nest(res, function () {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n\n          if (lastKey && lastKey[0] === args[0] && !options.context) {\n            _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n            return null;\n          }\n\n          return _this3.translate.apply(_this3, args.concat([key]));\n        }, options);\n        if (options.interpolation) this.interpolator.reset();\n      }\n\n      var postProcess = options.postProcess || this.options.postProcess;\n      var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n      if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n        res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n          i18nResolved: resolved\n        }, options) : options, this);\n      }\n\n      return res;\n    }\n  }, {\n    key: \"resolve\",\n    value: function resolve(keys) {\n      var _this4 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var found;\n      var usedKey;\n      var exactUsedKey;\n      var usedLng;\n      var usedNS;\n      if (typeof keys === 'string') keys = [keys];\n      keys.forEach(function (k) {\n        if (_this4.isValidLookup(found)) return;\n\n        var extracted = _this4.extractFromKey(k, options);\n\n        var key = extracted.key;\n        usedKey = key;\n        var namespaces = extracted.namespaces;\n        if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n        var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n        namespaces.forEach(function (ns) {\n          if (_this4.isValidLookup(found)) return;\n          usedNS = ns;\n\n          if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n            checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n            _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n          }\n\n          codes.forEach(function (code) {\n            if (_this4.isValidLookup(found)) return;\n            usedLng = code;\n            var finalKey = key;\n            var finalKeys = [finalKey];\n\n            if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n              _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n            } else {\n              var pluralSuffix;\n              if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n              if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n              if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n              if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n            }\n\n            var possibleKey;\n\n            while (possibleKey = finalKeys.pop()) {\n              if (!_this4.isValidLookup(found)) {\n                exactUsedKey = possibleKey;\n                found = _this4.getResource(code, ns, possibleKey, options);\n              }\n            }\n          });\n        });\n      });\n      return {\n        res: found,\n        usedKey: usedKey,\n        exactUsedKey: exactUsedKey,\n        usedLng: usedLng,\n        usedNS: usedNS\n      };\n    }\n  }, {\n    key: \"isValidLookup\",\n    value: function isValidLookup(res) {\n      return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(code, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n      return this.resourceStore.getResource(code, ns, key, options);\n    }\n  }], [{\n    key: \"hasDefaultValue\",\n    value: function hasDefaultValue(options) {\n      var prefix = 'defaultValue';\n\n      for (var option in options) {\n        if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n          return true;\n        }\n      }\n\n      return false;\n    }\n  }]);\n\n  return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n  function LanguageUtil(options) {\n    _classCallCheck(this, LanguageUtil);\n\n    this.options = options;\n    this.whitelist = this.options.supportedLngs || false;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n\n  _createClass(LanguageUtil, [{\n    key: \"getScriptPartFromCode\",\n    value: function getScriptPartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return null;\n      var p = code.split('-');\n      if (p.length === 2) return null;\n      p.pop();\n      if (p[p.length - 1].toLowerCase() === 'x') return null;\n      return this.formatLanguageCode(p.join('-'));\n    }\n  }, {\n    key: \"getLanguagePartFromCode\",\n    value: function getLanguagePartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return code;\n      var p = code.split('-');\n      return this.formatLanguageCode(p[0]);\n    }\n  }, {\n    key: \"formatLanguageCode\",\n    value: function formatLanguageCode(code) {\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n        var p = code.split('-');\n\n        if (this.options.lowerCaseLng) {\n          p = p.map(function (part) {\n            return part.toLowerCase();\n          });\n        } else if (p.length === 2) {\n          p[0] = p[0].toLowerCase();\n          p[1] = p[1].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        } else if (p.length === 3) {\n          p[0] = p[0].toLowerCase();\n          if (p[1].length === 2) p[1] = p[1].toUpperCase();\n          if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n          if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n        }\n\n        return p.join('-');\n      }\n\n      return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n    }\n  }, {\n    key: \"isWhitelisted\",\n    value: function isWhitelisted(code) {\n      this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n      return this.isSupportedCode(code);\n    }\n  }, {\n    key: \"isSupportedCode\",\n    value: function isSupportedCode(code) {\n      if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n        code = this.getLanguagePartFromCode(code);\n      }\n\n      return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n    }\n  }, {\n    key: \"getBestMatchFromCodes\",\n    value: function getBestMatchFromCodes(codes) {\n      var _this = this;\n\n      if (!codes) return null;\n      var found;\n      codes.forEach(function (code) {\n        if (found) return;\n\n        var cleanedLng = _this.formatLanguageCode(code);\n\n        if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n      });\n\n      if (!found && this.options.supportedLngs) {\n        codes.forEach(function (code) {\n          if (found) return;\n\n          var lngOnly = _this.getLanguagePartFromCode(code);\n\n          if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n          found = _this.options.supportedLngs.find(function (supportedLng) {\n            if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n          });\n        });\n      }\n\n      if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n      return found;\n    }\n  }, {\n    key: \"getFallbackCodes\",\n    value: function getFallbackCodes(fallbacks, code) {\n      if (!fallbacks) return [];\n      if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n      if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n      if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n      if (!code) return fallbacks[\"default\"] || [];\n      var found = fallbacks[code];\n      if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n      if (!found) found = fallbacks[this.formatLanguageCode(code)];\n      if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n      if (!found) found = fallbacks[\"default\"];\n      return found || [];\n    }\n  }, {\n    key: \"toResolveHierarchy\",\n    value: function toResolveHierarchy(code, fallbackCode) {\n      var _this2 = this;\n\n      var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n      var codes = [];\n\n      var addCode = function addCode(c) {\n        if (!c) return;\n\n        if (_this2.isSupportedCode(c)) {\n          codes.push(c);\n        } else {\n          _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n        }\n      };\n\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n        if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n        if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n      } else if (typeof code === 'string') {\n        addCode(this.formatLanguageCode(code));\n      }\n\n      fallbackCodes.forEach(function (fc) {\n        if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n      });\n      return codes;\n    }\n  }]);\n\n  return LanguageUtil;\n}();\n\nvar sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nvar _rulesPluralsTypes = {\n  1: function _(n) {\n    return Number(n > 1);\n  },\n  2: function _(n) {\n    return Number(n != 1);\n  },\n  3: function _(n) {\n    return 0;\n  },\n  4: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  5: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n  },\n  6: function _(n) {\n    return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n  },\n  7: function _(n) {\n    return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  8: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n  },\n  9: function _(n) {\n    return Number(n >= 2);\n  },\n  10: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n  },\n  11: function _(n) {\n    return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n  },\n  12: function _(n) {\n    return Number(n % 10 != 1 || n % 100 == 11);\n  },\n  13: function _(n) {\n    return Number(n !== 0);\n  },\n  14: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n  },\n  15: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  16: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n  },\n  17: function _(n) {\n    return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n  },\n  18: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n  },\n  19: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n  },\n  20: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n  },\n  21: function _(n) {\n    return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n  },\n  22: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n  }\n};\n\nfunction createRules() {\n  var rules = {};\n  sets.forEach(function (set) {\n    set.lngs.forEach(function (l) {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n}\n\nvar PluralResolver = function () {\n  function PluralResolver(languageUtils) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, PluralResolver);\n\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    this.rules = createRules();\n  }\n\n  _createClass(PluralResolver, [{\n    key: \"addRule\",\n    value: function addRule(lng, obj) {\n      this.rules[lng] = obj;\n    }\n  }, {\n    key: \"getRule\",\n    value: function getRule(code) {\n      return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n    }\n  }, {\n    key: \"needsPlural\",\n    value: function needsPlural(code) {\n      var rule = this.getRule(code);\n      return rule && rule.numbers.length > 1;\n    }\n  }, {\n    key: \"getPluralFormsOfKey\",\n    value: function getPluralFormsOfKey(code, key) {\n      return this.getSuffixes(code).map(function (suffix) {\n        return key + suffix;\n      });\n    }\n  }, {\n    key: \"getSuffixes\",\n    value: function getSuffixes(code) {\n      var _this = this;\n\n      var rule = this.getRule(code);\n\n      if (!rule) {\n        return [];\n      }\n\n      return rule.numbers.map(function (number) {\n        return _this.getSuffix(code, number);\n      });\n    }\n  }, {\n    key: \"getSuffix\",\n    value: function getSuffix(code, count) {\n      var _this2 = this;\n\n      var rule = this.getRule(code);\n\n      if (rule) {\n        var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n        var suffix = rule.numbers[idx];\n\n        if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n          if (suffix === 2) {\n            suffix = 'plural';\n          } else if (suffix === 1) {\n            suffix = '';\n          }\n        }\n\n        var returnSuffix = function returnSuffix() {\n          return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n        };\n\n        if (this.options.compatibilityJSON === 'v1') {\n          if (suffix === 1) return '';\n          if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n          return returnSuffix();\n        } else if (this.options.compatibilityJSON === 'v2') {\n          return returnSuffix();\n        } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n          return returnSuffix();\n        }\n\n        return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n      }\n\n      this.logger.warn(\"no plural rule found for: \".concat(code));\n      return '';\n    }\n  }]);\n\n  return PluralResolver;\n}();\n\nvar Interpolator = function () {\n  function Interpolator() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Interpolator);\n\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n\n    this.format = options.interpolation && options.interpolation.format || function (value) {\n      return value;\n    };\n\n    this.init(options);\n  }\n\n  _createClass(Interpolator, [{\n    key: \"init\",\n    value: function init() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (!options.interpolation) options.interpolation = {\n        escapeValue: true\n      };\n      var iOpts = options.interpolation;\n      this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n      this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n      this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n      this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n      this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n      this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n      this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n      this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n      this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n      this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n      this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n      this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n      this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n      this.resetRegExp();\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      if (this.options) this.init(this.options);\n    }\n  }, {\n    key: \"resetRegExp\",\n    value: function resetRegExp() {\n      var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n      this.regexp = new RegExp(regexpStr, 'g');\n      var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n      this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n      var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n      this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n    }\n  }, {\n    key: \"interpolate\",\n    value: function interpolate(str, data, lng, options) {\n      var _this = this;\n\n      var match;\n      var value;\n      var replaces;\n      var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n      function regexSafe(val) {\n        return val.replace(/\\$/g, '$$$$');\n      }\n\n      var handleFormat = function handleFormat(key) {\n        if (key.indexOf(_this.formatSeparator) < 0) {\n          var path = getPathWithDefaults(data, defaultData, key);\n          return _this.alwaysFormat ? _this.format(path, undefined, lng) : path;\n        }\n\n        var p = key.split(_this.formatSeparator);\n        var k = p.shift().trim();\n        var f = p.join(_this.formatSeparator).trim();\n        return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, options);\n      };\n\n      this.resetRegExp();\n      var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n      var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n      var todos = [{\n        regex: this.regexpUnescape,\n        safeValue: function safeValue(val) {\n          return regexSafe(val);\n        }\n      }, {\n        regex: this.regexp,\n        safeValue: function safeValue(val) {\n          return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n        }\n      }];\n      todos.forEach(function (todo) {\n        replaces = 0;\n\n        while (match = todo.regex.exec(str)) {\n          value = handleFormat(match[1].trim());\n\n          if (value === undefined) {\n            if (typeof missingInterpolationHandler === 'function') {\n              var temp = missingInterpolationHandler(str, match, options);\n              value = typeof temp === 'string' ? temp : '';\n            } else if (skipOnVariables) {\n              value = match[0];\n              continue;\n            } else {\n              _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n              value = '';\n            }\n          } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n            value = makeString(value);\n          }\n\n          str = str.replace(match[0], todo.safeValue(value));\n          todo.regex.lastIndex = 0;\n          replaces++;\n\n          if (replaces >= _this.maxReplaces) {\n            break;\n          }\n        }\n      });\n      return str;\n    }\n  }, {\n    key: \"nest\",\n    value: function nest(str, fc) {\n      var _this2 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var match;\n      var value;\n\n      var clonedOptions = _objectSpread({}, options);\n\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n\n      function handleHasOptions(key, inheritedOptions) {\n        var sep = this.nestingOptionsSeparator;\n        if (key.indexOf(sep) < 0) return key;\n        var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n        var optionsString = \"{\".concat(c[1]);\n        key = c[0];\n        optionsString = this.interpolate(optionsString, clonedOptions);\n        optionsString = optionsString.replace(/'/g, '\"');\n\n        try {\n          clonedOptions = JSON.parse(optionsString);\n          if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n        } catch (e) {\n          this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n          return \"\".concat(key).concat(sep).concat(optionsString);\n        }\n\n        delete clonedOptions.defaultValue;\n        return key;\n      }\n\n      while (match = this.nestingRegexp.exec(str)) {\n        var formatters = [];\n        var doReduce = false;\n\n        if (match[0].includes(this.formatSeparator) && !/{.*}/.test(match[1])) {\n          var r = match[1].split(this.formatSeparator).map(function (elem) {\n            return elem.trim();\n          });\n          match[1] = r.shift();\n          formatters = r;\n          doReduce = true;\n        }\n\n        value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n        if (value && match[0] === str && typeof value !== 'string') return value;\n        if (typeof value !== 'string') value = makeString(value);\n\n        if (!value) {\n          this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n          value = '';\n        }\n\n        if (doReduce) {\n          value = formatters.reduce(function (v, f) {\n            return _this2.format(v, f, options.lng, options);\n          }, value.trim());\n        }\n\n        str = str.replace(match[0], value);\n        this.regexp.lastIndex = 0;\n      }\n\n      return str;\n    }\n  }]);\n\n  return Interpolator;\n}();\n\nfunction remove(arr, what) {\n  var found = arr.indexOf(what);\n\n  while (found !== -1) {\n    arr.splice(found, 1);\n    found = arr.indexOf(what);\n  }\n}\n\nvar Connector = function (_EventEmitter) {\n  _inherits(Connector, _EventEmitter);\n\n  function Connector(backend, store, services) {\n    var _this;\n\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    _classCallCheck(this, Connector);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.backend = backend;\n    _this.store = store;\n    _this.services = services;\n    _this.languageUtils = services.languageUtils;\n    _this.options = options;\n    _this.logger = baseLogger.create('backendConnector');\n    _this.state = {};\n    _this.queue = [];\n\n    if (_this.backend && _this.backend.init) {\n      _this.backend.init(services, options.backend, options);\n    }\n\n    return _this;\n  }\n\n  _createClass(Connector, [{\n    key: \"queueLoad\",\n    value: function queueLoad(languages, namespaces, options, callback) {\n      var _this2 = this;\n\n      var toLoad = [];\n      var pending = [];\n      var toLoadLanguages = [];\n      var toLoadNamespaces = [];\n      languages.forEach(function (lng) {\n        var hasAllNamespaces = true;\n        namespaces.forEach(function (ns) {\n          var name = \"\".concat(lng, \"|\").concat(ns);\n\n          if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n            _this2.state[name] = 2;\n          } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n            if (pending.indexOf(name) < 0) pending.push(name);\n          } else {\n            _this2.state[name] = 1;\n            hasAllNamespaces = false;\n            if (pending.indexOf(name) < 0) pending.push(name);\n            if (toLoad.indexOf(name) < 0) toLoad.push(name);\n            if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n          }\n        });\n        if (!hasAllNamespaces) toLoadLanguages.push(lng);\n      });\n\n      if (toLoad.length || pending.length) {\n        this.queue.push({\n          pending: pending,\n          loaded: {},\n          errors: [],\n          callback: callback\n        });\n      }\n\n      return {\n        toLoad: toLoad,\n        pending: pending,\n        toLoadLanguages: toLoadLanguages,\n        toLoadNamespaces: toLoadNamespaces\n      };\n    }\n  }, {\n    key: \"loaded\",\n    value: function loaded(name, err, data) {\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      if (err) this.emit('failedLoading', lng, ns, err);\n\n      if (data) {\n        this.store.addResourceBundle(lng, ns, data);\n      }\n\n      this.state[name] = err ? -1 : 2;\n      var loaded = {};\n      this.queue.forEach(function (q) {\n        pushPath(q.loaded, [lng], ns);\n        remove(q.pending, name);\n        if (err) q.errors.push(err);\n\n        if (q.pending.length === 0 && !q.done) {\n          Object.keys(q.loaded).forEach(function (l) {\n            if (!loaded[l]) loaded[l] = [];\n\n            if (q.loaded[l].length) {\n              q.loaded[l].forEach(function (ns) {\n                if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n              });\n            }\n          });\n          q.done = true;\n\n          if (q.errors.length) {\n            q.callback(q.errors);\n          } else {\n            q.callback();\n          }\n        }\n      });\n      this.emit('loaded', loaded);\n      this.queue = this.queue.filter(function (q) {\n        return !q.done;\n      });\n    }\n  }, {\n    key: \"read\",\n    value: function read(lng, ns, fcName) {\n      var _this3 = this;\n\n      var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n      var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n      var callback = arguments.length > 5 ? arguments[5] : undefined;\n      if (!lng.length) return callback(null, {});\n      return this.backend[fcName](lng, ns, function (err, data) {\n        if (err && data && tried < 5) {\n          setTimeout(function () {\n            _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n          }, wait);\n          return;\n        }\n\n        callback(err, data);\n      });\n    }\n  }, {\n    key: \"prepareLoading\",\n    value: function prepareLoading(languages, namespaces) {\n      var _this4 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n      if (!this.backend) {\n        this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n        return callback && callback();\n      }\n\n      if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n      if (!toLoad.toLoad.length) {\n        if (!toLoad.pending.length) callback();\n        return null;\n      }\n\n      toLoad.toLoad.forEach(function (name) {\n        _this4.loadOne(name);\n      });\n    }\n  }, {\n    key: \"load\",\n    value: function load(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {}, callback);\n    }\n  }, {\n    key: \"reload\",\n    value: function reload(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {\n        reload: true\n      }, callback);\n    }\n  }, {\n    key: \"loadOne\",\n    value: function loadOne(name) {\n      var _this5 = this;\n\n      var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n        if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n        if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n        _this5.loaded(name, err, data);\n      });\n    }\n  }, {\n    key: \"saveMissing\",\n    value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n      if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n        this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        return;\n      }\n\n      if (key === undefined || key === null || key === '') return;\n\n      if (this.backend && this.backend.create) {\n        this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n          isUpdate: isUpdate\n        }));\n      }\n\n      if (!languages || !languages[0]) return;\n      this.store.addResource(languages[0], namespace, key, fallbackValue);\n    }\n  }]);\n\n  return Connector;\n}(EventEmitter);\n\nfunction get() {\n  return {\n    debug: false,\n    initImmediate: true,\n    ns: ['translation'],\n    defaultNS: ['translation'],\n    fallbackLng: ['dev'],\n    fallbackNS: false,\n    whitelist: false,\n    nonExplicitWhitelist: false,\n    supportedLngs: false,\n    nonExplicitSupportedLngs: false,\n    load: 'all',\n    preload: false,\n    simplifyPluralSuffix: true,\n    keySeparator: '.',\n    nsSeparator: ':',\n    pluralSeparator: '_',\n    contextSeparator: '_',\n    partialBundledLanguages: false,\n    saveMissing: false,\n    updateMissing: false,\n    saveMissingTo: 'fallback',\n    saveMissingPlurals: true,\n    missingKeyHandler: false,\n    missingInterpolationHandler: false,\n    postProcess: false,\n    postProcessPassResolved: false,\n    returnNull: true,\n    returnEmptyString: true,\n    returnObjects: false,\n    joinArrays: false,\n    returnedObjectHandler: false,\n    parseMissingKeyHandler: false,\n    appendNamespaceToMissingKey: false,\n    appendNamespaceToCIMode: false,\n    overloadTranslationOptionHandler: function handle(args) {\n      var ret = {};\n      if (_typeof(args[1]) === 'object') ret = args[1];\n      if (typeof args[1] === 'string') ret.defaultValue = args[1];\n      if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n      if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n        var options = args[3] || args[2];\n        Object.keys(options).forEach(function (key) {\n          ret[key] = options[key];\n        });\n      }\n\n      return ret;\n    },\n    interpolation: {\n      escapeValue: true,\n      format: function format(value, _format, lng, options) {\n        return value;\n      },\n      prefix: '{{',\n      suffix: '}}',\n      formatSeparator: ',',\n      unescapePrefix: '-',\n      nestingPrefix: '$t(',\n      nestingSuffix: ')',\n      nestingOptionsSeparator: ',',\n      maxReplaces: 1000,\n      skipOnVariables: false\n    }\n  };\n}\nfunction transformOptions(options) {\n  if (typeof options.ns === 'string') options.ns = [options.ns];\n  if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n  if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n  if (options.whitelist) {\n    if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n      options.whitelist = options.whitelist.concat(['cimode']);\n    }\n\n    options.supportedLngs = options.whitelist;\n  }\n\n  if (options.nonExplicitWhitelist) {\n    options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n  }\n\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n\n  return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n  _inherits(I18n, _EventEmitter);\n\n  function I18n() {\n    var _this;\n\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n    _classCallCheck(this, I18n);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.options = transformOptions(options);\n    _this.services = {};\n    _this.logger = baseLogger;\n    _this.modules = {\n      external: []\n    };\n\n    if (callback && !_this.isInitialized && !options.isClone) {\n      if (!_this.options.initImmediate) {\n        _this.init(options, callback);\n\n        return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n      }\n\n      setTimeout(function () {\n        _this.init(options, callback);\n      }, 0);\n    }\n\n    return _this;\n  }\n\n  _createClass(I18n, [{\n    key: \"init\",\n    value: function init() {\n      var _this2 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n\n      if (options.whitelist && !options.supportedLngs) {\n        this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n      }\n\n      if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n        this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n      }\n\n      this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n      this.format = this.options.interpolation.format;\n      if (!callback) callback = noop;\n\n      function createClassOnDemand(ClassOrObject) {\n        if (!ClassOrObject) return null;\n        if (typeof ClassOrObject === 'function') return new ClassOrObject();\n        return ClassOrObject;\n      }\n\n      if (!this.options.isClone) {\n        if (this.modules.logger) {\n          baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n        } else {\n          baseLogger.init(null, this.options);\n        }\n\n        var lu = new LanguageUtil(this.options);\n        this.store = new ResourceStore(this.options.resources, this.options);\n        var s = this.services;\n        s.logger = baseLogger;\n        s.resourceStore = this.store;\n        s.languageUtils = lu;\n        s.pluralResolver = new PluralResolver(lu, {\n          prepend: this.options.pluralSeparator,\n          compatibilityJSON: this.options.compatibilityJSON,\n          simplifyPluralSuffix: this.options.simplifyPluralSuffix\n        });\n        s.interpolator = new Interpolator(this.options);\n        s.utils = {\n          hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n        };\n        s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n        s.backendConnector.on('*', function (event) {\n          for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n            args[_key - 1] = arguments[_key];\n          }\n\n          _this2.emit.apply(_this2, [event].concat(args));\n        });\n\n        if (this.modules.languageDetector) {\n          s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n          s.languageDetector.init(s, this.options.detection, this.options);\n        }\n\n        if (this.modules.i18nFormat) {\n          s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n          if (s.i18nFormat.init) s.i18nFormat.init(this);\n        }\n\n        this.translator = new Translator(this.services, this.options);\n        this.translator.on('*', function (event) {\n          for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n            args[_key2 - 1] = arguments[_key2];\n          }\n\n          _this2.emit.apply(_this2, [event].concat(args));\n        });\n        this.modules.external.forEach(function (m) {\n          if (m.init) m.init(_this2);\n        });\n      }\n\n      if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n        var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n      }\n\n      if (!this.services.languageDetector && !this.options.lng) {\n        this.logger.warn('init: no languageDetector is used and no lng is defined');\n      }\n\n      var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n      storeApi.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store;\n\n          return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n        };\n      });\n      var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n      storeApiChained.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store2;\n\n          (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n          return _this2;\n        };\n      });\n      var deferred = defer();\n\n      var load = function load() {\n        var finish = function finish(err, t) {\n          if (_this2.isInitialized) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n          _this2.isInitialized = true;\n          if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n          _this2.emit('initialized', _this2.options);\n\n          deferred.resolve(t);\n          callback(err, t);\n        };\n\n        if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n        _this2.changeLanguage(_this2.options.lng, finish);\n      };\n\n      if (this.options.resources || !this.options.initImmediate) {\n        load();\n      } else {\n        setTimeout(load, 0);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"loadResources\",\n    value: function loadResources(language) {\n      var _this3 = this;\n\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n      var usedCallback = callback;\n      var usedLng = typeof language === 'string' ? language : this.language;\n      if (typeof language === 'function') usedCallback = language;\n\n      if (!this.options.resources || this.options.partialBundledLanguages) {\n        if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n        var toLoad = [];\n\n        var append = function append(lng) {\n          if (!lng) return;\n\n          var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n          lngs.forEach(function (l) {\n            if (toLoad.indexOf(l) < 0) toLoad.push(l);\n          });\n        };\n\n        if (!usedLng) {\n          var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n          fallbacks.forEach(function (l) {\n            return append(l);\n          });\n        } else {\n          append(usedLng);\n        }\n\n        if (this.options.preload) {\n          this.options.preload.forEach(function (l) {\n            return append(l);\n          });\n        }\n\n        this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n      } else {\n        usedCallback(null);\n      }\n    }\n  }, {\n    key: \"reloadResources\",\n    value: function reloadResources(lngs, ns, callback) {\n      var deferred = defer();\n      if (!lngs) lngs = this.languages;\n      if (!ns) ns = this.options.ns;\n      if (!callback) callback = noop;\n      this.services.backendConnector.reload(lngs, ns, function (err) {\n        deferred.resolve();\n        callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"use\",\n    value: function use(module) {\n      if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n      if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n      if (module.type === 'backend') {\n        this.modules.backend = module;\n      }\n\n      if (module.type === 'logger' || module.log && module.warn && module.error) {\n        this.modules.logger = module;\n      }\n\n      if (module.type === 'languageDetector') {\n        this.modules.languageDetector = module;\n      }\n\n      if (module.type === 'i18nFormat') {\n        this.modules.i18nFormat = module;\n      }\n\n      if (module.type === 'postProcessor') {\n        postProcessor.addPostProcessor(module);\n      }\n\n      if (module.type === '3rdParty') {\n        this.modules.external.push(module);\n      }\n\n      return this;\n    }\n  }, {\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng, callback) {\n      var _this4 = this;\n\n      this.isLanguageChangingTo = lng;\n      var deferred = defer();\n      this.emit('languageChanging', lng);\n\n      var done = function done(err, l) {\n        if (l) {\n          _this4.language = l;\n          _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n          _this4.translator.changeLanguage(l);\n\n          _this4.isLanguageChangingTo = undefined;\n\n          _this4.emit('languageChanged', l);\n\n          _this4.logger.log('languageChanged', l);\n        } else {\n          _this4.isLanguageChangingTo = undefined;\n        }\n\n        deferred.resolve(function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n        if (callback) callback(err, function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n      };\n\n      var setLng = function setLng(lngs) {\n        var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n        if (l) {\n          if (!_this4.language) {\n            _this4.language = l;\n            _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n          }\n\n          if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n          if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n        }\n\n        _this4.loadResources(l, function (err) {\n          done(err, l);\n        });\n      };\n\n      if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n        setLng(this.services.languageDetector.detect());\n      } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n        this.services.languageDetector.detect(setLng);\n      } else {\n        setLng(lng);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"getFixedT\",\n    value: function getFixedT(lng, ns) {\n      var _this5 = this;\n\n      var fixedT = function fixedT(key, opts) {\n        var options;\n\n        if (_typeof(opts) !== 'object') {\n          for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n            rest[_key3 - 2] = arguments[_key3];\n          }\n\n          options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n        } else {\n          options = _objectSpread({}, opts);\n        }\n\n        options.lng = options.lng || fixedT.lng;\n        options.lngs = options.lngs || fixedT.lngs;\n        options.ns = options.ns || fixedT.ns;\n        return _this5.t(key, options);\n      };\n\n      if (typeof lng === 'string') {\n        fixedT.lng = lng;\n      } else {\n        fixedT.lngs = lng;\n      }\n\n      fixedT.ns = ns;\n      return fixedT;\n    }\n  }, {\n    key: \"t\",\n    value: function t() {\n      var _this$translator;\n\n      return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n    }\n  }, {\n    key: \"exists\",\n    value: function exists() {\n      var _this$translator2;\n\n      return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n    }\n  }, {\n    key: \"setDefaultNamespace\",\n    value: function setDefaultNamespace(ns) {\n      this.options.defaultNS = ns;\n    }\n  }, {\n    key: \"hasLoadedNamespace\",\n    value: function hasLoadedNamespace(ns) {\n      var _this6 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (!this.isInitialized) {\n        this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n        return false;\n      }\n\n      if (!this.languages || !this.languages.length) {\n        this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n        return false;\n      }\n\n      var lng = this.languages[0];\n      var fallbackLng = this.options ? this.options.fallbackLng : false;\n      var lastLng = this.languages[this.languages.length - 1];\n      if (lng.toLowerCase() === 'cimode') return true;\n\n      var loadNotPending = function loadNotPending(l, n) {\n        var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n        return loadState === -1 || loadState === 2;\n      };\n\n      if (options.precheck) {\n        var preResult = options.precheck(this, loadNotPending);\n        if (preResult !== undefined) return preResult;\n      }\n\n      if (this.hasResourceBundle(lng, ns)) return true;\n      if (!this.services.backendConnector.backend) return true;\n      if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n      return false;\n    }\n  }, {\n    key: \"loadNamespaces\",\n    value: function loadNamespaces(ns, callback) {\n      var _this7 = this;\n\n      var deferred = defer();\n\n      if (!this.options.ns) {\n        callback && callback();\n        return Promise.resolve();\n      }\n\n      if (typeof ns === 'string') ns = [ns];\n      ns.forEach(function (n) {\n        if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n      });\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"loadLanguages\",\n    value: function loadLanguages(lngs, callback) {\n      var deferred = defer();\n      if (typeof lngs === 'string') lngs = [lngs];\n      var preloaded = this.options.preload || [];\n      var newLngs = lngs.filter(function (lng) {\n        return preloaded.indexOf(lng) < 0;\n      });\n\n      if (!newLngs.length) {\n        if (callback) callback();\n        return Promise.resolve();\n      }\n\n      this.options.preload = preloaded.concat(newLngs);\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"dir\",\n    value: function dir(lng) {\n      if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n      if (!lng) return 'rtl';\n      var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n      return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n    }\n  }, {\n    key: \"createInstance\",\n    value: function createInstance() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n      return new I18n(options, callback);\n    }\n  }, {\n    key: \"cloneInstance\",\n    value: function cloneInstance() {\n      var _this8 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n      var mergedOptions = _objectSpread({}, this.options, options, {\n        isClone: true\n      });\n\n      var clone = new I18n(mergedOptions);\n      var membersToCopy = ['store', 'services', 'language'];\n      membersToCopy.forEach(function (m) {\n        clone[m] = _this8[m];\n      });\n      clone.services = _objectSpread({}, this.services);\n      clone.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      clone.translator = new Translator(clone.services, clone.options);\n      clone.translator.on('*', function (event) {\n        for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n          args[_key4 - 1] = arguments[_key4];\n        }\n\n        clone.emit.apply(clone, [event].concat(args));\n      });\n      clone.init(mergedOptions, callback);\n      clone.translator.options = clone.options;\n      clone.translator.backendConnector.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      return clone;\n    }\n  }]);\n\n  return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\n\nexport default i18next;\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n  // Standard Redux middleware definition pattern:\n  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n  var middleware = function middleware(_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n        // If this \"action\" is really a function, call it and return the result.\n        if (typeof action === 'function') {\n          // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n          return action(dispatch, getState, extraArgument);\n        } // Otherwise, pass the action down the middleware chain as usual\n\n\n        return next(action);\n      };\n    };\n  };\n\n  return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getAnnotationManager__anchor\n */\nexport default () => window.documentViewer.getAnnotationManager();\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#setActiveSearchResult__anchor\n */\nexport default result => {\n  window.documentViewer.setActiveSearchResult(result);\n};\n","export const addEventListener = (event, eventListener, options = null) => {\n  const eventToObjectMap = getEventToObjectMap();\n  const object = eventToObjectMap[event];\n\n  options ? object.addEventListener(event, eventListener, options) : object.addEventListener(event, eventListener);\n};\n\nexport const removeEventListener = (event, eventListener) => {\n  const eventToObjectMap = getEventToObjectMap();\n  const object = eventToObjectMap[event];\n\n  object.removeEventListener(event, eventListener);\n};\n\nconst getEventToObjectMap = () => {\n  const annotManager = window.documentViewer.getAnnotationManager();\n  const historyManager = window.documentViewer.getAnnotationHistoryManager();\n  const editBoxManager = annotManager.getEditBoxManager();\n  const formFieldCreationManager = annotManager.getFormFieldCreationManager();\n  const measurementManager = window.documentViewer.getMeasurementManager();\n\n  return {\n    signatureSaved: window.documentViewer,\n    signatureDeleted: window.documentViewer,\n    annotationsLoaded: window.documentViewer,\n    click: window.documentViewer,\n    dblClick: window.documentViewer,\n    displayPageLocation: window.documentViewer,\n    keyDown: window.documentViewer,\n    keyUp: window.documentViewer,\n    mouseEnter: window.documentViewer,\n    mouseLeave: window.documentViewer,\n    mouseLeftDown: window.documentViewer,\n    mouseLeftUp: window.documentViewer,\n    mouseMove: window.documentViewer,\n    mouseRightDown: window.documentViewer,\n    mouseRightUp: window.documentViewer,\n    pageComplete: window.documentViewer,\n    readOnlyModeChanged: window.documentViewer,\n    searchInProgress: window.documentViewer,\n    activeSearchResultChanged: window.documentViewer,\n    searchResultsChanged: window.documentViewer,\n    textSelected: window.documentViewer,\n    beginRendering: window.documentViewer,\n    finishedRendering: window.documentViewer,\n    beforeDocumentLoaded: window.documentViewer,\n    displayModeUpdated: window.documentViewer,\n    documentLoaded: window.documentViewer,\n    documentUnloaded: window.documentViewer,\n    fitModeUpdated: window.documentViewer,\n    rotationUpdated: window.documentViewer,\n    toolUpdated: window.documentViewer,\n    toolModeUpdated: window.documentViewer,\n    zoomUpdated: window.documentViewer,\n    pageNumberUpdated: window.documentViewer,\n    pagesUpdated: window.documentViewer,\n    'fitModeUpdated.fitbutton': window.documentViewer,\n    historyChanged: historyManager,\n    annotationSelected: annotManager,\n    annotationChanged: annotManager,\n    updateAnnotationPermission: annotManager,\n    addReply: annotManager,\n    deleteReply: annotManager,\n    annotationHidden: annotManager,\n    annotationDoubleClicked: annotManager,\n    annotationFiltered: annotManager,\n    annotationToggled: annotManager,\n    fieldChanged: annotManager,\n    notify: annotManager,\n    setNoteText: annotManager,\n    fileAttachmentDataAvailable: annotManager,\n    digitalSignatureAvailable: annotManager,\n    editorFocus: editBoxManager,\n    editorBlur: editBoxManager,\n    editorTextChanged: editBoxManager,\n    editorSelectionChanged: editBoxManager,\n    formFieldCreationModeStarted: formFieldCreationManager,\n    formFieldCreationModeEnded: formFieldCreationManager,\n    scaleUpdated: measurementManager\n  };\n};\n","/**\n * https://www.pdftron.com/api/web/Core.Document.html#mergeDocument__anchor\n */\n\nexport default async (documentToMerge, position) => {\n  const { documentViewer } = window;\n  if (documentViewer.getDocument()) {\n    return documentViewer.getDocument().mergeDocument(documentToMerge, position);\n  }\n\n  await documentViewer.loadDocument(documentToMerge);\n  const doc = documentViewer.getDocument();\n  return { filename: doc.getFilename(), pages: [1] };\n};\n","import setToolMode from './setToolMode';\nimport getToolMode from './getToolMode';\nimport getTool from './getTool';\nimport setDisplayMode from './setDisplayMode';\nimport getDisplayMode from './getDisplayMode';\nimport rotateClockwise from './rotateClockwise';\nimport rotateCounterClockwise from './rotateCounterClockwise';\nimport rotatePages from './rotatePages';\nimport movePages from './movePages';\nimport removePages from './removePages';\nimport getFitMode from './getFitMode';\nimport fitToPage from './fitToPage';\nimport fitToWidth from './fitToWidth';\nimport fitToHeight from './fitToHeight';\nimport fitToZoom from './fitToZoom';\nimport zoomToMouse from './zoomToMouse';\nimport getZoom from './getZoom';\nimport zoomTo from './zoomTo';\nimport getDocumentViewer from './getDocumentViewer';\nimport getAnnotationManager from './getAnnotationManager';\nimport getTotalPages from './getTotalPages';\nimport getCurrentPage from './getCurrentPage';\nimport setCurrentPage from './setCurrentPage';\nimport getType from './getType';\nimport isWebViewerServerDocument from './isWebViewerServerDocument';\nimport getSelectedText from './getSelectedText';\nimport clearSelection from './clearSelection';\nimport closeDocument from './closeDocument';\nimport getToolModeMap from './getToolModeMap';\nimport getCurrentUser from './getCurrentUser';\nimport getIsAdminUser from './getIsAdminUser';\nimport setIsAdminUser from './setIsAdminUser';\nimport exportAnnotations from './exportAnnotations';\nimport setCurrentUser from './setCurrentUser';\nimport setReadOnly from './setReadOnly';\nimport setScrollViewElement from './setScrollViewElement';\nimport setViewerElement from './setViewerElement';\nimport isContinuousDisplayMode from './isContinuousDisplayMode';\nimport isScrollableDisplayMode from './isScrollableDisplayMode';\nimport scrollViewUpdated from './scrollViewUpdated';\nimport canModify from './canModify';\nimport canModifyContents from './canModifyContents';\nimport deleteAnnotations from './deleteAnnotations';\nimport getDisplayAuthor from './getDisplayAuthor';\nimport getDocument from './getDocument';\nimport getCompleteRotation from './getCompleteRotation';\nimport getRotation from './getRotation';\nimport getPageInfo from './getPageInfo';\nimport clearSearchResults from './clearSearchResults';\nimport getPageSearchResults from './getPageSearchResults';\nimport displayAdditionalSearchResult from './displayAdditionalSearchResult';\nimport displayAdditionalSearchResults from './displayAdditionalSearchResults';\nimport displaySearchResult from './displaySearchResult';\nimport getActiveSearchResult from './getActiveSearchResult';\nimport setActiveSearchResult from './setActiveSearchResult';\nimport textSearchInit from './textSearchInit';\nimport getSearchMode from './getSearchMode';\nimport getPageWidth from './getPageWidth';\nimport getPageHeight from './getPageHeight';\nimport drawAnnotations from './drawAnnotations';\nimport getOutlines from './getOutlines';\nimport getSelectedAnnotations from './getSelectedAnnotations';\nimport updateCopiedAnnotations from './updateCopiedAnnotations';\nimport pasteCopiedAnnotations from './pasteCopiedAnnotations';\nimport selectAnnotation from './selectAnnotation';\nimport selectAnnotations from './selectAnnotations';\nimport addAnnotations from './addAnnotations';\nimport applyRedactions from './applyRedactions';\nimport isCreateRedactionEnabled from './isCreateRedactionEnabled';\nimport isApplyRedactionEnabled from './isApplyRedactionEnabled';\nimport isAnnotationRedactable from './isAnnotationRedactable';\nimport enableRedaction from './enableRedaction';\nimport drawAnnotationsFromList from './drawAnnotationsFromList';\nimport setInternalAnnotationsTransform from './setInternalAnnotationsTransform';\nimport setPagesUpdatedInternalAnnotationsTransform from './setPagesUpdatedInternalAnnotationsTransform';\nimport loadAsync from './loadAsync';\nimport loadDocument from './loadDocument';\nimport loadThumbnailAsync from './loadThumbnailAsync';\nimport getSelectedTextQuads from './getSelectedTextQuads';\nimport getDisplayModeObject from './getDisplayModeObject';\nimport getScrollViewElement from './getScrollViewElement';\nimport getAnnotationById from './getAnnotationById';\nimport getAnnotationByMouseEvent from './getAnnotationByMouseEvent';\nimport isFullPDFEnabled from './isFullPDFEnabled';\nimport isBlendModeSupported from './isBlendModeSupported';\nimport isAnnotationSelected from './isAnnotationSelected';\nimport setAnnotationStyles from './setAnnotationStyles';\nimport deselectAnnotation from './deselectAnnotation';\nimport deselectAllAnnotations from './deselectAllAnnotations';\nimport jumpToAnnotation from './jumpToAnnotation';\nimport insertBlankPages from './insertBlankPages';\nimport createAnnotationReply from './createAnnotationReply';\nimport getIsReadOnly from './getIsReadOnly';\nimport setNoteContents from './setNoteContents';\nimport setAnnotationRichTextStyle from './setAnnotationRichTextStyle';\nimport updateAnnotationRichTextStyle from './updateAnnotationRichTextStyle';\nimport getAnnotationsList from './getAnnotationsList';\nimport getAnnotationsLoadedPromise from './getAnnotationsLoadedPromise';\nimport getPrintablePDF from './getPrintablePDF';\nimport cancelLoadThumbnail from './cancelLoadThumbnail';\nimport showAnnotations from './showAnnotations';\nimport hideAnnotations from './hideAnnotations';\nimport goToOutline from './goToOutline';\nimport getViewerElement from './getViewerElement';\nimport { addEventListener, removeEventListener } from './eventListener';\nimport setAnnotationCanvasTransform from './setAnnotationCanvasTransform';\nimport getAnnotationCopy from './getAnnotationCopy';\nimport setWatermark from './setWatermark';\nimport getWatermark from './getWatermark';\nimport groupAnnotations from './groupAnnotations';\nimport ungroupAnnotations from './ungroupAnnotations';\nimport getNumberOfGroups from './getNumberOfGroups';\nimport undo from './undo';\nimport redo from './redo';\nimport updateAnnotationState from './updateAnnotationState';\nimport getFontStyles from './getFontStyles';\nimport mergeDocument from './mergeDocument';\nimport getFormFieldCreationManager from './getFormFieldCreationManager';\nimport syncNamespaces from './syncNamespaces';\nimport createDocument from './createDocument';\n\nexport default {\n  setToolMode,\n  getToolMode,\n  getTool,\n  setDisplayMode,\n  getDisplayMode,\n  rotateClockwise,\n  rotateCounterClockwise,\n  rotatePages,\n  movePages,\n  removePages,\n  getFitMode,\n  fitToPage,\n  fitToWidth,\n  fitToHeight,\n  fitToZoom,\n  zoomToMouse,\n  getZoom,\n  zoomTo,\n  getDocumentViewer,\n  getAnnotationManager,\n  getTotalPages,\n  getCurrentPage,\n  setCurrentPage,\n  getType,\n  isWebViewerServerDocument,\n  getSelectedText,\n  clearSelection,\n  closeDocument,\n  getToolModeMap,\n  getCurrentUser,\n  getIsAdminUser,\n  setIsAdminUser,\n  exportAnnotations,\n  setCurrentUser,\n  setReadOnly,\n  setScrollViewElement,\n  setViewerElement,\n  isContinuousDisplayMode,\n  isScrollableDisplayMode,\n  scrollViewUpdated,\n  canModify,\n  canModifyContents,\n  deleteAnnotations,\n  getDisplayAuthor,\n  getDocument,\n  getCompleteRotation,\n  getRotation,\n  getPageInfo,\n  clearSearchResults,\n  getPageSearchResults,\n  displayAdditionalSearchResult,\n  displayAdditionalSearchResults,\n  getActiveSearchResult,\n  setActiveSearchResult,\n  textSearchInit,\n  displaySearchResult,\n  getSearchMode,\n  getPageWidth,\n  getPageHeight,\n  drawAnnotations,\n  getOutlines,\n  getSelectedAnnotations,\n  updateCopiedAnnotations,\n  pasteCopiedAnnotations,\n  selectAnnotation,\n  selectAnnotations,\n  addAnnotations,\n  applyRedactions,\n  isCreateRedactionEnabled,\n  isApplyRedactionEnabled,\n  isAnnotationRedactable,\n  enableRedaction,\n  drawAnnotationsFromList,\n  setInternalAnnotationsTransform,\n  setPagesUpdatedInternalAnnotationsTransform,\n  loadThumbnailAsync,\n  loadAsync,\n  loadDocument,\n  getSelectedTextQuads,\n  getDisplayModeObject,\n  getScrollViewElement,\n  getAnnotationById,\n  isFullPDFEnabled,\n  isBlendModeSupported,\n  isAnnotationSelected,\n  setAnnotationStyles,\n  deselectAnnotation,\n  deselectAllAnnotations,\n  jumpToAnnotation,\n  insertBlankPages,\n  createAnnotationReply,\n  setNoteContents,\n  setAnnotationRichTextStyle,\n  updateAnnotationRichTextStyle,\n  getAnnotationsList,\n  getAnnotationsLoadedPromise,\n  getPrintablePDF,\n  addEventListener,\n  removeEventListener,\n  getIsReadOnly,\n  cancelLoadThumbnail,\n  showAnnotations,\n  hideAnnotations,\n  goToOutline,\n  getViewerElement,\n  setAnnotationCanvasTransform,\n  getAnnotationCopy,\n  setWatermark,\n  getWatermark,\n  getAnnotationByMouseEvent,\n  groupAnnotations,\n  ungroupAnnotations,\n  getNumberOfGroups,\n  undo,\n  redo,\n  updateAnnotationState,\n  getFontStyles,\n  mergeDocument,\n  getFormFieldCreationManager,\n  syncNamespaces,\n  createDocument,\n};\n","/**\n * Set the tool that a user will be using\n * @param {string} toolName Name of the tool, either from <a href='https://www.pdftron.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @fires toolModeUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:toolModeUpdated__anchor\n */\nexport default toolName => {\n  window.documentViewer.setToolMode(window.documentViewer.getTool(toolName));\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getToolMode__anchor\n */\nexport default () => window.documentViewer.getToolMode();","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getTool__anchor\n */\nexport default toolName => window.documentViewer.getTool(toolName);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#setDisplayMode__anchor\n * @fires displayModeUpdated on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:displayModeUpdated__anchor\n * @fires zoomUpdated on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:zoomUpdated__anchor\n */\nexport default mode => {\n  const displayModeManager = window.documentViewer.getDisplayModeManager();\n  const displayMode = (displayModeManager.isVirtualDisplayEnabled())\n    ? new window.Core.VirtualDisplayMode(window.documentViewer, mode)\n    : new window.Core.DisplayMode(window.documentViewer, mode);\n\n  displayModeManager.setDisplayMode(displayMode);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DisplayModeManager.html#getDisplayMode__anchor\n * Note that getDisplayMode returns an object and this function returns mode property of that object.\n * If you want to get the object please use getDisplayModeObject\n */\nexport default () => window.documentViewer.getDisplayModeManager().getDisplayMode().mode;","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#rotateClockwise__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default () => {\n  window.documentViewer.rotateClockwise();\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#rotateCounterClockwise__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default () => {\n  window.documentViewer.rotateCounterClockwise();\n};\n","/**\n * https://www.pdftron.com/api/web/Core.Document.html#rotatePages__anchor\n * @fires pagesUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/namespaces.list.html#event:pagesUpdated__anchor\n */\nexport default (arr, rotation) => window.documentViewer.getDocument().rotatePages(arr, rotation);\n","/**\n * https://www.pdftron.com/api/web/Core.Document.html#movePages__anchor\n * @fires pagesUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/namespaces.list.html#event:pagesUpdated__anchor\n */\nexport default (pageArray, newLocation) => window.documentViewer.getDocument().movePages(pageArray, newLocation);","/**\n * https://www.pdftron.com/api/web/Core.Document.html#removePages__anchor\n * @fires pagesUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/namespaces.list.html#event:pagesUpdated__anchor\n */\nexport default arr => window.documentViewer.getDocument().removePages(arr);\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getFitMode__anchor\n */\nexport default () => window.documentViewer.getFitMode();\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default () => {\n  window.documentViewer.setFitMode(window.documentViewer.FitMode.FitPage);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default () => {\n  window.documentViewer.setFitMode(window.documentViewer.FitMode.FitWidth);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default () => {\n  window.documentViewer.setFitMode(window.documentViewer.FitMode.FitHeight);\n};","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default () => {\n  window.documentViewer.setFitMode(window.documentViewer.FitMode.Zoom);\n};","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#zoomToMouse__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default zoomFactor => {\n  // left panel width when it's not closed\n  // it still maintains its width when closed\n  const xOffset = document.querySelector('[data-element=leftPanel]:not(.closed)')?.offsetWidth || 0;\n\n  // height of main header and the header tools that may appear below\n  const headerHeight = document.querySelector('[data-element=header]')?.offsetHeight || 0;\n  const headerToolsHeight = document.querySelector('[data-element=toolsHeader]')?.offsetHeight || 0;\n  const yOffset = headerHeight + headerToolsHeight;\n\n  window.documentViewer.zoomToMouse(zoomFactor, xOffset, yOffset);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getZoom__anchor\n */\nexport default () => window.documentViewer.getZoomLevel();\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#zoomTo__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (zoomFactor, x, y) => {\n  window.documentViewer.zoomTo(zoomFactor, x, y);\n};\n","/**\n * Returns DocumentViewer of this document\n * An instance of DocumentViewer is added to window in src/index.js\n */\nexport default () => window.documentViewer;","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getPageCount__anchor\n */\nexport default () => window.documentViewer.getPageCount();\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getCurrentPage__anchor\n */\nexport default () => window.documentViewer.getCurrentPage();","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#setCurrentPage__anchor\n * @fires pageNumberUpdated on DocumentViewer if set to a different page number\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:pageNumberUpdated__anchor\n */\nexport default pageNumber => {\n  window.documentViewer.setCurrentPage(pageNumber);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.Document.html#getType__anchor\n */\nexport default () => window.documentViewer.getDocument().getType();\n","export default () => window.documentViewer.getDocument().isWebViewerServerDocument();","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getSelectedText__anchor\n */\nexport default () => window.documentViewer.getSelectedText();\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#clearSelection__anchor\n * @fires textSelected on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:textSelected__anchor\n */\nexport default () => {\n  window.documentViewer.clearSelection();\n};","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#closeDocument__anchor\n * @fires documentUnloaded on DocumentViewer\n * @see onDocumentUnloaded.js (No documentation yet)\n */\nexport default () => window.documentViewer.closeDocument();\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getToolModeMap__anchor\n */\nexport default () => window.documentViewer.getToolModeMap();\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#getCurrentUser__anchor\n */\nexport default () => window.documentViewer.getAnnotationManager().getCurrentUser();\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#getIsAdminUser__anchor\n */\nexport default () => window.documentViewer.getAnnotationManager().isUserAdmin();\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#setIsAdminUser__anchor\n * @fires updateAnnotationPermission on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:updateAnnotationPermission__anchor\n */\nexport default isAdmin => {\n  if (isAdmin) {\n    window.documentViewer.getAnnotationManager().promoteUserToAdmin();\n  } else {\n    window.documentViewer.getAnnotationManager().demoteUserFromAdmin();\n  }\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#exportAnnotations__anchor\n */\nexport default options => window.documentViewer.getAnnotationManager().exportAnnotations(options);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#setCurrentUser__anchor\n * @fires updateAnnotationPermission on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:updateAnnotationPermission__anchor\n */\nexport default userName => {\n  window.documentViewer.getAnnotationManager().setCurrentUser(userName);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#enableReadOnlyMode__anchor\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#disableReadOnlyMode__anchor\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#enableReadOnlyMode__anchor\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#disableReadOnlyMode__anchor\n * @fires updateAnnotationPermission on AnnotationManager\n * @fires readyOnlyModeChanged on DocumentViewer\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:readOnlyModeChanged__anchor\n * @see https://www.pdftron.com/api/web/Core.DocumentViewer.html#event:readOnlyModeChanged__anchor\n */\nexport default isReadOnly => {\n  if (isReadOnly) {\n    window.documentViewer.getAnnotationManager().enableReadOnlyMode();\n    window.documentViewer.enableReadOnlyMode();\n  } else {\n    window.documentViewer.getAnnotationManager().disableReadOnlyMode();\n    window.documentViewer.disableReadOnlyMode();\n  }\n};\n","/**\n * @see componentDidMount in DocumentContainer.js about how to use this api\n */\nexport default element => {\n  window.documentViewer.setScrollViewElement(element);\n};\n","/**\n * @see componentDidMount in DocumentContainer.js about how to use this api\n */\nexport default element => {\n  window.documentViewer.setViewerElement(element);\n};\n","/**\n * @see displayModeObjects.js for more information\n */\nexport default () => window.documentViewer.getDisplayModeManager().getDisplayMode().isContinuous();\n","/**\n * @see displayModeObjects.js for more information\n */\nexport default () => window.documentViewer.getDisplayModeManager().getDisplayMode().IsScrollable();\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#scrollViewUpdated__anchor\n */\nexport default () => {\n  window.documentViewer.scrollViewUpdated();\n};\n","/**\n * Whether or not the current user can modify the annotation.\n */\nexport default annotation => window.documentViewer.getAnnotationManager().canModify(annotation);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#canModifyContents__anchor\n */\nexport default annotation =>\n  window.documentViewer.getAnnotationManager().canModifyContents(annotation);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#deleteAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n * @fires deleteReply on AnnotationManager if the annotation deleted is a reply\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:deleteReply__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n * @fires notify on DocumentViewer if requires delete notification\n */\nexport default (...args) => {\n  window.documentViewer.getAnnotationManager().deleteAnnotations(...args);\n};\n","/**\n * Annotations may set the author to a unique id which isn't suitable for display in the UI.\n * this function gets the author name of the annotation that should be displayed based on a unique userID/GUID.\n */\nexport default userId => window.documentViewer.getAnnotationManager().getDisplayAuthor(userId);\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getDocument__anchor\n */\nexport default () => window.documentViewer.getDocument();\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getCompleteRotation__anchor\n */\nexport default pageNumber => window.documentViewer.getCompleteRotation(pageNumber);","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getRotation__anchor\n */\nexport default pageNumber => window.documentViewer.getRotation(pageNumber);\n","/**\n * https://www.pdftron.com/api/web/Core.Document.html#getPageInfo__anchor\n */\nexport default pageNumber => window.documentViewer.getDocument().getPageInfo(pageNumber);\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#clearSearchResults__anchor\n */\nexport default () => {\n  window.documentViewer.clearSearchResults();\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getPageSearchResults__anchor\n */\nexport default function getPageSearchResults(pageNumber) {\n  return window.documentViewer.getPageSearchResults(pageNumber);\n}\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#displayAdditionalSearchResult__anchor\n */\nexport default result => {\n  window.documentViewer.displayAdditionalSearchResult(result);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#displayAdditionalSearchResults__anchor\n */\nexport default results => {\n  window.documentViewer.displayAdditionalSearchResults(results);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getActiveSearchResult__anchor\n */\nexport default function getActiveSearchResult() {\n  return window.documentViewer.getActiveSearchResult();\n}\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#textSearchInit__anchor\n */\nexport default (searchValue, searchMode, isFullSearch, handleSearchResult) => {\n  window.documentViewer.textSearchInit(searchValue, searchMode, isFullSearch, handleSearchResult);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#displaySearchResult__anchor\n */\nexport default result => {\n  window.documentViewer.displaySearchResult(result);\n};\n","export default () => window.Core.Search.Mode;\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getPageWidth__anchor\n */\nexport default pageNumber => window.documentViewer.getPageWidth(pageNumber);\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getPageHeight__anchor\n */\nexport default pageNumber => window.documentViewer.getPageHeight(pageNumber);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#drawAnnotations__anchor\n */\nexport default (pageNumber, overrideCanvas, majorRedraw, overrideContainer) =>\n  window.documentViewer\n    .getAnnotationManager()\n    .drawAnnotations(\n      pageNumber,\n      overrideCanvas,\n      majorRedraw,\n      overrideContainer,\n    );\n","/**\n * https://www.pdftron.com/api/web/Core.Document.html#getBookmarks__anchor\n */\nexport default callback => {\n  window.documentViewer.getDocument().getBookmarks().then(outlines => {\n    callback(outlines);\n  });\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#getSelectedAnnotations__anchor\n */\nexport default () => window.documentViewer.getAnnotationManager().getSelectedAnnotations();\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#updateCopiedAnnotations__anchor\n */\nexport default () => {\n  window.documentViewer.getAnnotationManager().updateCopiedAnnotations();\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#pasteCopiedAnnotations__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n * AnnotationSelected will be fired at most twice:\n * it will be fired with deselect action if you selected any annotations before paste\n * it will be fired with select action after the annotation is pasted\n */\nexport default () => {\n  window.documentViewer.getAnnotationManager().pasteCopiedAnnotations();\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#selectAnnotation__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default annotation => {\n  window.documentViewer.getAnnotationManager().selectAnnotation(annotation);\n};","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#selectAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default annotations => {\n  window.documentViewer.getAnnotationManager().selectAnnotations(annotations);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#addAnnotations__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default annotations => {\n  window.documentViewer.getAnnotationManager().addAnnotations(annotations);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#applyRedactions__anchor\n * If the redaction annotations overlap with other annotations, it calls deleteAnnotations on the other annotations.\n * See deleteAnnotations.js for any events that are trigger by delete annotations\n */\nexport default annotations => window.documentViewer.getAnnotationManager().applyRedactions(annotations);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#isCreateRedactionEnabled__anchor\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:isCreateRedactionEnabled__anchor\n */\nexport default () => window.documentViewer.getAnnotationManager().isCreateRedactionEnabled();\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#isApplyRedactionEnabled__anchor\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:isApplyRedactionEnabled__anchor\n */\nexport default () => window.documentViewer.getAnnotationManager().isApplyRedactionEnabled();\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#isAnnotationRedactable__anchor\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:isAnnotationRedactable__anchor\n */\nexport default annotations => window.documentViewer.getAnnotationManager().isAnnotationRedactable(annotations);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#enableRedaction__anchor\n */\nexport default enable => {\n  if (enable) {\n    window.documentViewer.getAnnotationManager().enableRedaction();\n  } else {\n    window.documentViewer.getAnnotationManager().disableRedaction();\n  }\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#drawAnnotationsFromList__anchor\n */\nexport default annotations => {\n  window.documentViewer.getAnnotationManager().drawAnnotationsFromList(annotations);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#setInternalAnnotationsTransform__anchor\n */\nexport default callback => {\n  window.documentViewer.setInternalAnnotationsTransform(callback);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#setPagesUpdatedInternalAnnotationsTransform__anchor\n */\nexport default callback => {\n  window.documentViewer.setPagesUpdatedInternalAnnotationsTransform(callback);\n};\n","/**\n * https://www.pdftron.com/api/web/Coret.html#loadThumbnailAsync__anchor\n * RequestId will be used if we cancel that thumbnail loading\n */\nexport default (pageNum, callback) => {\n  const requestId = window.documentViewer.getDocument().loadThumbnail(pageNum, thumb => {\n    callback(thumb);\n  });\n  return requestId;\n};\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#loadAsync__anchor\n */\nexport default (partRetriever, docOptions) => {\n  window.documentViewer.loadAsync(partRetriever, docOptions);\n};\n","export default (...args) => window.documentViewer.loadDocument(...args);","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#getSelectedTextQuads__anchor\n */\nexport default () => window.documentViewer.getSelectedTextQuads();\n","/**\n * https://www.pdftron.com/api/web/Core.DisplayModeManager.html#getDisplayMode__anchor\n */\nexport default () => window.documentViewer.getDisplayModeManager().getDisplayMode();\n","/**\n * Return the scroll view element set when document is loaded\n */\nexport default () => window.documentViewer.getScrollViewElement();\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#getAnnotationById__anchor\n */\nexport default Id => window.documentViewer.getAnnotationManager().getAnnotationById(Id);\n","/**\n * https://www.pdftron.com/api/web/Core.isFullPDFEnabled.html#isFullPDFEnabled__anchor\n */\nexport default () => window.Core.isFullPDFEnabled();\n","/**\n * https://www.pdftron.com/api/web/Core.html#isBlendModeSupported__anchor\n * @see https://www.pdftron.com/api/web/Core.html#isBlendModeSupported__anchor\n */\nexport default type => window.Core.isBlendModeSupported(type);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#isAnnotationSelected__anchor\n */\nexport default annotation => window.documentViewer.getAnnotationManager().isAnnotationSelected(annotation);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#setAnnotationStyles__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, callback) => {\n  window.documentViewer.getAnnotationManager().setAnnotationStyles(annotation, callback);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#deselectAnnotation__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default annotation => {\n  window.documentViewer.getAnnotationManager().deselectAnnotation(annotation);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#deselectAllAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default () => {\n  window.documentViewer.getAnnotationManager().deselectAllAnnotations();\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#jumpToAnnotationd__anchor\n */\nexport default annotation => {\n  window.documentViewer.getAnnotationManager().jumpToAnnotation(annotation);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.Document.html#insertblankpages\n */\nexport default (insertBeforeThesePages, width, height) => window.documentViewer.getDocument().insertBlankPages(insertBeforeThesePages, width, height);","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#createAnnotationReply__anchor\n * @fires addReply on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:addReply__anchor\n */\nexport default (annotation, reply) => {\n  window.documentViewer.getAnnotationManager().createAnnotationReply(annotation, reply);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#setNoteContents__anchor\n * @fires annotationChanged(Modify) on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, content) => {\n  window.documentViewer.getAnnotationManager().setNoteContents(annotation, content);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#setAnnotationRichTextStyle__anchor\n * @fires annotationChanged(Modify) on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, style) => {\n  window.documentViewer.getAnnotationManager().setAnnotationRichTextStyle(annotation, style);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#updateAnnotationRichTextStyle__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, callback) => {\n  window.documentViewer.getAnnotationManager().updateAnnotationRichTextStyle(annotation, callback);\n};\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#getAnnotationsList__anchor\n */\nexport default () => window.documentViewer.getAnnotationManager().getAnnotationsList();\n","/**\n * Gets a promise that resolves when the annotations in the current document have all been loaded\n */\nexport default () => window.documentViewer.getAnnotationsLoadedPromise();\n","export default () => window.documentViewer.getDocument().getPrintablePDF();\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#getReadOnly__anchor\n */\nexport default () => window.documentViewer.getAnnotationManager().isReadOnlyModeEnabled();\n","/**\n * https://www.pdftron.com/api/web/Core.Document.html#cancelLoadThumbnail__anchor\n */\nexport default requestId => {\n  window.documentViewer.getDocument().cancelLoadThumbnail(requestId);\n};","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#showAnnotations__anchor\n */\nexport default annotations => window.documentViewer.getAnnotationManager().showAnnotations(annotations);\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#hideAnnotations__anchor\n */\nexport default annotations =>\n  window.documentViewer.getAnnotationManager().hideAnnotations(annotations);\n","/**\n * https://www.pdftron.com/api/web/Core.DocumentViewer.html#displayBookmark__anchor\n */\nexport default outline => {\n  window.documentViewer.displayBookmark(outline);\n};\n","/**\n * Return the viewer element. It is the div with class name \"document\" in DocumentContainer.js\n */\nexport default () => window.documentViewer.getViewerElement();\n","/**\n * https://www.pdftron.com/api/web/Core.AnnotationManager.html#setAnnotationCanvasTransform__anchor\n * @see https://www.pdftron.com/api/web/Core.AnnotationManager.html#setAnnotationCanvasTransform__anchor\n */\nexport default (annotCanvasContext, zoom, rotation) => {\n  window.documentViewer.getAnnotationManager().setAnnotationCanvasTransform(annotCanvasContext, zoom, rotation);\n};\n","export default annotation => window.documentViewer.getAnnotationManager().getAnnotationCopy(annotation);","/**\n * https://www.pdftron.com/api/web/CoretViewer.html#setWatermark__anchor\n */\nexport default watermarkOptions => window.documentViewer.setWatermark(watermarkOptions);\n","export default () => window.documentViewer.getWatermark();\n","export default e => window.documentViewer.getAnnotationManager().getAnnotationByMouseEvent(e);","export default (primaryAnnotation, annotationsToGroup) =>\n  window.documentViewer.getAnnotationManager().groupAnnotations(\n    primaryAnnotation,\n    annotationsToGroup,\n  );\n","export default annotations => window.documentViewer.getAnnotationManager().ungroupAnnotations(annotations);","export default annotations => window.documentViewer.getAnnotationManager().getNumberOfGroups(annotations);","export default () => {\n  window.documentViewer.getAnnotationHistoryManager().undo();\n};\n","export default () => {\n  window.documentViewer.getAnnotationHistoryManager().redo();\n};\n","export default (annotation, state, stateModel, message) =>\n  window.documentViewer\n    .getAnnotationManager()\n    .updateAnnotationState(annotation, state, stateModel, message);\n","export default () => window.Core.FontStyles;\n","import getAnnotationManager from './getAnnotationManager';\n\nexport default () => {\n  const annotManager = getAnnotationManager();\n  return annotManager.getFormFieldCreationManager();\n};","/**\n * https://www.pdftron.com/api/web/Core.html#syncNamespaces__anchor\n */\nexport default namespaces => window.Core.syncNamespaces(namespaces);\n","/**\n * https://www.pdftron.com/api/web/Core.html#.createDocument\n */\nexport default (sourceDoc, docOptions) => {\n  return window.Core.createDocument(sourceDoc, docOptions);\n};\n","export default (dataElement, state) => getLeftPanelDataElements(state).includes(dataElement);\n\nexport const getLeftPanelDataElements = state => {\n  const defaultLeftPanels = [\n    'thumbnailsPanel',\n    'outlinesPanel',\n    'layersPanel',\n    'bookmarksPanel',\n    'signaturePanel',\n    'attachmentPanel',\n  ];\n\n  if (state.viewer.notesInLeftPanel) {\n    defaultLeftPanels.push('notesPanel');\n  }\n\n  const customPanels = state.viewer.customPanels.map(({ panel }) => panel.dataElement);\n\n  return [...defaultLeftPanels, ...customPanels];\n};\n","export const isDesktop = () => window.innerWidth > 900;\nexport const isTabletOrMobile = () => window.innerWidth <= 900;\nexport const isMobile = () => window.innerWidth < 640;\nexport const isIEEdge = navigator.userAgent.indexOf('Edge') > -1;\nexport const isIE11 = navigator.userAgent.indexOf('Trident/7.0') > -1;\nexport const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\nexport const isIE = isIEEdge || isIE11;\n// https://stackoverflow.com/a/58064481\nconst checkForIOS13 = (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\nexport const isIOS = window.navigator.userAgent.match(/(iPad|iPhone|iPod)/i) || checkForIOS13;\nexport const isAndroid = window.navigator.userAgent.match(/Android/i);\nexport const isMobileDevice = isIOS || isAndroid || window.navigator.userAgent.match(/webOS|BlackBerry|IEMobile|Opera Mini/i);\nexport const isMobileDeviceFunc = () => window.navigator.userAgent.match(/(iPad|iPhone|iPod)/i) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) || window.navigator.userAgent.match(/Android/i) || window.navigator.userAgent.match(/webOS|BlackBerry|IEMobile|Opera Mini/i);\nexport const isMac = navigator.appVersion.indexOf('Mac') > -1;\nexport const isWindows = navigator.appVersion.indexOf('Windows') > -1;\n\n\nexport const isChrome = (function() {\n  // opera, edge, and maxthon have chrome in their useragent string so we need to be careful!\n  const opera = window.navigator.userAgent.match(/OPR/);\n  const maxthon = window.navigator.userAgent.match(/Maxthon/);\n  const edge = window.navigator.userAgent.match(/Edge/);\n\n  return (window.navigator.userAgent.match(/Chrome\\/(.*?) /) && !opera && !maxthon && !edge);\n})();\n\nexport const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (/^((?!chrome|android).)*$/.test(navigator.userAgent) && isIOS);\n\nexport const isChromeOniOS = window.navigator.userAgent.match(/CriOS\\/(.*?) /);\n\nexport const isFirefoxOniOS = window.navigator.userAgent.match(/(FxiOS)\\/(.*?) /);","/**\n * Contains string enums for WebViewer UI events.\n * @name UI.Events\n * @property {string} ANNOTATION_FILTER_CHANGED {@link UI#event:annotationFilterChanged UI.Events.annotationFilterChanged}\n * @property {string} DOCUMENT_LOADED {@link UI#event:documentLoaded UI.Events.documentLoaded}\n * @property {string} DOCUMENT_MERGED {@link UI#event:documentMerged UI.Events.documentMerged}\n * @property {string} FILE_DOWNLOADED {@link UI#event:fileDownloaded UI.Events.fileDownloaded}\n * @property {string} FINISHED_SAVING_PDF {@link UI#event:finishedSavingPDF UI.Events.finishedSavingPDF}\n * @property {string} LOAD_ERROR {@link UI#event:loaderror UI.Events.loaderror}\n * @property {string} DRAG_OUTLINE {@link UI#event:dragOutline UI.Events.dragOutline}\n * @property {string} DROP_OUTLINE {@link UI#event:dragOutline UI.Events.dragOutline}\n * @property {string} PANEL_RESIZED {@link UI#event:panelResized UI.Events.panelResized}\n * @property {string} THEME_CHANGED {@link UI#event:themeChanged UI.Events.themeChanged}\n * @property {string} TOOLBAR_GROUP_CHANGED {@link UI#event:toolbarGroupChanged UI.Events.toolbarGroupChanged}\n * @property {string} SELECTED_THUMBNAIL_CHANGED {@link UI#event:selectedThumbnailChanged UI.Events.selectedThumbnailChanged}\n * @property {string} THUMBNAIL_DRAGGED {@link UI#event:thumbnailDragged UI.Events.thumbnailDragged}\n * @property {string} THUMBNAIL_DROPPED {@link UI#event:thumbnailDropped UI.Events.thumbnailDropped}\n * @property {string} USER_BOOKMARKS_CHANGED {@link UI#event:userBookmarksChanged UI.Events.userBookmarksChanged}\n * @property {string} OUTLINE_BOOKMARKS_CHANGED {@link UI#event:outlineBookmarksChanged UI.Events.outlineBookmarksChanged}\n * @property {string} VIEWER_LOADED {@link UI#event:viewerLoaded UI.Events.viewerLoaded}\n * @property {string} VISIBILITY_CHANGED {@link UI#event:visibilityChanged UI.Events.visibilityChanged}\n * @property {string} FULLSCREEN_MODE_TOGGLED {@link UI#event:fullscreenModeToggled UI.Events.fullscreenModeToggled}\n * @property {string} BEFORE_TAB_CHANGED {@link UI#event:beforeTabChanged UI.Events.beforeTabChanged}\n * @property {string} TAB_DELETED {@link UI#event:tabDeleted UI.Events.tabDeleted}\n * @property {string} TAB_ADDED {@link UI#event:tabAdded UI.Events.tabAdded}\n * @property {string} TAB_MOVED {@link UI#event:tabMoved UI.Events.tabMoved}\n * @example\n  WebViewer(...).then(function(instance) {\n    const UIEvents = instance.UI.Events;\n    instance.UI.addEventListener(UIEvents.ANNOTATION_FILTER_CHANGED, e => {\n      const { types, authors, colors } = e.detail;\n      console.log(types, authors, colors);\n    });\n  });\n */\n\nexport default {\n  'ANNOTATION_FILTER_CHANGED': 'annotationFilterChanged',\n  'DOCUMENT_LOADED': 'documentLoaded',\n  'DOCUMENT_MERGED': 'documentMerged',\n  'FILE_DOWNLOADED': 'fileDownloaded',\n  'FINISHED_SAVING_PDF': 'finishedSavingPDF',\n  'LOAD_ERROR': 'loaderror',\n  'DRAG_OUTLINE': 'dragOutline',\n  'DROP_OUTLINE': 'dropOutline',\n  'PANEL_RESIZED': 'panelResized',\n  'THEME_CHANGED': 'themeChanged',\n  'TOOLBAR_GROUP_CHANGED': 'toolbarGroupChanged',\n  'SELECTED_THUMBNAIL_CHANGED': 'selectedThumbnailChanged',\n  'THUMBNAIL_DRAGGED': 'thumbnailDragged',\n  'THUMBNAIL_DROPPED': 'thumbnailDropped',\n  'USER_BOOKMARKS_CHANGED': 'userBookmarksChanged',\n  'OUTLINE_BOOKMARKS_CHANGED': 'outlineBookmarksChanged',\n  'VIEWER_LOADED': 'viewerLoaded',\n  'VISIBILITY_CHANGED': 'visibilityChanged',\n  'FULLSCREEN_MODE_TOGGLED': 'fullscreenModeToggled',\n  'BEFORE_TAB_CHANGED': 'beforeTabChanged',\n  'TAB_DELETED': 'tabDeleted',\n  'TAB_ADDED': 'tabAdded',\n  'TAB_MOVED': 'tabMoved',\n};\n\n/**\n * Triggered when annotation filter in the notes panel has changed.\n * Returns empty arrays if the filter is cleared.\n * @name UI#annotationFilterChanged\n * @event\n * @type {object}\n * @property {string[]} types Types filter\n * @property {string[]} authors Author filter\n * @property {string[]} colors Color filter\n * @property {string[]} statuses Status filter\n */\n\n/**\n* Triggered when a new document has been loaded.\n* @name UI#documentLoaded\n* @event\n*/\n\n/**\n* Triggered when a new document has been merged into the thumbnails panel.\n* @name UI#documentMerged\n* @event\n* @type {object}\n* @property {string} filename File name\n* @property {number[]} pages Page numbers\n*/\n\n/**\n * @name UI#finishedSavingPDF\n * @event\n * @deprecated Since version 8.3. Use [fileDownloaded]{@link UI#event:fileDownloaded UI.Events.fileDownloaded} instead\n */\n\n/**\n* Triggered when the file has finished downloading.\n* @name UI#fileDownloaded\n* @event\n*/\n\n/**\n* Triggered when there is an error loading the document.\n* @name UI#loaderror\n* @event\n* @param {object} err The error\n*/\n\n/**\n* Triggered when dragging Outline item.\n* @name UI#dragOutline\n* @event\n*/\n\n/**\n* Triggered when dropping Outline item.\n* @name UI#dragOutline\n* @event\n*/\n\n/**\n* Triggered when the panels are resized.\n* @name UI#panelResized\n* @event\n* @type {object}\n* @property {string} element DataElement name\n* @property {number} width New panel width\n*/\n\n/**\n* Triggered when the UI theme has changed.\n* @name UI#themeChanged\n* @event\n* @param {string} theme The new UI theme\n*/\n\n/**\n* Triggered when the toolbar group has changed.\n* @name UI#toolbarGroupChanged\n* @event\n* @param {string} toolbarGroup The new toolbar group\n*/\n\n/**\n* Triggered when the selected thumbnail changed.\n* @name UI#selectedThumbnailChanged\n* @event\n* @param {array} selectedThumbnailPageIndexes The array of indexes of currently selected thumbnails\n*/\n\n/**\n* Triggered when thumbnail(s) are dragged in the thumbnail panel\n* @name UI#thumbnailDragged\n* @event\n*/\n\n/**\n* Triggered when dragged thumbnail(s) are dropped to a new location in the thumbnail panel\n* @name UI#thumbnailDropped\n* @event\n* @type {object}\n* @property {Array<number>} pageNumbersBeforeMove The array of page numbers to be moved\n* @property {Array<number>} pageNumbersAfterMove The array of page numbers of where thumbnails being dropped\n* @property {number} numberOfPagesMoved Number of page(s) being moved\n*/\n\n/**\n* Triggered when user bookmarks have changed.\n* @name UI#userBookmarksChanged\n* @event\n* @param {object} bookmarks The new bookmarks\n*/\n\n/**\n* Triggered when outline bookmarks have changed.\n* @name UI#outlineBookmarksChanged\n* @event\n* @param {object} bookmarkData\n* @param {object} bookmarkData.bookmark The changed bookmark\n* @param {string} bookmarkData.bookmark.id Changed outline bookmark id\n* @param {string} bookmarkData.bookmark.name Changed outline bookmark name\n* @param {string} bookmarkData.path Changed outline path in the outline tree\n* @param {string} bookmarkData.action The action that triggered the outline bookmarks change\n*/\n\n/**\n* Triggered when the viewer has loaded.\n* @name UI#viewerLoaded\n* @event\n*/\n\n/**\n* Triggered when the visibility of an element has changed.\n* @name UI#visibilityChanged\n* @event\n* @type {object}\n* @property {string} element DataElement name\n* @property {boolean} isVisible The new visibility\n*/\n\n/**\n* Triggered when fullscreen mode is toggled.\n* @name UI#fullscreenModeToggled\n* @event\n* @type {object}\n* @property {boolean} isInFullscreen Whether in fullscreen mode or not.\n*/\n\n/**\n* Triggered before the UI switches tabs\n* @name UI#beforeTabChanged\n* @event\n* @type {object}\n* @property {object} currentTab An object containing the properties for the currently active tab (null if no currently active tab)\n* @property {number} currentTab.id The id of the tab being switched to\n* @property {string} currentTab.src Source of current tab\n* @property {string} currentTab.options Tab load options\n* @property {boolean} currentTab.annotationsChanged True if the annotations have been changed since loading the tab\n* @property {object} nextTab An object containing the properties for the tab being switched to\n* @property {number} nextTab.id The id of the tab being switched to\n* @property {string} nextTab.src Source of current tab\n* @property {string} nextTab.options Tab load options\n*/\n\n/**\n* Triggered when a Tab is deleted\n* @name UI#tabDeleted\n* @event\n* @type {object}\n* @property {number} id The id of the tab being deleted\n* @property {string} src Source of current tab\n* @property {string} options Tab load options\n*/\n\n/**\n* Triggered when a Tab is added\n* @name UI#tabAdded\n* @event\n* @type {object}\n* @property {number} id The id of the tab being added\n* @property {string} src Source of current tab\n* @property {string} options Tab load options\n*/\n\n/**\n* Triggered when a Tab is moved\n* @name UI#tabMoved\n* @event\n* @type {object}\n* @property {number} id The id of the tab being moved\n* @property {string} src Source of moved tab\n* @property {string} options Tab load options\n* @property {number} prevIndex Previous index of tab\n* @property {number} newIndex New index of tab\n*/\n","import { isIE11 } from 'helpers/device';\nimport Events from 'constants/events';\n\nconst fireEvent = (eventName, data) => {\n  let event;\n  if (CustomEvent && !isIE11) {\n    event = new CustomEvent(eventName, { detail: data, bubbles: true, cancelable: true });\n  } else {\n    event = document.createEvent('Event');\n    event.initEvent(eventName, true, true);\n    event.detail = data;\n  }\n  window.dispatchEvent(event);\n};\n\nexport default fireEvent;\nexport const fireError = message => {\n  fireEvent(Events.LOAD_ERROR, message);\n};\n","let minZoom = 0.05;\nlet maxZoom = 99.99;\n\nexport const getMinZoomLevel = () => minZoom;\n\nexport const setMinZoomLevel = zoom => {\n  minZoom = zoom;\n};\n\nexport const getMaxZoomLevel = () => maxZoom;\n\nexport const setMaxZoomLevel = zoom => {\n  maxZoom = zoom;\n};\n\nexport const stepToZoomFactorRangesMap = {\n  '0.075': [null, 0.8],\n  '0.25': [0.8, 1.5],\n  '0.5': [1.5, 2.5],\n  '1': [2.5, 4],\n  '2': [4, 8],\n  '4': [8, 32],\n  '8': [32, 64],\n  '16': [64, null],\n};\n\nexport const defaultZoomList = [0.1, 0.25, 0.5, 1, 1.25, 1.5, 2, 4, 8, 16, 64];\n\nexport default {\n  setMinZoomLevel,\n  setMaxZoomLevel,\n  getMinZoomLevel,\n  getMaxZoomLevel\n};\n","import { isAndroid, isChrome } from 'helpers/device';\nimport { defaultNoteDateFormat, defaultPrintedNoteDateFormat } from 'constants/defaultTimeFormat';\n\n// viewer\nexport const getPresetCropDimensions = state => state.viewer.presetCropDimensions;\nexport const getDateTimeFormats = state => state.viewer.dateTimeFormats;\nexport const getThumbnailSelectionMode = state => state.viewer.thumbnailSelectionMode;\nexport const getFonts = state => state.viewer.fonts;\nexport const getTabs = state => state.viewer.tabs;\nexport const getActiveTab = state => state.viewer.activeTab;\nexport const getIsMultiTab = state => state.viewer.isMultiTab;\nexport const getTabManager = state => state.viewer.TabManager;\nexport const getIsHighContrastMode = state => state.viewer.highContrastMode;\nexport const getLastPickedToolForGroup = (state, group) => state.viewer.lastPickedToolForGroup[group];\nexport const getStandardStamps = state => state.viewer.standardStamps;\nexport const getCustomStamps = state => state.viewer.customStamps;\nexport const getSelectedStampIndex = state => state.viewer.selectedStampIndex;\nexport const getSelectedStamp = state => {\n  const standardStamps = getStandardStamps(state);\n  const customStamps = getCustomStamps(state);\n  const index = getSelectedStampIndex(state);\n  let selectedStamp = standardStamps[index];\n  // selected stamp is not found in standard stamps, search dyamic stamps\n  if (!selectedStamp && !!customStamps.length) {\n    selectedStamp = customStamps[index - standardStamps.length];\n  }\n  return selectedStamp;\n};\nexport const getSavedSignatures = state => state.viewer.savedSignatures;\nexport const getDisplayedSignatures = state =>\n  state.viewer.savedSignatures.filter(state.viewer.displayedSignaturesFilterFunction);\nexport const getSelectedDisplayedSignatureIndex = state => state.viewer.selectedDisplayedSignatureIndex;\nexport const getSelectedDisplayedSignature = state =>\n  getDisplayedSignatures(state)[getSelectedDisplayedSignatureIndex(state)];\nexport const getDisplayedSignaturesFilterFunction = state => state.viewer.displayedSignaturesFilterFunction;\n\nexport const getAutoFocusNoteOnAnnotationSelection = state => state.viewer.autoFocusNoteOnAnnotationSelection;\nexport const getNotesInLeftPanel = state => state.viewer.notesInLeftPanel;\nexport const getLeftPanelWidth = state => state.viewer.panelWidths.leftPanel;\nexport const getSearchPanelWidth = state => state.viewer.panelWidths.searchPanel;\nexport const getNotesPanelWidth = state => state.viewer.panelWidths.notesPanel;\n\nexport const getRedactionPanelWidth = state => state.viewer.panelWidths.redactionPanel;\n\nexport const getWv3dPropertiesPanelWidth = state => state.viewer.panelWidths.wv3dPropertiesPanel;\n\nconst RESIZE_BAR_WIDTH = 14; // 14px Need to update this if styling results in a change to width.\nexport const getLeftPanelWidthWithReszieBar = state => state.viewer.panelWidths.leftPanel + RESIZE_BAR_WIDTH;\nexport const getSearchPanelWidthWithReszieBar = state => state.viewer.panelWidths.searchPanel + RESIZE_BAR_WIDTH;\nexport const getNotesPanelWidthWithReszieBar = state => state.viewer.panelWidths.notesPanel + RESIZE_BAR_WIDTH;\nexport const getDocumentContentContainerWidthStyle = state => {\n  const notesPanelWidth = getNotesPanelWidthWithReszieBar(state);\n  const searchPanelWidth = getSearchPanelWidthWithReszieBar(state);\n  const leftPanelWidth = getLeftPanelWidthWithReszieBar(state);\n  const redactionPanelWidth = getRedactionPanelWidth(state);\n  const wv3dPropertiesPanelWidth = getWv3dPropertiesPanelWidth(state);\n  const isLeftPanelOpen = isElementOpen(state, 'leftPanel');\n  const isNotesPanelOpen = isElementOpen(state, 'notesPanel');\n  const isSearchPanelOpen = isElementOpen(state, 'searchPanel');\n  const isRedactionPanelOpen = isElementOpen(state, 'redactionPanel');\n  const isWv3dPropertiesPanelOpen = isElementOpen(state, 'wv3dPropertiesPanel');\n\n  const spaceTakenUpByPanels =\n    0 +\n    (isLeftPanelOpen ? leftPanelWidth : 0) +\n    (isNotesPanelOpen ? notesPanelWidth : 0) +\n    (isSearchPanelOpen ? searchPanelWidth : 0) +\n    (isRedactionPanelOpen ? redactionPanelWidth : 0) +\n    (isWv3dPropertiesPanelOpen ? wv3dPropertiesPanelWidth : 0);\n\n  return `calc(100% - ${spaceTakenUpByPanels}px)`;\n};\n\nexport const getDocumentContainerWidth = state => state.viewer.documentContainerWidth;\nexport const getDocumentContainerHeight = state => state.viewer.documentContainerHeight;\n\nexport const isElementDisabled = (state, dataElement) => state.viewer?.disabledElements[dataElement]?.disabled;\n\nexport const isElementOpen = (state, dataElement) =>\n  state.viewer?.openElements[dataElement] && !state.viewer?.disabledElements[dataElement]?.disabled;\n\nexport const allButtonsInGroupDisabled = (state, toolGroup) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  const dataElements = Object.values(toolButtonObjects)\n    .filter(({ group }) => group === toolGroup)\n    .map(({ dataElement }) => dataElement);\n\n  return dataElements.every(dataElement => isElementDisabled(state, dataElement));\n};\n\nexport const getToolbarHeaders = state => {\n  return state.viewer.headers;\n};\n\nconst getToolbarGroupDataElements = state => {\n  return Object.keys(state.viewer.headers).filter(key => key.includes('toolbarGroup-'));\n};\n\nexport const getEnabledToolbarGroups = state => {\n  const toolbarGroupDataElements = getToolbarGroupDataElements(state);\n  return toolbarGroupDataElements.filter(dataElement => {\n    // The items will come from 'children' if it is a ToolbarGroup created by the API createTool\n    const headerItems = state.viewer.headers[dataElement].children || state.viewer.headers[dataElement];\n    const flattenHeaderItems = dataItems => {\n      return dataItems.reduce((total, item) => {\n        if (item.children) {\n          total.push(...flattenHeaderItems(item.children));\n        } else {\n          total.push(item);\n        }\n        return total;\n      }, []);\n    };\n\n    const itemsToCheck = flattenHeaderItems(headerItems);\n    const toolGroupButtons = itemsToCheck.filter(({ dataElement }) => {\n      return dataElement && dataElement.includes('ToolGroupButton');\n    });\n    const isEveryToolGroupButtonDisabled =\n      !dataElement.includes('toolbarGroup-View') &&\n      toolGroupButtons.every(({ dataElement: toolGroupDataElement }) => {\n        return isElementDisabled(state, toolGroupDataElement);\n      });\n    return !isElementDisabled(state, `${dataElement}`) && !isEveryToolGroupButtonDisabled;\n  });\n};\n\nexport const getCurrentToolbarGroup = state => state.viewer.toolbarGroup;\n\nexport const getActiveTheme = state => state.viewer.activeTheme;\n\nexport const getDefaultHeaderItems = state => {\n  return state.viewer.headers.default;\n};\n\nexport const getActiveHeaderItems = state => {\n  const activeHeaderGroupItems = state.viewer.headers[state.viewer.activeHeaderGroup];\n  return activeHeaderGroupItems.children || activeHeaderGroupItems;\n};\n\nexport const getDisabledElementPriority = (state, dataElement) => state.viewer.disabledElements[dataElement]?.priority;\n\nexport const getToolsHeaderItems = state => {\n  const toolbarGroup = getCurrentToolbarGroup(state);\n  const toolbarGroupHeaders = state.viewer.headers[toolbarGroup];\n  return toolbarGroupHeaders && toolbarGroupHeaders.children ? toolbarGroupHeaders.children : toolbarGroupHeaders || [];\n};\n\nexport const getToolbarGroupItems = toolbarGroup => state => {\n  return state.viewer.headers[toolbarGroup];\n};\n\nexport const getToolButtonObjects = state => {\n  return state.viewer.toolButtonObjects;\n};\n\nexport const isToolGroupReorderingEnabled = state => {\n  return state.viewer.enableToolGroupReordering;\n};\n\nexport const isNoteSubmissionWithEnterEnabled = state => {\n  return state.viewer.enableNoteSubmissionWithEnter;\n};\n\nexport const isNotesPanelTextCollapsingEnabled = state => {\n  return state.viewer.isNotesPanelTextCollapsingEnabled;\n};\n\nexport const isNotesPanelRepliesCollapsingEnabled = state => {\n  return state.viewer.isNotesPanelRepliesCollapsingEnabled;\n};\n\nexport const isCommentThreadExpansionEnabled = state => {\n  return state.viewer.isCommentThreadExpansionEnabled;\n};\n\nexport const getActiveToolNamesForActiveToolGroup = state => {\n  const { activeToolGroup } = state.viewer;\n  const toolButtonObjects = getToolButtonObjects(state);\n  return Object.keys(toolButtonObjects).filter(toolName => {\n    const toolButtonObject = toolButtonObjects[toolName];\n    const { group, dataElement } = toolButtonObject;\n    return group === activeToolGroup && !isElementDisabled(state, dataElement);\n  });\n};\n\nexport const getToolButtonDataElements = (state, toolNames) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  return toolNames.map(toolName => toolButtonObjects[toolName]?.dataElement).filter(Boolean);\n};\n\nexport const getToolButtonObject = (state, toolName) => getToolButtonObjects(state)[toolName];\n\nexport const getToolButtonDataElement = (state, toolName) => getToolButtonObject(state, toolName)?.dataElement;\n\nexport const getToolNamesByGroup = (state, toolGroup) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  return Object.keys(toolButtonObjects).filter(name => toolButtonObjects[name].group === toolGroup);\n};\n\nexport const getToolNameByDataElement = (state, dataElement) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  return Object.keys(toolButtonObjects).find(name => toolButtonObjects[name].dataElement === dataElement);\n};\n\nexport const getActiveToolName = state => state.viewer.activeToolName;\n\nexport const getActiveToolStyles = state => state.viewer.activeToolStyles;\n\nexport const getCustomColor = state => state.viewer.customColor;\n\nexport const getCustomColors = state => state.viewer.customColors;\n\nexport const getActiveLeftPanel = state => state.viewer.activeLeftPanel;\n\nexport const getActiveToolGroup = state => state.viewer.activeToolGroup;\n\nexport const getNotePopupId = state => state.viewer.notePopupId;\n\nexport const getFitMode = state => state.viewer.fitMode;\n\nexport const getZoom = state => state.viewer.zoom;\n\nexport const getDisplayMode = state => state.viewer.displayMode;\n\nexport const getCurrentPage = state => state.viewer.currentPage;\n\nexport const getSortStrategy = state => state.viewer.sortStrategy;\n\nexport const getRotation = state => state.viewer.rotation;\n\nexport const getNoteDateFormat = state => state.viewer.noteDateFormat || defaultNoteDateFormat;\n\nexport const getPrintedNoteDateFormat = state => state.viewer.printedNoteDateFormat || defaultPrintedNoteDateFormat;\n\nexport const isFullScreen = state => state.viewer.isFullScreen;\n\nexport const doesDocumentAutoLoad = state => state.viewer.doesAutoLoad;\n\nexport const isDocumentReadOnly = state => state.viewer.isReadOnly;\n\nexport const getCustomPanels = state => state.viewer.customPanels;\n\nexport const getCustomModals = state => state.viewer.customModals;\n\nexport const getPageLabels = state => state.viewer.pageLabels;\n\nexport const getSelectedThumbnailPageIndexes = state => state.viewer.selectedThumbnailPageIndexes;\n\nexport const getShiftKeyThumbnailPivotIndex = state => state.viewer.shiftKeyThumbnailPivotIndex;\n\nexport const getDisabledCustomPanelTabs = state =>\n  state.viewer.customPanels.reduce((disabledTabs, { tab }) => {\n    if (state.viewer.disabledElements[tab.dataElement]?.disabled) {\n      disabledTabs.push(tab.dataElement);\n    }\n    return disabledTabs;\n  }, []);\n\nexport const isEmbedPrintSupported = state => isChrome && !isAndroid && state.viewer.useEmbeddedPrint;\n\nexport const isOutlineControlVisible = state => state.viewer.outlineControlVisibility;\n\nexport const getColorMap = state => state.viewer.colorMap;\n\nexport const getCursorOverlayData = state => state.viewer.cursorOverlay;\n\nexport const getOpenElements = state => state.viewer.openElements;\n\nexport const getDisabledElements = state => state.viewer.disabledElements;\n\nexport const getCurrentPalette = (state, colorMapKey) => state.viewer.colorMap[colorMapKey]?.currentPalette;\n\nexport const getIconColor = (state, colorMapKey) => state.viewer.colorMap[colorMapKey]?.iconColor;\n\nexport const getCustomNoteFilter = state => state.viewer.customNoteFilter;\n\nexport const getIsReplyDisabled = state => state.viewer.isReplyDisabledFunc;\n\nexport const getZoomList = state => state.viewer.zoomList;\n\nexport const getMeasurementUnits = state => state.viewer.measurementUnits;\n\nexport const getIsNoteEditing = state => state.viewer.isNoteEditing;\n\nexport const getMaxSignaturesCount = state => state.viewer.maxSignaturesCount;\n\nexport const getUserData = state => state.viewer.userData;\n\nexport const getIsMentionEnabled = state => !!state.viewer.userData;\n\nexport const getSignatureFonts = state => state.viewer.signatureFonts;\n\nexport const getSelectedTab = (state, id) => state.viewer.tab[id];\n\nexport const getCustomElementOverrides = (state, dataElement = '') => state.viewer.customElementOverrides[dataElement];\n\nexport const getPopupItems = (state, popupDataElement) => state.viewer[popupDataElement] || [];\n\nexport const getMenuOverlayItems = state => state.viewer.menuOverlay;\n\nexport const getIsThumbnailMergingEnabled = state => state.viewer.isThumbnailMerging;\n\nexport const getIsThumbnailReorderingEnabled = state => state.viewer.isThumbnailReordering;\n\nexport const isThumbnailMultiselectEnabled = state => state.viewer.isThumbnailMultiselect;\n\nexport const getIsMultipleViewerMerging = state => state.viewer.isMultipleViewerMerging;\n\nexport const getEnableNotesPanelVirtualizedList = state => state.viewer.enableNotesPanelVirtualizedList;\n\nexport const notesShowLastUpdatedDate = state => state.viewer.notesShowLastUpdatedDate;\n\nexport const getAllowPageNavigation = state => state.viewer.allowPageNavigation;\n\nexport const getCustomMeasurementOverlay = state => state.viewer.customMeasurementOverlay;\n\nexport const getAnnotationContentOverlayHandler = state => state.viewer.annotationContentOverlayHandler;\n\nexport const getEnableMouseWheelZoom = state => state.viewer.enableMouseWheelZoom;\n\nexport const isReaderMode = state => state.viewer.isReaderMode;\n\nexport const getCertificates = state => state.viewer.certificates;\n\nexport const getTrustLists = state => state.viewer.trustLists;\n\nexport const getValidationModalWidgetName = state => state.viewer.validationModalWidgetName;\n\nexport const getVerificationResult = (state, fieldName) => state.viewer.verificationResult[fieldName] || {};\n\nexport const isThumbnailSelectingPages = state => state.viewer.thumbnailSelectingPages;\n\nexport const getWatermarkModalOptions = state => state.viewer.watermarkModalOptions;\n\nexport const getZoomStepFactors = state => state.viewer.zoomStepFactors;\n\n// warning message\nexport const getWarningMessage = state => state.viewer.warning?.message || '';\n\nexport const getWarningTitle = state => state.viewer.warning?.title || '';\n\nexport const getWarningConfirmEvent = state => state.viewer.warning?.onConfirm;\n\nexport const getWarningConfirmBtnText = state => state.viewer.warning?.confirmBtnText;\n\nexport const getWarningSecondaryEvent = state => state.viewer.warning?.onSecondary;\n\nexport const getWarningSecondaryBtnText = state => state.viewer.warning?.secondaryBtnText;\n\nexport const getWarningCancelEvent = state => state.viewer.warning?.onCancel;\n\nexport const isAccessibleMode = state => state.viewer.isAccessibleMode;\n\n// error message\nexport const getErrorMessage = state => state.viewer.errorMessage || '';\n\n// document\nexport const getPasswordAttempts = state => state.document.passwordAttempts;\n\nexport const getPrintQuality = state => state.document.printQuality;\n\nexport const getDefaultPrintOptions = state => state.document.defaultPrintOptions;\n\nexport const getTotalPages = state => state.document.totalPages;\n\nexport const getOutlines = state => state.document.outlines;\n\nexport const getIsOutlineEditing = state => state.viewer.isOutlineEditing;\n\nexport const getBookmarks = state => state.document.bookmarks;\n\nexport const getLayers = state => state.document.layers;\n\nexport const getLoadingProgress = state => state.document.loadingProgress;\n\n// user\nexport const getUserName = state => state.user.name;\n\n// advanced\nexport const getServerUrl = state => state.advanced.serverUrl;\n\n// search\nexport const getSearchValue = state => state.search.value;\n\nexport const shouldClearSearchPanelOnClose = state => state.search.clearSearchPanelOnClose;\n\nexport const isCaseSensitive = state => state.search.isCaseSensitive;\n\nexport const isWholeWord = state => state.search.isWholeWord;\n\nexport const isWildcard = state => state.search.isWildcard;\n\nexport const isSearchUp = state => state.search.isSearchUp;\n\nexport const isAmbientString = state => state.search.isAmbientString;\n\nexport const isRegex = state => state.search.isRegex;\n\nexport const isProcessingSearchResults = state => state.search.isProcessingSearchResults;\n\nexport const getRedactionSearchPatterns = state => state.search.redactionSearchPatterns;\n\nexport const getNoteTransformFunction = state => state.viewer.noteTransformFunction;\n\nexport const getCustomNoteSelectionFunction = state => state.viewer.customNoteFunction;\n\nexport const getCustomApplyRedactionsHandler = state => state.viewer.customApplyRedactionsHandler;\n\nexport const isSnapModeEnabled = state => state.viewer.isSnapModeEnabled;\n\nexport const getUnreadAnnotationIdSet = state => state.viewer.unreadAnnotationIdSet;\n\nexport const getCurrentLanguage = state => state.viewer.currentLanguage;\n\nexport const shouldFadePageNavigationComponent = state => state.viewer.fadePageNavigationComponent;\n\nexport const isContentEditWarningHidden = state => state.viewer.hideContentEditWarning;\n\nexport const getCurrentContentBeingEdited = state => state.viewer.currentContentBeingEdited;\n\nexport const getFeatureFlags = state => state.featureFlags;\n\nexport const isInDesktopOnlyMode = state => state.viewer.isInDesktopOnlyMode;\n\nexport const pageDeletionConfirmationModalEnabled = state => state.viewer.pageDeletionConfirmationModalEnabled;\n\nexport const getPageReplacementFileList = state => state.viewer.pageReplacementFileList;\n\nexport const getPageManipulationOverlayItems = state => state.viewer.pageManipulationOverlay;\n\nexport const getThumbnailControlMenuItems = state => state.viewer.thumbnailControlMenu;\n\nexport const shouldShowPresets = state => {\n  const response = state.viewer.toolButtonObjects[state.viewer.activeToolName];\n  return response?.showPresets ?? true;\n};\n\nexport const shouldResetAudioPlaybackPosition = state => state.viewer.shouldResetAudioPlaybackPosition;\n\nexport const getActiveSoundAnnotation = state => state.viewer.activeSoundAnnotation;\n\nexport const getWv3dPropertiesPanelModelData = state => state.wv3dPropertiesPanel.modelData;\n\nexport const getWv3dPropertiesPanelSchema = state => state.wv3dPropertiesPanel.schema;\n\nexport const getAnnotationFilters = state => state.viewer.annotationFilters;\n","export const defaultNoteDateFormat = 'MMM D, LT';\nexport const defaultPrintedNoteDateFormat = 'L LTS';","import * as exposedSelectors from './exposedSelectors';\n\nexport default exposedSelectors;","import selectors from 'selectors';\n\nexport default (state, dataElements, priority) =>\n  dataElements.reduce((filteredDataElements, dataElement) => {\n    const currentPriority = selectors.getDisabledElementPriority(\n      state,\n      dataElement,\n    );\n\n    if (!currentPriority || priority >= currentPriority) {\n      return [...filteredDataElements, dataElement];\n    }\n\n    return filteredDataElements;\n  }, []);\n","import getFilteredDataElements from 'helpers/getFilteredDataElements';\nimport { isAndroid, isIOS } from 'helpers/device';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\nimport selectors from 'selectors';\nimport core from 'core';\n\n// viewer\n/**\n * Remove an element from DOM\n * @ignore\n * @param {string} dataElement the value of the data-element attribute of the element\n * @param {number} priority a value that indicates how specific this element is disabled.\n * If a element is disabled with priority 3, then calling enableElement with priority 2 won't enable it back because the element is disabled in a more specific manner.\n * This priority argument is used by external APIs such as instance.disableElements and instance.disableFeatures(...)\n * For example, instance.disableElements has priority 3 and instance.enableFeatures has priority 1.\n * So calling instance.enableFeatures([instance.Feature.NotesPanel]) won't enable the notes panel if it's disabled by instance.disableElements(['notesPanel'])\n */\nexport const disableElement = (dataElement, priority) => (\n  dispatch,\n  getState,\n) => {\n  if (dataElement === 'leftPanel') {\n    dispatch(disableElements(['leftPanel', 'leftPanelButton'], priority));\n  } else if (dataElement === 'stylePopup') {\n    dispatch(\n      disableElements(['toolStylePopup', 'annotationStylePopup'], priority),\n    );\n  } else {\n    const currentPriority = selectors.getDisabledElementPriority(\n      getState(),\n      dataElement,\n    );\n    if (!currentPriority || priority >= currentPriority) {\n      dispatch({ type: 'DISABLE_ELEMENT', payload: { dataElement, priority } });\n    }\n  }\n};\nexport const disableElements = (dataElements, priority) => (\n  dispatch,\n  getState,\n) => {\n  const filteredDataElements = getFilteredDataElements(\n    getState(),\n    dataElements,\n    priority,\n  );\n  dispatch({\n    type: 'DISABLE_ELEMENTS',\n    payload: { dataElements: filteredDataElements, priority },\n  });\n};\nexport const enableElement = (dataElement, priority) => (\n  dispatch,\n  getState,\n) => {\n  if (dataElement === 'leftPanel') {\n    dispatch(enableElements(['leftPanel', 'leftPanelButton'], priority));\n  } else if (dataElement === 'stylePopup') {\n    dispatch(\n      enableElements(['toolStylePopup', 'annotationStylePopup'], priority),\n    );\n  } else {\n    const currentPriority = selectors.getDisabledElementPriority(\n      getState(),\n      dataElement,\n    );\n    if (!currentPriority || priority >= currentPriority) {\n      dispatch({ type: 'ENABLE_ELEMENT', payload: { dataElement, priority } });\n    }\n  }\n};\nexport const enableElements = (dataElements, priority) => (\n  dispatch,\n  getState,\n) => {\n  let filteredDataElements = getFilteredDataElements(\n    getState(),\n    dataElements,\n    priority,\n  );\n\n  if (!core.isCreateRedactionEnabled()) {\n    filteredDataElements = filteredDataElements.filter(\n      ele => ele !== 'redactionButton',\n    );\n  }\n\n  dispatch({\n    type: 'ENABLE_ELEMENTS',\n    payload: { dataElements: filteredDataElements, priority },\n  });\n};\nexport const setThumbnailMerging = (useThumbnailMerging = true) => ({\n  type: 'SET_THUMBNAIL_MERGING',\n  payload: { useThumbnailMerging },\n});\n\nexport const setThumbnailReordering = (useThumbnailReordering = true) => ({\n  type: 'SET_THUMBNAIL_REORDERING',\n  payload: { useThumbnailReordering },\n});\nexport const setThumbnailMultiselect = (useThumbnailMultiselect = true) => ({\n  type: 'SET_THUMBNAIL_MULTISELECT',\n  payload: { useThumbnailMultiselect },\n});\nexport const setIsMultipleViewerMerging = (isMultipleViewerMerging = false) => ({\n  type: 'SET_MULTI_VIEWER_MERGING',\n  payload: { isMultipleViewerMerging },\n});\nexport const setEnableNotesPanelVirtualizedList = (enableNotesPanelVirtualizedList = true) => ({\n  type: 'SET_ENABLE_NOTE_PANEL_VIRTUALIZED_LIST',\n  payload: { enableNotesPanelVirtualizedList },\n});\nexport const setNotesShowLastUpdatedDate = (notesShowLastUpdatedDate = false) => ({\n  type: 'SET_NOTES_SHOW_LAST_UPDATED_DATE',\n  payload: { notesShowLastUpdatedDate },\n});\nexport const setAllowPageNavigation = (allowPageNavigation = true) => ({\n  type: 'SET_ALLOW_PAGE_NAVIGATION',\n  payload: { allowPageNavigation },\n});\nexport const setLastPickedToolForGroup = (group, toolName) => ({\n  type: 'SET_LAST_PICKED_TOOL_FOR_GROUP',\n  payload: { group, toolName },\n});\nexport const setEnableToolGroupReordering = (enableToolGroupReordering = true) => ({\n  type: 'ENABLE_TOOL_GROUP_REORDERING',\n  payload: { enableToolGroupReordering },\n});\nexport const setActiveToolNameAndStyle = toolObject => (dispatch, getState) => {\n  const state = getState();\n  let name;\n\n  if (isIOS || isAndroid) {\n    name = toolObject.name;\n  } else {\n    // on desktop, auto switch between AnnotationEdit and TextSelect is true when you hover on text\n    // we do this to prevent this action from spamming the console\n    name =\n      toolObject.name === 'TextSelect' ? 'AnnotationEdit' : toolObject.name;\n  }\n\n  if (state.viewer.activeToolName === name) {\n    return;\n  }\n\n  dispatch({\n    type: 'SET_ACTIVE_TOOL_NAME_AND_STYLES',\n    payload: { toolName: name, toolStyles: toolObject.defaults || {} },\n  });\n};\nexport const setActiveToolStyles = (toolStyles = {}) => ({\n  type: 'SET_ACTIVE_TOOL_STYLES',\n  payload: { toolStyles },\n});\nexport const setCustomColor = (customColor = {}) => ({\n  type: 'SET_CUSTOM_COLOR',\n  payload: { customColor },\n});\nexport const setCustomColors = (customColors = []) => ({\n  type: 'SET_CUSTOM_COLORS',\n  payload: { customColors },\n});\nexport const setActiveToolGroup = toolGroup => (dispatch, getState) => {\n  const currentActiveToolGroup = selectors.getActiveToolGroup(getState());\n  const toolbarGroup = selectors.getCurrentToolbarGroup(getState());\n\n  if (currentActiveToolGroup === toolGroup) {\n    return;\n  }\n\n  dispatch({\n    type: 'SET_ACTIVE_TOOL_GROUP',\n    payload: { toolGroup, toolbarGroup },\n  });\n};\nexport const setNotePopupId = id => ({\n  type: 'SET_NOTE_POPUP_ID',\n  payload: { id },\n});\nexport const triggerNoteEditing = () => ({\n  type: 'SET_NOTE_EDITING',\n  payload: { isNoteEditing: true },\n});\nexport const finishNoteEditing = () => ({\n  type: 'SET_NOTE_EDITING',\n  payload: { isNoteEditing: false },\n});\nexport const setFitMode = fitMode => ({\n  type: 'SET_FIT_MODE',\n  payload: { fitMode },\n});\nexport const setZoom = zoom => ({ type: 'SET_ZOOM', payload: { zoom } });\nexport const setRotation = rotation => ({\n  type: 'SET_ROTATION',\n  payload: { rotation },\n});\nexport const setDisplayMode = displayMode => ({\n  type: 'SET_DISPLAY_MODE',\n  payload: { displayMode },\n});\nexport const setCurrentPage = currentPage => ({\n  type: 'SET_CURRENT_PAGE',\n  payload: { currentPage },\n});\nexport const setFullScreen = isFullScreen => ({\n  type: 'SET_FULL_SCREEN',\n  payload: { isFullScreen },\n});\nexport const setReadOnly = isReadOnly => ({\n  type: 'SET_READ_ONLY',\n  payload: { isReadOnly },\n});\nexport const registerTool = tool => ({\n  type: 'REGISTER_TOOL',\n  payload: { ...tool },\n});\nexport const unregisterTool = toolName => ({\n  type: 'UNREGISTER_TOOL',\n  payload: { toolName },\n});\nexport const setToolButtonObjects = toolButtonObjects => ({\n  type: 'SET_TOOL_BUTTON_OBJECTS',\n  payload: { toolButtonObjects },\n});\nexport const setHeaderItems = (header, headerItems) => ({\n  type: 'SET_HEADER_ITEMS',\n  payload: { header, headerItems },\n});\nexport const setPopupItems = (dataElement, items) => ({\n  type: 'SET_POPUP_ITEMS',\n  payload: {\n    dataElement,\n    items,\n  },\n});\nexport const setMenuOverlayItems = items => ({\n  type: 'SET_MENUOVERLAY_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setColorPalette = (colorMapKey, colorPalette) => ({\n  type: 'SET_COLOR_PALETTE',\n  payload: { colorMapKey, colorPalette },\n});\nexport const setActivePalette = (colorMapKey, colorPalette) => ({\n  type: 'SET_ACTIVE_PALETTE',\n  payload: { colorMapKey, colorPalette },\n});\nexport const setIconColor = (colorMapKey, color) => ({\n  type: 'SET_ICON_COLOR',\n  payload: { colorMapKey, color },\n});\nexport const setColorMap = colorMap => ({\n  type: 'SET_COLOR_MAP',\n  payload: { colorMap },\n});\nexport const setLeftPanelWidth = width => ({\n  type: 'SET_LEFT_PANEL_WIDTH',\n  payload: { width },\n});\nexport const disableReplyForAnnotations = func => ({\n  type: 'SET_REPLY_DISABLED_FUNC',\n  payload: { func },\n});\nexport const setMouseWheelZoom = (enableMouseWheelZoom = true) => ({\n  type: 'SET_MOUSE_WHEEL_ZOOM',\n  payload: { enableMouseWheelZoom },\n});\nexport const setReaderMode = isReaderMode => ({\n  type: 'SET_READER_MODE',\n  payload: { isReaderMode },\n});\nexport const setThumbnailSelectingPages = (isSelecting = true) => ({\n  type: 'SET_THUMBNAIL_PAGE_SELECT',\n  payload: { isSelecting },\n});\nexport const setPageManipulationOverlayItems = items => ({\n  type: 'SET_PAGE_MANIPULATION_OVERLAY_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setThumbnailControlMenuItems = items => ({\n  type: 'SET_THUMBNAIL_CONTROL_MENU_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setTabManager = TabManager => ({\n  type: 'SET_TAB_MANAGER',\n  payload: { TabManager },\n});\nexport const setMultiTab = (isMultiTab = true) => ({\n  type: 'SET_IS_MULTI_TAB',\n  payload: { isMultiTab },\n});\nexport const setTabs = tabs => ({\n  type: 'SET_TABS',\n  payload: { tabs },\n});\nexport const setActiveTab = activeTab => ({\n  type: 'SET_ACTIVE_TAB',\n  payload: { activeTab },\n});\nexport const setFonts = (fonts = []) => ({\n  type: \"SET_FONTS\",\n  payload: { fonts },\n});\n\n// document\nexport const setTotalPages = totalPages => ({\n  type: 'SET_TOTAL_PAGES',\n  payload: { totalPages },\n});\nexport const setOutlines = outlines => ({\n  type: 'SET_OUTLINES',\n  payload: { outlines },\n});\nexport const setIsOutlineEditing = (isOutlineEditing = true) => ({\n  type: 'SET_OUTLINE_EDITING',\n  payload: { isOutlineEditing },\n});\nexport const setBookmarks = bookmarks => ({\n  type: 'SET_BOOKMARKS',\n  payload: { bookmarks },\n});\nexport const addBookmark = (pageIndex, text) => (dispatch, getState) => {\n  dispatch({\n    type: 'ADD_BOOKMARK',\n    payload: { pageIndex, text },\n  });\n\n  const bookmarks = selectors.getBookmarks(getState());\n  fireEvent(Events.USER_BOOKMARKS_CHANGED, bookmarks);\n};\nexport const editBookmark = (pageIndex, text) => (dispatch, getState) => {\n  dispatch({\n    type: 'EDIT_BOOKMARK',\n    payload: { pageIndex, text },\n  });\n  const bookmarks = selectors.getBookmarks(getState());\n  fireEvent(Events.USER_BOOKMARKS_CHANGED, bookmarks);\n};\nexport const removeBookmark = pageIndex => (dispatch, getState) => {\n  dispatch({\n    type: 'REMOVE_BOOKMARK',\n    payload: { pageIndex },\n  });\n  const bookmarks = selectors.getBookmarks(getState());\n  fireEvent(Events.USER_BOOKMARKS_CHANGED, bookmarks);\n};\nexport const setLayers = layers => ({\n  type: 'SET_LAYERS',\n  payload: { layers },\n});\nexport const setPasswordAttempts = attempt => ({\n  type: 'SET_PASSWORD_ATTEMPTS',\n  payload: { attempt },\n});\nexport const setPrintQuality = quality => ({\n  type: 'SET_PRINT_QUALITY',\n  payload: { quality },\n});\nexport const setDefaultPrintOptions = options => ({\n  type: 'SET_DEFAULT_PRINT_OPTIONS',\n  payload: { options },\n});\nexport const setLoadingProgress = percent => ({\n  type: 'SET_LOADING_PROGRESS',\n  payload: { progress: percent },\n});\nexport const resetLoadingProgress = () => ({\n  type: 'SET_LOADING_PROGRESS',\n  payload: { progress: 0 },\n});\nexport const setVerificationResult = result => ({\n  type: 'SET_VERIFICATION_RESULT',\n  payload: { result },\n});\n\n// user\nexport const setUserName = userName => ({\n  type: 'SET_USER_NAME',\n  payload: { userName },\n});\nexport const setAdminUser = isAdminUser => ({\n  type: 'SET_ADMIN_USER',\n  payload: { isAdminUser },\n});\n\n// search\nexport const searchText = (searchValue, options) => ({\n  type: 'SEARCH_TEXT',\n  payload: { searchValue, options },\n});\nexport const searchTextFull = (searchValue, options) => ({\n  type: 'SEARCH_TEXT_FULL',\n  payload: { searchValue, options },\n});\nexport const addSearchListener = func => ({\n  type: 'ADD_SEARCH_LISTENER',\n  payload: { func },\n});\nexport const removeSearchListener = func => ({\n  type: 'REMOVE_SEARCH_LISTENER',\n  payload: { func },\n});\nexport const setSearchValue = value => ({\n  type: 'SET_SEARCH_VALUE',\n  payload: { value },\n});\nexport const setCaseSensitive = isCaseSensitive => ({\n  type: 'SET_CASE_SENSITIVE',\n  payload: { isCaseSensitive },\n});\nexport const setWholeWord = isWholeWord => ({\n  type: 'SET_WHOLE_WORD',\n  payload: { isWholeWord },\n});\nexport const setWildcard = isWildcard => ({\n  type: 'SET_WILD_CARD',\n  payload: { isWildcard },\n});\n\nexport const resetSearch = () => ({ type: 'RESET_SEARCH', payload: {} });\n\nexport const setNoteTransformFunction = noteTransformFunction => ({\n  type: 'SET_NOTE_TRANSFORM_FUNCTION',\n  payload: { noteTransformFunction },\n});\nexport const setCustomNoteSelectionFunction = customNoteFunction => ({\n  type: 'SET_CUSTOM_NOTE_SELECTION_FUNCTION',\n  payload: { customNoteFunction },\n});\nexport const setCustomApplyRedactionsHandler = customApplyRedactionsHandler => ({\n  type: 'SET_CUSTOM_APPLY_REDACTIONS_HANDLER',\n  payload: { customApplyRedactionsHandler },\n});\n\nexport const setEnableSnapMode = enable => ({\n  type: 'SET_ENABLE_SNAP_MODE',\n  payload: { enable },\n});\n\nexport const setLanguage = language => ({\n  type: 'SET_LANGUAGE',\n  payload: { language },\n});\n\nexport const setHideContentEditWarning = hideWarning => ({\n  type: 'SET_HIDE_CONTENT_EDIT_WARNING',\n  payload: { hideWarning },\n});\n\nexport const setCurrentContentBeingEdited = ({ content, annotation }) => ({\n  type: 'SET_CURRENT_CONTENT_BEING_EDITED',\n  payload: { content, annotation },\n});\n\nexport const updateCurrentContentBeingEdited = content => ({\n  type: 'UPDATE_CURRENT_CONTENT_BEING_EDITED',\n  payload: { content },\n});\n\nexport const clearCurrentContentBeingEdited = () => ({\n  type: 'CLEAR_CURRENT_CONTENT_BEING_EDITED',\n  payload: {},\n});\n\nexport const setProcessingSearchResults = isProcessingSearchResults => ({\n  type: 'SET_PROCESSING_SEARCH_RESULTS',\n  payload: { isProcessingSearchResults },\n});\n\nexport const triggerResetAudioPlaybackPosition = shouldResetAudioPlaybackPosition => ({\n  type: 'SET_RESET_AUDIO_PLAYBACK_POSITION',\n  payload: { shouldResetAudioPlaybackPosition },\n});\n\nexport const setActiveSoundAnnotation = activeSoundAnnotation => ({\n  type: 'SET_ACTIVE_SOUND_ANNOTATION',\n  payload: { activeSoundAnnotation },\n});\n\nexport const setAnnotationFilters = annotationFilters => ({\n  type: 'SET_ANNOTATION_FILTERS',\n  payload: { annotationFilters }\n});\n","import { isIOS, isAndroid } from 'helpers/device';\n\nexport default (isIOS || isAndroid) ? 'Pan' : 'AnnotationEdit';","import core from 'core';\nimport isDataElementLeftPanel from 'helpers/isDataElementLeftPanel';\nimport fireEvent from 'helpers/fireEvent';\nimport { getMaxZoomLevel, getMinZoomLevel } from 'constants/zoomFactors';\nimport { disableElements, enableElements } from 'actions/internalActions';\nimport defaultTool from 'constants/defaultTool';\nimport { PRIORITY_TWO } from 'constants/actionPriority';\nimport Events from 'constants/events';\n\nexport const setPresetCropDimensions = presetCropDimensions => ({\n  type: 'SET_PRESET_CROP_DIMENSIONS',\n  payload: { presetCropDimensions },\n});\n\nexport const setDateTimeFormats = dateTimeFormats => ({\n  type: 'SET_DATE_TIME_FORMATS',\n  payload: { dateTimeFormats },\n});\n\nexport const setEnableDesktopOnlyMode = enableDesktopOnlyMode => ({\n  type: 'SET_ENABLE_DESKTOP_ONLY_MODE',\n  payload: { enableDesktopOnlyMode },\n});\n\nexport const setHighContrastMode = useHighContrastMode => ({\n  type: 'SET_HIGH_CONTRAST_MODE',\n  payload: { useHighContrastMode },\n});\n\nexport const setCanUndo = canUndo => ({\n  type: 'SET_CAN_UNDO',\n  payload: { canUndo },\n});\n\nexport const setCanRedo = canRedo => ({\n  type: 'SET_CAN_REDO',\n  payload: { canRedo },\n});\n\nexport const setStandardStamps = t => async dispatch => {\n  const rubberStampTool = core.getTool('AnnotationCreateRubberStamp');\n  const canvasWidth = 160;\n  const canvasHeight = 58;\n\n  const annotations = await rubberStampTool.getStandardStampAnnotations();\n  const previews = await Promise.all(\n    annotations.map(annotation => {\n      const text = t(`rubberStamp.${annotation['Icon']}`);\n\n      const options = {\n        canvasWidth,\n        canvasHeight,\n        text,\n      };\n\n      return rubberStampTool.getPreview(annotation, options);\n    }),\n  );\n\n  const standardStamps = annotations.map((annotation, i) => ({\n    annotation,\n    imgSrc: previews[i],\n  }));\n\n  dispatch({\n    type: 'SET_STANDARD_STAMPS',\n    payload: { standardStamps },\n  });\n};\n\nexport const setCustomStamps = t => async dispatch => {\n  const rubberStampTool = core.getTool('AnnotationCreateRubberStamp');\n  const canvasWidth = 160;\n  const canvasHeight = 58;\n\n  const annotations = await rubberStampTool.getCustomStampAnnotations();\n  await Promise.all(\n    annotations.map(annotation => {\n      const text = t(`rubberStamp.${annotation['Icon']}`);\n\n      const options = {\n        canvasWidth,\n        canvasHeight,\n        text,\n      };\n\n      return rubberStampTool.getPreview(annotation, options);\n    }),\n  );\n\n  const customStamps = annotations.map(annotation => ({\n    annotation,\n    imgSrc: annotation['ImageData'],\n  }));\n\n  dispatch({\n    type: 'SET_CUSTOM_STAMPS',\n    payload: { customStamps },\n  });\n};\n\nexport const setReadOnlyRibbons = () => (dispatch, getState) => {\n  dispatch(setToolbarGroup('toolbarGroup-View'));\n  const state = getState();\n  const toolbarGroupsToDisable = Object.keys(state.viewer.headers).filter(\n    key => key.includes('toolbarGroup-') && key !== 'toolbarGroup-View',\n  );\n\n  disableElements(toolbarGroupsToDisable, PRIORITY_TWO)(dispatch, getState);\n};\n\nexport const enableRibbons = () => (dispatch, getState) => {\n  const state = getState();\n  // There can be a situation where we switch to FormBuilder mode and we get a race condition between setting\n  // the active toolbarGroup as what is in the current state and Forms, as redux hasnt dispatched the update to the Forms tool bar yet.\n  // We double check here if we are in form mode and set the correct tool bar group\n  // We enable ribbons when going into form mode, as we temporarily elevate the user's permissions\n  const isInFormFieldCreationMode = core.getFormFieldCreationManager().isInFormFieldCreationMode();\n  const toolbarGroup = isInFormFieldCreationMode ? 'toolbarGroup-Forms' : state.viewer.toolbarGroup;\n  dispatch(setToolbarGroup(toolbarGroup || 'toolbarGroup-Annotate'));\n  const toolbarGroupsToEnable = Object.keys(state.viewer.headers).filter(key => key.includes('toolbarGroup-'));\n\n  enableElements(toolbarGroupsToEnable, PRIORITY_TWO)(dispatch, getState);\n};\n\nconst isElementDisabled = (state, dataElement) => state.viewer.disabledElements[dataElement]?.disabled;\n\nexport const allButtonsInGroupDisabled = (state, toolGroup) => {\n  const dataElements = Object.values(state.viewer.toolButtonObjects)\n    .filter(({ group }) => group === toolGroup)\n    .map(({ dataElement }) => dataElement);\n\n  return dataElements.every(dataElement => isElementDisabled(state, dataElement));\n};\n\nexport const setToolbarGroup = (toolbarGroup, pickTool = true) => (dispatch, getState) => {\n  const getFirstToolGroupForToolbarGroup = (state, _toolbarGroup) => {\n    const toolGroups = state.viewer.headers[_toolbarGroup].children || state.viewer.headers[_toolbarGroup];\n    let firstToolGroupForToolbarGroup = '';\n    if (toolGroups) {\n      const firstTool = Object.values(toolGroups).find(({ toolGroup, dataElement }) => {\n        if (toolGroup && !isElementDisabled(state, dataElement) && !allButtonsInGroupDisabled(state, toolGroup)) {\n          return true;\n        }\n        return false;\n      });\n      if (firstTool) {\n        firstToolGroupForToolbarGroup = firstTool.toolGroup;\n      }\n    }\n    return firstToolGroupForToolbarGroup;\n  };\n\n  const getFirstToolNameForGroup = (state, toolGroup) => {\n    const tools = state.viewer.toolButtonObjects;\n    const firstTool = Object.keys(tools).find(key => {\n      return tools[key].group === toolGroup;\n    });\n    return firstTool;\n  };\n\n  if (toolbarGroup === 'toolbarGroup-View') {\n    dispatch(closeElements(['toolsHeader']));\n    core.setToolMode(defaultTool);\n    dispatch({\n      type: 'SET_ACTIVE_TOOL_GROUP',\n      payload: { toolGroup: '', toolbarGroup },\n    });\n  } else {\n    dispatch(openElements(['toolsHeader']));\n    const state = getState();\n    const lastPickedToolGroup =\n      state.viewer.lastPickedToolGroup[toolbarGroup] || getFirstToolGroupForToolbarGroup(state, toolbarGroup);\n    const lastPickedToolName =\n      state.viewer.lastPickedToolForGroup[lastPickedToolGroup] || getFirstToolNameForGroup(state, lastPickedToolGroup);\n    if (pickTool) {\n      dispatch({\n        type: 'SET_ACTIVE_TOOL_GROUP',\n        payload: { toolGroup: lastPickedToolGroup, toolbarGroup },\n      });\n\n      if (lastPickedToolName === 'AnnotationCreateSignature') {\n        core.setToolMode(defaultTool);\n      } else {\n        core.setToolMode(lastPickedToolName);\n      }\n    } else {\n      core.setToolMode(defaultTool);\n      dispatch({\n        type: 'SET_ACTIVE_TOOL_GROUP',\n        payload: { toolGroup: '', toolbarGroup },\n      });\n    }\n  }\n  dispatch(closeElements(['toolsOverlay', 'signatureOverlay', 'toolStylePopup']));\n  dispatch({\n    type: 'SET_TOOLBAR_GROUP',\n    payload: { toolbarGroup },\n  });\n  fireEvent(Events.TOOLBAR_GROUP_CHANGED, toolbarGroup);\n};\nexport const setSelectedStampIndex = index => ({\n  type: 'SET_SELECTED_STAMP_INDEX',\n  payload: { index },\n});\nexport const setOutlineControlVisibility = outlineControlVisibility => ({\n  type: 'SET_OUTLINE_CONTROL_VISIBILITY',\n  payload: { outlineControlVisibility },\n});\nexport const setSelectedDisplayedSignatureIndex = index => ({\n  type: 'SET_SELECTED_DISPLAYED_SIGNATURE_INDEX',\n  payload: { index },\n});\nexport const setSavedSignatures = savedSignatures => ({\n  type: 'SET_SAVED_SIGNATURES',\n  payload: { savedSignatures },\n});\nexport const setDisplayedSignaturesFilterFunction = filterFunction => ({\n  type: 'SET_DISPLAYED_SIGNATURES_FILTER_FUNCTION',\n  payload: { filterFunction },\n});\nexport const setLeftPanelWidth = width => ({\n  type: 'SET_LEFT_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setSearchPanelWidth = width => ({\n  type: 'SET_SEARCH_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setNotesPanelWidth = width => ({\n  type: 'SET_NOTES_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setRedactionPanelWidth = width => ({\n  type: 'SET_REDACTION_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setWv3dPropertiesPanelWidth = width => ({\n  type: 'SET_WV3D_PROPERTIES_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setWv3dPropertiesPanelModelData = modelData => ({\n  type: 'SET_WV3D_PROPERTIES_PANEL_MODEL_DATA',\n  payload: { modelData },\n});\nexport const setWv3dPropertiesPanelSchema = schema => ({\n  type: 'SET_WV3D_PROPERTIES_PANEL_SCHEMA',\n  payload: { schema },\n});\nexport const setDocumentContainerWidth = width => ({\n  type: 'SET_DOCUMENT_CONTAINER_WIDTH',\n  payload: { width },\n});\nexport const setDocumentContainerHeight = height => ({\n  type: 'SET_DOCUMENT_CONTAINER_HEIGHT',\n  payload: { height },\n});\n\nexport const enableAllElements = () => ({\n  type: 'ENABLE_ALL_ELEMENTS',\n  payload: {},\n});\nexport const openElement = dataElement => (dispatch, getState) => {\n  const state = getState();\n\n  const isElementDisabled = state.viewer.disabledElements[dataElement]?.disabled;\n  const isLeftPanelOpen = state.viewer.openElements['leftPanel'];\n  const isElementOpen = isDataElementLeftPanel(dataElement, state)\n    ? isLeftPanelOpen && state.viewer.activeLeftPanel === dataElement\n    : state.viewer.openElements[dataElement];\n\n  if (isElementDisabled || isElementOpen) {\n    return;\n  }\n\n  if (isDataElementLeftPanel(dataElement, state)) {\n    if (!isLeftPanelOpen) {\n      dispatch({ type: 'OPEN_ELEMENT', payload: { dataElement: 'leftPanel' } });\n      fireEvent(Events.VISIBILITY_CHANGED, { element: 'leftPanel', isVisible: true });\n    }\n    dispatch(setActiveLeftPanel(dataElement));\n  } else {\n    dispatch({ type: 'OPEN_ELEMENT', payload: { dataElement } });\n    fireEvent(Events.VISIBILITY_CHANGED, { element: dataElement, isVisible: true });\n\n    if (dataElement === 'leftPanel' && !isLeftPanelOpen) {\n      fireEvent(Events.VISIBILITY_CHANGED, {\n        element: state.viewer.activeLeftPanel,\n        isVisible: true,\n      });\n    }\n  }\n};\nexport const openElements = dataElements => dispatch => {\n  if (typeof dataElements === 'string') {\n    dispatch(openElement(dataElements));\n  } else {\n    dataElements.forEach(dataElement => {\n      dispatch(openElement(dataElement));\n    });\n  }\n};\nexport const closeElement = dataElement => (dispatch, getState) => {\n  const state = getState();\n\n  const isElementDisabled = state.viewer.disabledElements[dataElement]?.disabled;\n  const isElementClosed = isDataElementLeftPanel(dataElement, state)\n    ? state.viewer.activeLeftPanel !== dataElement\n    : !state.viewer.openElements[dataElement];\n\n  if (isElementDisabled || isElementClosed) {\n    return;\n  }\n\n  if (isDataElementLeftPanel(dataElement, state) && state.viewer.openElements['leftPanel']) {\n    dispatch({ type: 'CLOSE_ELEMENT', payload: { dataElement: 'leftPanel' } });\n    fireEvent(Events.VISIBILITY_CHANGED, { element: 'leftPanel', isVisible: false });\n  } else {\n    dispatch({ type: 'CLOSE_ELEMENT', payload: { dataElement } });\n    fireEvent(Events.VISIBILITY_CHANGED, { element: dataElement, isVisible: false });\n\n    if (dataElement === 'leftPanel' && state.viewer.openElements['leftPanel']) {\n      fireEvent(Events.VISIBILITY_CHANGED, {\n        element: state.viewer.activeLeftPanel,\n        isVisible: false,\n      });\n    }\n  }\n};\nexport const closeElements = dataElements => dispatch => {\n  if (typeof dataElements === 'string') {\n    dispatch(closeElement(dataElements));\n  } else {\n    dataElements.forEach(dataElement => {\n      dispatch(closeElement(dataElement));\n    });\n  }\n};\n\nexport const toggleElement = dataElement => (dispatch, getState) => {\n  const state = getState();\n\n  if (state.viewer.disabledElements[dataElement]?.disabled) {\n    return;\n  }\n\n  // hack for new ui\n  if (!state.viewer.notesInLeftPanel) {\n    if (dataElement === 'searchPanel') {\n      dispatch(closeElement('notesPanel'));\n      dispatch(closeElement('redactionPanel'));\n      dispatch(closeElement('wv3dPropertiesPanel'));\n    } else if (dataElement === 'notesPanel') {\n      dispatch(closeElement('searchPanel'));\n      dispatch(closeElement('redactionPanel'));\n      dispatch(closeElement('wv3dPropertiesPanel'));\n    } else if (dataElement === 'redactionPanel') {\n      dispatch(closeElement('searchPanel'));\n      dispatch(closeElement('notesPanel'));\n      dispatch(closeElement('wv3dPropertiesPanel'));\n    } else if (dataElement === 'wv3dPropertiesPanel') {\n      dispatch(closeElement('searchPanel'));\n      dispatch(closeElement('notesPanel'));\n      dispatch(closeElement('redactionPanel'));\n    }\n  }\n\n  if (state.viewer.openElements[dataElement]) {\n    dispatch(closeElement(dataElement));\n  } else {\n    dispatch(openElement(dataElement));\n  }\n};\n\nexport const addCustomModal = modalOptions => ({\n  type: 'ADD_CUSTOM_MODAL',\n  payload: modalOptions,\n});\n\nexport const setActiveHeaderGroup = headerGroup => ({\n  type: 'SET_ACTIVE_HEADER_GROUP',\n  payload: { headerGroup },\n});\nexport const setActiveLeftPanel = dataElement => (dispatch, getState) => {\n  const state = getState();\n\n  if (isDataElementLeftPanel(dataElement, state)) {\n    if (state.viewer.activeLeftPanel !== dataElement) {\n      dispatch({\n        type: 'CLOSE_ELEMENT',\n        payload: { dataElement: state.viewer.activeLeftPanel },\n      });\n      fireEvent(Events.VISIBILITY_CHANGED, {\n        element: state.viewer.activeLeftPanel,\n        isVisible: false,\n      });\n      dispatch({ type: 'SET_ACTIVE_LEFT_PANEL', payload: { dataElement } });\n      fireEvent(Events.VISIBILITY_CHANGED, { element: dataElement, isVisible: true });\n    }\n  } else {\n    const panelDataElements = [\n      ...state.viewer.customPanels.map(({ panel }) => panel.dataElement),\n      'thumbnailsPanel',\n      'outlinesPanel',\n      'layersPanel',\n      'bookmarksPanel',\n      'notesPanel',\n      'signaturePanel',\n      'attachmentPanel',\n    ].join(', ');\n    console.warn(\n      `${dataElement} is not recognized by the left panel. Please use one of the following options: ${panelDataElements}`,\n    );\n  }\n};\nexport const setNotesPanelSortStrategy = sortStrategy => ({\n  type: 'SET_NOTES_PANEL_SORT_STRATEGY',\n  payload: { sortStrategy },\n});\nexport const setSortNotesBy = sortStrategy => {\n  console.warn('setSortNotesBy is deprecated, please use setNotesPanelSortStrategy instead');\n\n  return setNotesPanelSortStrategy(sortStrategy);\n};\nexport const setNoteDateFormat = noteDateFormat => ({\n  type: 'SET_NOTE_DATE_FORMAT',\n  payload: { noteDateFormat },\n});\nexport const setPrintedNoteDateFormat = noteDateFormat => ({\n  type: 'SET_PRINTED_NOTE_DATE_FORMAT',\n  payload: { noteDateFormat },\n});\nexport const setCustomPanel = newPanel => ({\n  type: 'SET_CUSTOM_PANEL',\n  payload: { newPanel },\n});\nexport const setPageLabels = pageLabels => dispatch => {\n  if (pageLabels.length !== core.getTotalPages()) {\n    console.warn('Number of page labels do not match with the total pages.');\n    return;\n  }\n  dispatch({\n    type: 'SET_PAGE_LABELS',\n    payload: { pageLabels: pageLabels.map(String) },\n  });\n};\nexport const setSelectedPageThumbnails = (selectedThumbnailPageIndexes = []) => {\n  fireEvent(Events.SELECTED_THUMBNAIL_CHANGED, selectedThumbnailPageIndexes);\n\n  return {\n    type: 'SET_SELECTED_THUMBNAIL_PAGE_INDEXES',\n    payload: { selectedThumbnailPageIndexes },\n  };\n};\nexport const setShiftKeyThumbnailsPivotIndex = (shiftKeyThumbnailPivotIndex = null) => ({\n  type: 'SET_SHIFT_KEY_THUMBNAIL_PIVOT_INDEX',\n  payload: { shiftKeyThumbnailPivotIndex },\n});\nexport const setSwipeOrientation = swipeOrientation => ({\n  type: 'SET_SWIPE_ORIENTATION',\n  payload: { swipeOrientation },\n});\nexport const showWarningMessage = options => dispatch => {\n  dispatch({ type: 'SET_WARNING_MESSAGE', payload: options });\n  dispatch(openElement('warningModal'));\n};\nexport const showErrorMessage = message => dispatch => {\n  dispatch({ type: 'SET_ERROR_MESSAGE', payload: { message } });\n  dispatch(openElement('errorModal'));\n};\nexport const setCustomNoteFilter = filterFunc => ({\n  type: 'SET_CUSTOM_NOTE_FILTER',\n  payload: { customNoteFilter: filterFunc },\n});\nexport const setZoomList = zoomList => dispatch => {\n  const minZoomLevel = getMinZoomLevel();\n  const maxZoomLevel = getMaxZoomLevel();\n  const filteredZoomList = zoomList.filter(zoom => zoom >= minZoomLevel && zoom <= maxZoomLevel);\n\n  if (filteredZoomList.length !== zoomList.length) {\n    const outOfRangeZooms = zoomList.filter(zoom => !filteredZoomList.includes(zoom));\n    console.warn(`\n      ${outOfRangeZooms.join(', ')} are not allowed zoom levels in the UI.\n      Valid zoom levels should be in the range of ${minZoomLevel}-${maxZoomLevel}.\n      You can use setMinZoomLevel or setMaxZoomLevel APIs to change the range.\n      See https://www.pdftron.com/documentation/web/guides/ui/apis for more information.\n    `);\n  }\n\n  dispatch({ type: 'SET_ZOOM_LIST', payload: { zoomList: filteredZoomList } });\n};\nexport const useEmbeddedPrint = (useEmbeddedPrint = true) => ({\n  type: 'USE_EMBEDDED_PRINT',\n  payload: { useEmbeddedPrint },\n});\nexport const setMaxSignaturesCount = maxSignaturesCount => ({\n  type: 'SET_MAX_SIGNATURES_COUNT',\n  payload: { maxSignaturesCount },\n});\nexport const setUserData = userData => ({\n  type: 'SET_USER_DATA',\n  payload: { userData },\n});\nexport const setCustomMeasurementOverlay = customMeasurementOverlay => ({\n  type: 'SET_CUSTOM_MEASUREMENT_OVERLAY',\n  payload: { customMeasurementOverlay },\n});\nexport const setSelectedTab = (id, dataElement) => ({\n  type: 'SET_SELECTED_TAB',\n  payload: { id, dataElement },\n});\nexport const setCustomElementOverrides = (dataElement, overrides) => ({\n  type: 'SET_CUSTOM_ELEMENT_OVERRIDES',\n  payload: { dataElement, overrides },\n});\nexport const setPageReplacementModalFileList = list => ({\n  type: 'SET_PAGE_REPLACEMENT_FILE_LIST',\n  payload: { list },\n});\nexport const setActiveTheme = theme => {\n  fireEvent(Events.THEME_CHANGED, theme);\n\n  return {\n    type: 'SET_ACTIVE_THEME',\n    payload: { theme },\n  };\n};\nexport const setSearchResults = searchResults => ({\n  type: 'SET_SEARCH_RESULTS',\n  payload: searchResults,\n});\n\nexport const setClearSearchOnPanelClose = shouldClear => ({\n  type: 'SET_CLEAR_SEARCH_ON_PANEL_CLOSE',\n  payload: shouldClear,\n});\n\nexport const setAnnotationContentOverlayHandler = annotationContentOverlayHandler => ({\n  type: 'SET_ANNOTATION_CONTENT_OVERLAY_HANDLER',\n  payload: { annotationContentOverlayHandler },\n});\n\nexport const setAnnotationReadState = ({ isRead, annotationId }) => ({\n  type: 'SET_ANNOTATION_READ_STATE',\n  payload: { isRead, annotationId },\n});\nexport const addTrustedCertificates = certificates => ({\n  type: 'ADD_TRUSTED_CERTIFICATES',\n  payload: { certificates },\n});\nexport const addTrustList = trustList => ({\n  type: 'ADD_TRUST_LIST',\n  payload: { trustList },\n});\nexport const setSignatureValidationModalWidgetName = widgetName => ({\n  type: 'SET_VALIDATION_MODAL_WIDGET_NAME',\n  payload: { validationModalWidgetName: widgetName },\n});\n\nexport const setNoteSubmissionEnabledWithEnter = enableNoteSubmissionWithEnter => ({\n  type: 'SET_SUBMIT_COMMENT_MODE',\n  payload: { enableNoteSubmissionWithEnter },\n});\n\nexport const setNotesPanelTextCollapsing = enableNotesPanelTextCollapsing => ({\n  type: 'SET_NOTES_PANEL_TEXT_COLLAPSING',\n  payload: { enableNotesPanelTextCollapsing },\n});\n\nexport const setNotesPanelRepliesCollapsing = enableNotesPanelRepliesCollapsing => ({\n  type: 'SET_NOTES_PANEL_REPLIES_COLLAPSING',\n  payload: { enableNotesPanelRepliesCollapsing },\n});\n\nexport const setCommentThreadExpansion = enableCommentThreadExpansion => ({\n  type: 'SET_COMMENT_THREAD_EXPANSION',\n  payload: { enableCommentThreadExpansion },\n});\n\nexport const enableFadePageNavigationComponent = () => ({\n  type: 'SET_FADE_PAGE_NAVIGATION_COMPONENT',\n  payload: { fadePageNavigationComponent: true },\n});\n\nexport const disableFadePageNavigationComponent = () => ({\n  type: 'SET_FADE_PAGE_NAVIGATION_COMPONENT',\n  payload: { fadePageNavigationComponent: false },\n});\n\nexport const enablePageDeletionConfirmationModal = () => ({\n  type: 'PAGE_DELETION_CONFIRMATION_MODAL_POPUP',\n  payload: { pageDeletionConfirmationModalEnabled: true },\n});\n\nexport const disablePageDeletionConfirmationModal = () => ({\n  type: 'PAGE_DELETION_CONFIRMATION_MODAL_POPUP',\n  payload: { pageDeletionConfirmationModalEnabled: false },\n});\n\nexport const setWatermarkModalOptions = watermarkModalOptions => ({\n  type: 'SET_WATERMARK_MODAL_OPTIONS',\n  payload: { watermarkModalOptions },\n});\n\nexport const replaceRedactionSearchPattern = (searchPattern, regex) => ({\n  type: 'REPLACE_REDACTION_SEARCH_PATTERN',\n  payload: { searchPattern, regex },\n});\n\nexport const setThumbnailSelectionMode = thumbnailSelectionMode => ({\n  type: 'SET_THUMBNAIL_SELECTION_MODE',\n  payload: { thumbnailSelectionMode },\n});\n\nexport const addRedactionSearchPattern = searchPattern => ({\n  type: 'ADD_REDACTION_SEARCH_PATTERN',\n  payload: { searchPattern },\n});\n\nexport const removeRedactionSearchPattern = searchPatternType => ({\n  type: 'REMOVE_REDACTION_SEARCH_PATTERN',\n  payload: { searchPatternType },\n});\n\nexport const setZoomStepFactors = zoomStepFactors => ({\n  type: 'SET_ZOOM_STEP_FACTORS',\n  payload: { zoomStepFactors },\n});\n","export const PRIORITY_THREE = 3;\nexport const PRIORITY_TWO = 2;\nexport const PRIORITY_ONE = 1;","import * as exposedActions from './exposedActions';\nimport * as internalActions from './internalActions';\n\nexport default { ...exposedActions, ...internalActions };","import React, { useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport './Accessibility.scss';\nimport classNames from 'classnames';\nimport actions from 'actions';\n\nfunction Accessibility() {\n  const dispatch = useDispatch();\n  const [isVisible, setIsVisible] = useState(false);\n\n  const isAccessibleMode = useSelector(selectors.isAccessibleMode);\n\n  const isNotesPanelOpen = useSelector(state => selectors.isElementOpen(state, 'notesPanel'));\n  const isNotesPanelDisabled = useSelector(state => selectors.isElementDisabled(state, 'notesPanel'));\n\n  const isSearchPanelOpen = useSelector(state => selectors.isElementOpen(state, 'searchPanel'));\n  const isSearchPanelDisabled = useSelector(state => selectors.isElementDisabled(state, 'searchPanel'));\n\n  const onFocus = () => setIsVisible(true);\n  const onBlur = () => setIsVisible(false);\n\n  const onSkipToDocument = () => {\n    document.getElementById('pageText1').focus();\n  };\n\n  const onSkipToSearch = () => {\n    if (isSearchPanelOpen) {\n      const searchEl = document.getElementById('SearchPanel__input');\n      searchEl && searchEl.focus();\n    } else {\n      dispatch(actions.openElement('searchPanel'));\n    }\n  };\n\n  const onSkipToNotes = () => {\n    if (isNotesPanelOpen) {\n      const noteEl = document.getElementById('NotesPanel__input');\n      noteEl && noteEl.focus();\n    } else {\n      dispatch(actions.openElement('notesPanel'));\n    }\n  };\n\n  if (!isAccessibleMode) {\n    return null;\n  }\n\n  const a11yClass = classNames('Accessibility', isVisible ? 'visible' : 'hidden');\n\n  return (\n    <div className={a11yClass} data-element=\"accessibility\" onFocus={onFocus} onBlur={onBlur}>\n      <div>Skip to: </div>\n\n      <button onClick={onSkipToDocument}>Document</button>\n      {isSearchPanelDisabled ? null : <button onClick={onSkipToSearch}>Search</button>}\n      {isNotesPanelDisabled ? null : <button onClick={onSkipToNotes}>Notes</button>}\n    </div>\n  );\n}\n\nexport default Accessibility;\n","import Accessibility from './Accessibility';\n\nexport default Accessibility;","export function warn() {\n  if (console && console.warn) {\n    var _console;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n    (_console = console).warn.apply(_console, args);\n  }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n  if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n  warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n  i18n.loadNamespaces(ns, function () {\n    if (i18n.isInitialized) {\n      cb();\n    } else {\n      var initialized = function initialized() {\n        setTimeout(function () {\n          i18n.off('initialized', initialized);\n        }, 0);\n        cb();\n      };\n\n      i18n.on('initialized', initialized);\n    }\n  });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var lng = i18n.languages[0];\n  var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n  var lastLng = i18n.languages[i18n.languages.length - 1];\n  if (lng.toLowerCase() === 'cimode') return true;\n\n  var loadNotPending = function loadNotPending(l, n) {\n    var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n    return loadState === -1 || loadState === 2;\n  };\n\n  if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n  if (i18n.hasResourceBundle(lng, ns)) return true;\n  if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n  if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n  return false;\n}\n\nexport function hasLoadedNamespace(ns, i18n) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (!i18n.languages || !i18n.languages.length) {\n    warnOnce('i18n.languages were undefined or empty', i18n.languages);\n    return true;\n  }\n\n  var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n  if (!isNewerI18next) {\n    return oldI18nextHasLoadedNamespace(ns, i18n, options);\n  }\n\n  return i18n.hasLoadedNamespace(ns, {\n    precheck: function precheck(i18nInstance, loadNotPending) {\n      if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n    }\n  });\n}\nexport function getDisplayName(Component) {\n  return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\nexport function useTranslation(ns) {\n  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var i18nFromProps = props.i18n;\n\n  var _ref = useContext(I18nContext) || {},\n      i18nFromContext = _ref.i18n,\n      defaultNSFromContext = _ref.defaultNS;\n\n  var i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n    var notReadyT = function notReadyT(k) {\n      return Array.isArray(k) ? k[k.length - 1] : k;\n    };\n\n    var retNotReady = [notReadyT, {}, false];\n    retNotReady.t = notReadyT;\n    retNotReady.i18n = {};\n    retNotReady.ready = false;\n    return retNotReady;\n  }\n\n  if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n  var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n  var useSuspense = i18nOptions.useSuspense,\n      keyPrefix = i18nOptions.keyPrefix;\n  var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n  if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n  var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n    return hasLoadedNamespace(n, i18n, i18nOptions);\n  });\n\n  function getT() {\n    return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  }\n\n  var _useState = useState(getT),\n      _useState2 = _slicedToArray(_useState, 2),\n      t = _useState2[0],\n      setT = _useState2[1];\n\n  var isMounted = useRef(true);\n  useEffect(function () {\n    var bindI18n = i18nOptions.bindI18n,\n        bindI18nStore = i18nOptions.bindI18nStore;\n    isMounted.current = true;\n\n    if (!ready && !useSuspense) {\n      loadNamespaces(i18n, namespaces, function () {\n        if (isMounted.current) setT(getT);\n      });\n    }\n\n    function boundReset() {\n      if (isMounted.current) setT(getT);\n    }\n\n    if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n    if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n    return function () {\n      isMounted.current = false;\n      if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n        return i18n.off(e, boundReset);\n      });\n      if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n        return i18n.store.off(e, boundReset);\n      });\n    };\n  }, [i18n, namespaces.join()]);\n  var isInitial = useRef(true);\n  useEffect(function () {\n    if (isMounted.current && !isInitial.current) {\n      setT(getT);\n    }\n\n    isInitial.current = false;\n  }, [i18n]);\n  var ret = [t, i18n, ready];\n  ret.t = t;\n  ret.i18n = i18n;\n  ret.ready = ready;\n  if (ready) return ret;\n  if (!ready && !useSuspense) return ret;\n  throw new Promise(function (resolve) {\n    loadNamespaces(i18n, namespaces, function () {\n      resolve();\n    });\n  });\n}","/**! \n * hotkeys-js v3.9.3 \n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. \n * \n * Copyright (c) 2022 kenny wong <wowohoo@qq.com> \n * http://jaywcjlove.github.io/hotkeys \n * Licensed under the MIT license \n */\n\nvar isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // 绑定事件\n\nfunction addEvent(object, event, method, useCapture) {\n  if (object.addEventListener) {\n    object.addEventListener(event, method, useCapture);\n  } else if (object.attachEvent) {\n    object.attachEvent(\"on\".concat(event), function () {\n      method(window.event);\n    });\n  }\n} // 修饰键转换成对应的键码\n\n\nfunction getMods(modifier, key) {\n  var mods = key.slice(0, key.length - 1);\n\n  for (var i = 0; i < mods.length; i++) {\n    mods[i] = modifier[mods[i].toLowerCase()];\n  }\n\n  return mods;\n} // 处理传的key字符串转换成数组\n\n\nfunction getKeys(key) {\n  if (typeof key !== 'string') key = '';\n  key = key.replace(/\\s/g, ''); // 匹配任何空白字符,包括空格、制表符、换页符等等\n\n  var keys = key.split(','); // 同时设置多个快捷键,以','分割\n\n  var index = keys.lastIndexOf(''); // 快捷键可能包含',',需特殊处理\n\n  for (; index >= 0;) {\n    keys[index - 1] += ',';\n    keys.splice(index, 1);\n    index = keys.lastIndexOf('');\n  }\n\n  return keys;\n} // 比较修饰键的数组\n\n\nfunction compareArray(a1, a2) {\n  var arr1 = a1.length >= a2.length ? a1 : a2;\n  var arr2 = a1.length >= a2.length ? a2 : a1;\n  var isIndex = true;\n\n  for (var i = 0; i < arr1.length; i++) {\n    if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n  }\n\n  return isIndex;\n}\n\nvar _keyMap = {\n  backspace: 8,\n  tab: 9,\n  clear: 12,\n  enter: 13,\n  return: 13,\n  esc: 27,\n  escape: 27,\n  space: 32,\n  left: 37,\n  up: 38,\n  right: 39,\n  down: 40,\n  del: 46,\n  delete: 46,\n  ins: 45,\n  insert: 45,\n  home: 36,\n  end: 35,\n  pageup: 33,\n  pagedown: 34,\n  capslock: 20,\n  num_0: 96,\n  num_1: 97,\n  num_2: 98,\n  num_3: 99,\n  num_4: 100,\n  num_5: 101,\n  num_6: 102,\n  num_7: 103,\n  num_8: 104,\n  num_9: 105,\n  num_multiply: 106,\n  num_add: 107,\n  num_enter: 108,\n  num_subtract: 109,\n  num_decimal: 110,\n  num_divide: 111,\n  '⇪': 20,\n  ',': 188,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '-': isff ? 173 : 189,\n  '=': isff ? 61 : 187,\n  ';': isff ? 59 : 186,\n  '\\'': 222,\n  '[': 219,\n  ']': 221,\n  '\\\\': 220\n}; // Modifier Keys\n\nvar _modifier = {\n  // shiftKey\n  '⇧': 16,\n  shift: 16,\n  // altKey\n  '⌥': 18,\n  alt: 18,\n  option: 18,\n  // ctrlKey\n  '⌃': 17,\n  ctrl: 17,\n  control: 17,\n  // metaKey\n  '⌘': 91,\n  cmd: 91,\n  command: 91\n};\nvar modifierMap = {\n  16: 'shiftKey',\n  18: 'altKey',\n  17: 'ctrlKey',\n  91: 'metaKey',\n  shiftKey: 16,\n  ctrlKey: 17,\n  altKey: 18,\n  metaKey: 91\n};\nvar _mods = {\n  16: false,\n  18: false,\n  17: false,\n  91: false\n};\nvar _handlers = {}; // F1~F12 special key\n\nfor (var k = 1; k < 20; k++) {\n  _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nvar _downKeys = []; // 记录摁下的绑定键\n\nvar winListendFocus = false; // window是否已经监听了focus事件\n\nvar _scope = 'all'; // 默认热键范围\n\nvar elementHasBindEvent = []; // 已绑定事件的节点记录\n// 返回键码\n\nvar code = function code(x) {\n  return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n}; // 设置获取当前范围(默认为'所有')\n\n\nfunction setScope(scope) {\n  _scope = scope || 'all';\n} // 获取当前范围\n\n\nfunction getScope() {\n  return _scope || 'all';\n} // 获取摁下绑定键的键值\n\n\nfunction getPressedKeyCodes() {\n  return _downKeys.slice(0);\n} // 表单控件控件判断 返回 Boolean\n// hotkey is effective only when filter return true\n\n\nfunction filter(event) {\n  var target = event.target || event.srcElement;\n  var tagName = target.tagName;\n  var flag = true; // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n\n  if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n    flag = false;\n  }\n\n  return flag;\n} // 判断摁下的键是否为某个键,返回true或者false\n\n\nfunction isPressed(keyCode) {\n  if (typeof keyCode === 'string') {\n    keyCode = code(keyCode); // 转换成键码\n  }\n\n  return _downKeys.indexOf(keyCode) !== -1;\n} // 循环删除handlers中的所有 scope(范围)\n\n\nfunction deleteScope(scope, newScope) {\n  var handlers;\n  var i; // 没有指定scope,获取scope\n\n  if (!scope) scope = getScope();\n\n  for (var key in _handlers) {\n    if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n      handlers = _handlers[key];\n\n      for (i = 0; i < handlers.length;) {\n        if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;\n      }\n    }\n  } // 如果scope被删除,将scope重置为all\n\n\n  if (getScope() === scope) setScope(newScope || 'all');\n} // 清除修饰键\n\n\nfunction clearModifier(event) {\n  var key = event.keyCode || event.which || event.charCode;\n\n  var i = _downKeys.indexOf(key); // 从列表中清除按压过的键\n\n\n  if (i >= 0) {\n    _downKeys.splice(i, 1);\n  } // 特殊处理 cmmand 键,在 cmmand 组合快捷键 keyup 只执行一次的问题\n\n\n  if (event.key && event.key.toLowerCase() === 'meta') {\n    _downKeys.splice(0, _downKeys.length);\n  } // 修饰键 shiftKey altKey ctrlKey (command||metaKey) 清除\n\n\n  if (key === 93 || key === 224) key = 91;\n\n  if (key in _mods) {\n    _mods[key] = false; // 将修饰键重置为false\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = false;\n    }\n  }\n}\n\nfunction unbind(keysInfo) {\n  // unbind(), unbind all keys\n  if (!keysInfo) {\n    Object.keys(_handlers).forEach(function (key) {\n      return delete _handlers[key];\n    });\n  } else if (Array.isArray(keysInfo)) {\n    // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n    keysInfo.forEach(function (info) {\n      if (info.key) eachUnbind(info);\n    });\n  } else if (typeof keysInfo === 'object') {\n    // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n    if (keysInfo.key) eachUnbind(keysInfo);\n  } else if (typeof keysInfo === 'string') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    // support old method\n    // eslint-disable-line\n    var scope = args[0],\n        method = args[1];\n\n    if (typeof scope === 'function') {\n      method = scope;\n      scope = '';\n    }\n\n    eachUnbind({\n      key: keysInfo,\n      scope: scope,\n      method: method,\n      splitKey: '+'\n    });\n  }\n} // 解除绑定某个范围的快捷键\n\n\nvar eachUnbind = function eachUnbind(_ref) {\n  var key = _ref.key,\n      scope = _ref.scope,\n      method = _ref.method,\n      _ref$splitKey = _ref.splitKey,\n      splitKey = _ref$splitKey === void 0 ? '+' : _ref$splitKey;\n  var multipleKeys = getKeys(key);\n  multipleKeys.forEach(function (originKey) {\n    var unbindKeys = originKey.split(splitKey);\n    var len = unbindKeys.length;\n    var lastKey = unbindKeys[len - 1];\n    var keyCode = lastKey === '*' ? '*' : code(lastKey);\n    if (!_handlers[keyCode]) return; // 判断是否传入范围,没有就获取范围\n\n    if (!scope) scope = getScope();\n    var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n    _handlers[keyCode] = _handlers[keyCode].filter(function (record) {\n      // 通过函数判断,是否解除绑定,函数相等直接返回\n      var isMatchingMethod = method ? record.method === method : true;\n      return !(isMatchingMethod && record.scope === scope && compareArray(record.mods, mods));\n    });\n  });\n}; // 对监听对应快捷键的回调函数进行处理\n\n\nfunction eventHandler(event, handler, scope, element) {\n  if (handler.element !== element) {\n    return;\n  }\n\n  var modifiersMatch; // 看它是否在当前范围\n\n  if (handler.scope === scope || handler.scope === 'all') {\n    // 检查是否匹配修饰符(如果有返回true)\n    modifiersMatch = handler.mods.length > 0;\n\n    for (var y in _mods) {\n      if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n        if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n          modifiersMatch = false;\n        }\n      }\n    } // 调用处理程序,如果是修饰键不做处理\n\n\n    if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n      if (handler.method(event, handler) === false) {\n        if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n        if (event.stopPropagation) event.stopPropagation();\n        if (event.cancelBubble) event.cancelBubble = true;\n      }\n    }\n  }\n} // 处理keydown事件\n\n\nfunction dispatch(event, element) {\n  var asterisk = _handlers['*'];\n  var key = event.keyCode || event.which || event.charCode; // 表单控件过滤 默认表单控件不触发快捷键\n\n  if (!hotkeys.filter.call(this, event)) return; // Gecko(Firefox)的command键值224,在Webkit(Chrome)中保持一致\n  // Webkit左右 command 键值不一样\n\n  if (key === 93 || key === 224) key = 91;\n  /**\n   * Collect bound keys\n   * If an Input Method Editor is processing key input and the event is keydown, return 229.\n   * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n   * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n   */\n\n  if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n  /**\n   * Jest test cases are required.\n   * ===============================\n   */\n\n  ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {\n    var keyNum = modifierMap[keyName];\n\n    if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n      _downKeys.push(keyNum);\n    } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n      _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n    } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n      /**\n       * Fix if Command is pressed:\n       * ===============================\n       */\n      if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n        _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n      }\n    }\n  });\n  /**\n   * -------------------------------\n   */\n\n  if (key in _mods) {\n    _mods[key] = true; // 将特殊字符的key注册到 hotkeys 上\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = true;\n    }\n\n    if (!asterisk) return;\n  } // 将 modifierMap 里面的修饰键绑定到 event 中\n\n\n  for (var e in _mods) {\n    if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n      _mods[e] = event[modifierMap[e]];\n    }\n  }\n  /**\n   * https://github.com/jaywcjlove/hotkeys/pull/129\n   * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n   * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type μ.\n   * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n   */\n\n\n  if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n    if (_downKeys.indexOf(17) === -1) {\n      _downKeys.push(17);\n    }\n\n    if (_downKeys.indexOf(18) === -1) {\n      _downKeys.push(18);\n    }\n\n    _mods[17] = true;\n    _mods[18] = true;\n  } // 获取范围 默认为 `all`\n\n\n  var scope = getScope(); // 对任何快捷键都需要做的处理\n\n  if (asterisk) {\n    for (var i = 0; i < asterisk.length; i++) {\n      if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n        eventHandler(event, asterisk[i], scope, element);\n      }\n    }\n  } // key 不在 _handlers 中返回\n\n\n  if (!(key in _handlers)) return;\n\n  for (var _i = 0; _i < _handlers[key].length; _i++) {\n    if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {\n      if (_handlers[key][_i].key) {\n        var record = _handlers[key][_i];\n        var splitKey = record.splitKey;\n        var keyShortcut = record.key.split(splitKey);\n        var _downKeysCurrent = []; // 记录当前按键键值\n\n        for (var a = 0; a < keyShortcut.length; a++) {\n          _downKeysCurrent.push(code(keyShortcut[a]));\n        }\n\n        if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n          // 找到处理内容\n          eventHandler(event, record, scope, element);\n        }\n      }\n    }\n  }\n} // 判断 element 是否已经绑定事件\n\n\nfunction isElementBind(element) {\n  return elementHasBindEvent.indexOf(element) > -1;\n}\n\nfunction hotkeys(key, option, method) {\n  _downKeys = [];\n  var keys = getKeys(key); // 需要处理的快捷键列表\n\n  var mods = [];\n  var scope = 'all'; // scope默认为all,所有范围都有效\n\n  var element = document; // 快捷键事件绑定节点\n\n  var i = 0;\n  var keyup = false;\n  var keydown = true;\n  var splitKey = '+';\n  var capture = false; // 对为设定范围的判断\n\n  if (method === undefined && typeof option === 'function') {\n    method = option;\n  }\n\n  if (Object.prototype.toString.call(option) === '[object Object]') {\n    if (option.scope) scope = option.scope; // eslint-disable-line\n\n    if (option.element) element = option.element; // eslint-disable-line\n\n    if (option.keyup) keyup = option.keyup; // eslint-disable-line\n\n    if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n\n    if (option.capture !== undefined) capture = option.capture; // eslint-disable-line\n\n    if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n  }\n\n  if (typeof option === 'string') scope = option; // 对于每个快捷键进行处理\n\n  for (; i < keys.length; i++) {\n    key = keys[i].split(splitKey); // 按键列表\n\n    mods = []; // 如果是组合快捷键取得组合快捷键\n\n    if (key.length > 1) mods = getMods(_modifier, key); // 将非修饰键转化为键码\n\n    key = key[key.length - 1];\n    key = key === '*' ? '*' : code(key); // *表示匹配所有快捷键\n    // 判断key是否在_handlers中,不在就赋一个空数组\n\n    if (!(key in _handlers)) _handlers[key] = [];\n\n    _handlers[key].push({\n      keyup: keyup,\n      keydown: keydown,\n      scope: scope,\n      mods: mods,\n      shortcut: keys[i],\n      method: method,\n      key: keys[i],\n      splitKey: splitKey,\n      element: element\n    });\n  } // 在全局document上设置快捷键\n\n\n  if (typeof element !== 'undefined' && !isElementBind(element) && window) {\n    elementHasBindEvent.push(element);\n    addEvent(element, 'keydown', function (e) {\n      dispatch(e, element);\n    }, capture);\n\n    if (!winListendFocus) {\n      winListendFocus = true;\n      addEvent(window, 'focus', function () {\n        _downKeys = [];\n      }, capture);\n    }\n\n    addEvent(element, 'keyup', function (e) {\n      dispatch(e, element);\n      clearModifier(e);\n    }, capture);\n  }\n}\n\nfunction trigger(shortcut) {\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';\n  Object.keys(_handlers).forEach(function (key) {\n    var data = _handlers[key].find(function (item) {\n      return item.scope === scope && item.shortcut === shortcut;\n    });\n\n    if (data && data.method) {\n      data.method();\n    }\n  });\n}\n\nvar _api = {\n  setScope: setScope,\n  getScope: getScope,\n  deleteScope: deleteScope,\n  getPressedKeyCodes: getPressedKeyCodes,\n  isPressed: isPressed,\n  filter: filter,\n  trigger: trigger,\n  unbind: unbind,\n  keyMap: _keyMap,\n  modifier: _modifier,\n  modifierMap: modifierMap\n};\n\nfor (var a in _api) {\n  if (Object.prototype.hasOwnProperty.call(_api, a)) {\n    hotkeys[a] = _api[a];\n  }\n}\n\nif (typeof window !== 'undefined') {\n  var _hotkeys = window.hotkeys;\n\n  hotkeys.noConflict = function (deep) {\n    if (deep && window.hotkeys === hotkeys) {\n      window.hotkeys = _hotkeys;\n    }\n\n    return hotkeys;\n  };\n\n  window.hotkeys = hotkeys;\n}\n\nexport { hotkeys as default };\n","export default () => {\n  document.getElementById('file-picker')?.click();\n};\n","import core from 'core';\n\nexport default () => {\n  // The copyText function should works for 2 cases:\n  // 1. User copies from the side panel (window.getSelection())\n  // 2. User copies text from the document (core.getSelectedText())\n  // We manually to clear the value of #copy-textarea, and this will reset window.getSelection().toString() to \"\"\n  document.querySelector('#copy-textarea').value = '';\n  if (window.getSelection()?.toString()) {\n    // if we are selecting some text in the UI (i.e. text in note panel) just let it do the normal behaviour\n    return;\n  }\n\n  if (window.clipboardData) {\n    // this is for IE\n    window.clipboardData.setData('Text', core.getSelectedText());\n  } else {\n    const textarea = document.getElementById('copy-textarea');\n    textarea.value = core.getSelectedText();\n    textarea.select();\n    textarea.setSelectionRange(0, 99999); // this is necessary for iOS\n    try {\n      document.execCommand('copy');\n      textarea.blur();\n    } catch (e) {\n      console.error(`Copy is not supported by browser. ${e}`);\n    }\n  }\n};\n","import core from 'core';\n\nexport default toolName => {\n  // we don't want to show the style popup for this tool\n  // TODO: there might be a better way to handle this. We can potentially have an API for hiding style popup for certain tools\n  if (toolName === 'CropPage') {\n    return false;\n  }\n\n  const tool = core.getTool(toolName);\n  let hasStyles;\n\n  if (tool?.defaults) {\n    hasStyles = Object.keys(tool.defaults).length > 0;\n  } else {\n    hasStyles = false;\n  }\n\n  return hasStyles;\n};\n","import core from 'core';\nimport toolStylesExist from 'helpers/toolStylesExist';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store, toolName) => {\n  const { dispatch, getState } = store;\n  const toolGroup =\n    selectors.getToolButtonObject(getState(), toolName)?.group || '';\n\n  if (toolGroup) {\n    dispatch(actions.openElement('toolsOverlay'));\n  } else {\n    dispatch(actions.closeElement('toolsOverlay'));\n  }\n\n  const hasToolBeenSelected = core.getToolMode().name === toolName;\n  if (hasToolBeenSelected && toolStylesExist(toolName)) {\n    dispatch(actions.toggleElement('toolStylePopup'));\n    return;\n  }\n\n  dispatch(actions.closeElement('toolStylePopup'));\n  core.setToolMode(toolName);\n  dispatch(actions.setActiveToolGroup(toolGroup));\n};\n","import core from 'core';\nimport { getMaxZoomLevel, getMinZoomLevel } from 'constants/zoomFactors';\n\nfunction convertZoomStepFactorsToRangesMap(zoomStepFactors) {\n  const rangesMap = {};\n  zoomStepFactors.sort((a, b) => a.startZoom - b.startZoom);\n  for (let i = 0; i < zoomStepFactors.length; i++) {\n    const zoomStepFactor = zoomStepFactors[i];\n    const nextZoomStepFactor = zoomStepFactors[i + 1];\n    rangesMap[`${zoomStepFactor.step / 100}`] =\n      nextZoomStepFactor ?\n        [\n          zoomStepFactor.startZoom / 100,\n          nextZoomStepFactor.startZoom / 100\n        ] :\n        [\n          zoomStepFactor.startZoom / 100,\n          null\n        ];\n  }\n  return rangesMap;\n}\n\nexport function getStep(currentZoomFactor) {\n  const zoomStepFactors = window.instance.UI.getZoomStepFactors();\n  const zoomFactorRangesMap = convertZoomStepFactorsToRangesMap(zoomStepFactors);\n  const steps = Object.keys(zoomFactorRangesMap);\n  const step = steps.find(step => {\n    const zoomFactorRanges = zoomFactorRangesMap[step];\n    return isCurrentZoomFactorInRange(currentZoomFactor, zoomFactorRanges);\n  });\n  return parseFloat(step);\n}\n\nfunction isCurrentZoomFactorInRange(zoomFactor, ranges) {\n  const [rangeLowBound, rangeHighBound] = ranges;\n  if (rangeLowBound === null) {\n    return zoomFactor < rangeHighBound;\n  }\n  if (rangeHighBound === null) {\n    return zoomFactor >= rangeLowBound;\n  }\n  return zoomFactor >= rangeLowBound && zoomFactor < rangeHighBound;\n}\n\nfunction getViewCenterAfterScale(scale) {\n  const documentContainer = document.getElementsByClassName('DocumentContainer')[0];\n  const documentWrapper = document.getElementsByClassName('document')[0];\n  const clientX = window.innerWidth / 2;\n  const clientY = window.innerHeight / 2;\n\n  const x = (clientX + documentContainer.scrollLeft - documentWrapper.offsetLeft) * scale - clientX + documentContainer.offsetLeft;\n  const y = (clientY + documentContainer.scrollTop - documentWrapper.offsetTop) * scale - clientY + documentContainer.offsetTop;\n  return { x, y };\n}\n\nlet zoomStepHistory = [];\n\n// Keeping track of changes to zoomFactor outside this helper functions\nlet storedZoomFactor = -1;\n\nfunction zoomToInternal(currentZoomFactor, newZoomFactor) {\n  const scale = newZoomFactor / currentZoomFactor;\n  const { x, y } = getViewCenterAfterScale(scale);\n  core.zoomTo(newZoomFactor, x, y);\n  storedZoomFactor = newZoomFactor;\n}\n\nfunction resetZoomStepHistory() {\n  zoomStepHistory = [];\n}\n\nexport function fitToWidth() {\n  resetZoomStepHistory();\n  core.fitToWidth();\n}\n\nexport function fitToPage() {\n  resetZoomStepHistory();\n  core.fitToPage();\n}\n\n/**\n * zoomIn works as follows. Every time user zooms in we take current zoom level and compare it to\n * zoom factors map which currently is :\n * {\n    '0.075': [null, 0.8],\n    '0.25': [0.8, 1.5],\n    '0.5': [1.5, 2.5],\n    '1': [2.5, 4],\n    '2': [4, 8],\n    '4': [8, 32],\n    '8': [32, 64],\n    '16': [64, null],\n  }\n * Based on the range we select step size from this map. For example if current zoom level is 110% (1.1)\n * then we can see that it falls to range [0.8, 1.5] and step size for this is 0.25. We add this step\n * to current level so we end up to 1.35. We also store this step to stack so we can follow how after few steps we got there.\n *\n * We need to keep the step history to make our steps predictable in all cases.\n * Consider case where we start from zoom level 140% (1.4) and zoomIn. We would end up to 1.4 + 0.25 = 1.65 (165%).\n * If user would now click zoomOut, we would end up 1.65 - 0.5 = 1.15 (115%) which is not the same 140% where we started.\n * But as we store the step history we do 1.65 - 0.25 (value from step history) and end up to 1.4 (140%).\n * @ignore\n */\nexport function zoomIn() {\n  const currentZoomFactor = core.getZoom();\n  if (storedZoomFactor > 0 && currentZoomFactor !== storedZoomFactor) {\n    // zoom level was changed by external side effect (like one of core's function to change zoom level)\n    // in these cases we need to reset step history\n    resetZoomStepHistory();\n  }\n  if (currentZoomFactor === getMaxZoomLevel()) {\n    return;\n  }\n\n  let step = getStep(currentZoomFactor);\n  if (zoomStepHistory.length > 0 && zoomStepHistory[zoomStepHistory.length - 1] < 0) {\n    // if step history has steps and it has been opposite direction (zoomOut)\n    // We use that step. This makes sure that when crossing step range, zoom level goes to same\n    // as it was when zoomOut was done.\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    // thus here using absolute value\n    step = Math.abs(zoomStepHistory.pop());\n  } else {\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    zoomStepHistory.push(step);\n  }\n  const newZoomFactor = Math.min(currentZoomFactor + step, getMaxZoomLevel());\n  zoomToInternal(currentZoomFactor, newZoomFactor);\n}\n\n/**\n * See functionality from zoomIn. zoomOut works same but opposite direction.\n * @ignore\n */\nexport function zoomOut() {\n  const currentZoomFactor = core.getZoom();\n  if (storedZoomFactor > 0 && currentZoomFactor !== storedZoomFactor) {\n    // zoom level was changed by external side effect (like one of core's function to change zoom level)\n    // in these cases we need to reset step history\n    resetZoomStepHistory();\n  }\n  if (currentZoomFactor === getMinZoomLevel()) {\n    return;\n  }\n\n  let step = getStep(currentZoomFactor);\n  if (zoomStepHistory.length > 0 && zoomStepHistory[zoomStepHistory.length - 1] > 0) {\n    // if step history has steps and it has been opposite direction (zoomIn)\n    // We use that step. This makes sure that when crossing step range, zoom level goes to same\n    // as it was when zoomIn was done.\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    step = zoomStepHistory.pop();\n  } else {\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    zoomStepHistory.push(-1 * step);\n  }\n  const newZoomFactor = Math.max(currentZoomFactor - step, getMinZoomLevel());\n  zoomToInternal(currentZoomFactor, newZoomFactor);\n}\n\nexport function zoomTo(newZoomFactor) {\n  // if user sets certain zoom level, then we reset the step history\n  resetZoomStepHistory();\n  const currentZoomFactor = core.getZoom();\n  zoomToInternal(currentZoomFactor, newZoomFactor);\n}\n","export const workerTypes = {\n  IMAGE: 'image',\n  PDF: 'pdf',\n  OFFICE: 'office',\n  LEGACY_OFFICE: 'legacyOffice',\n  WEBVIEWER_SERVER: 'webviewerServer',\n  XOD: 'xod',\n  CONTENT_EDIT: 'contentEdit',\n  ALL: 'all',\n};","export const rotateRad = (cx, cy, x, y, radians) => {\n  const s = Math.sin(radians);\n  const c = Math.cos(radians);\n\n  const nx = (c * (x - cx)) + (s * (y - cy)) + cx; // xcos(theta) + ysin(theta)\n  const ny = (c * (y - cy)) - (s * (x - cx)) + cy; // -ysin(theta) + xcos(theta)\n\n  return { x: nx, y: ny };\n};\n\nexport const rotateDeg = (cx, cy, x, y, angle) => {\n  const radians = (Math.PI / 180) * angle;\n  const s = Math.sin(radians);\n  const c = Math.cos(radians);\n\n  const nx = (c * (x - cx)) + (s * (y - cy)) + cx;\n  const ny = (c * (y - cy)) - (s * (x - cx)) + cy;\n\n  return { x: nx, y: ny };\n};\n","export const rgbaToHex = (r, g, b, a = 1) => {\n  r = r.toString(16);\n  g = g.toString(16);\n  b = b.toString(16);\n  a = Math.round(a * 255).toString(16);\n\n  if (r.length === 1) {\n    r = `0${r}`;\n  }\n  if (g.length === 1) {\n    g = `0${g}`;\n  }\n  if (b.length === 1) {\n    b = `0${b}`;\n  }\n  if (a.length === 1) {\n    a = `0${a}`;\n  }\n\n  return `#${r}${g}${b}${a}`;\n};\n\nexport const hexToRgba = hexString => {\n  let a = 1;\n  if (hexString.length === 9) {\n    a = (parseInt(hexString.slice(7, 9), 16) / 255).toFixed(2);\n  }\n  const r = parseInt(hexString.slice(1, 3), 16);\n  const g = parseInt(hexString.slice(3, 5), 16);\n  const b = parseInt(hexString.slice(5, 7), 16);\n\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const isDarkColorHex = hexString => {\n  const R = parseInt(hexString.substring(1, 3), 16);\n  const G = parseInt(hexString.substring(3, 5), 16);\n  const B = parseInt(hexString.substring(5, 7), 16);\n\n  return R < 40 && G < 40 && B < 40;\n};","export const getAnnotationClass = annotation => {\n  if (annotation instanceof Annotations.CaretAnnotation) {\n    return 'caret';\n  }\n  if (annotation instanceof Annotations.CustomAnnotation) {\n    return 'custom';\n  }\n  if (annotation instanceof Annotations.EllipseAnnotation) {\n    return 'ellipse';\n  }\n  if (annotation instanceof Annotations.FileAttachmentAnnotation) {\n    return 'fileattachment';\n  }\n  if (annotation instanceof Annotations.FreeHandAnnotation) {\n    return 'freehand';\n  }\n  if (\n    annotation instanceof Annotations.FreeTextAnnotation &&\n    annotation.getIntent() === window.Annotations.FreeTextAnnotation.Intent.FreeTextCallout\n  ) {\n    return 'callout';\n  }\n  if (annotation instanceof Annotations.FreeTextAnnotation) {\n    return 'freetext';\n  }\n  if (annotation instanceof Annotations.LineAnnotation) {\n    return 'line';\n  }\n  if (annotation instanceof Annotations.Link) {\n    return 'other';\n  }\n  if (annotation instanceof Annotations.PolygonAnnotation) {\n    return 'polygon';\n  }\n  if (annotation instanceof Annotations.PolylineAnnotation) {\n    return 'polyline';\n  }\n  if (annotation instanceof Annotations.RectangleAnnotation) {\n    return 'rectangle';\n  }\n  if (annotation instanceof Annotations.RedactionAnnotation) {\n    return 'redact';\n  }\n  if (annotation instanceof Annotations.SignatureWidgetAnnotation) {\n    return 'signature';\n  }\n  if (annotation instanceof Annotations.StampAnnotation) {\n    return 'stamp';\n  }\n  if (annotation instanceof Annotations.StickyAnnotation) {\n    return 'stickyNote';\n  }\n  if (annotation instanceof Annotations.TextHighlightAnnotation) {\n    return 'highlight';\n  }\n  if (annotation instanceof Annotations.TextStrikeoutAnnotation) {\n    return 'strikeout';\n  }\n  if (annotation instanceof Annotations.TextUnderlineAnnotation) {\n    return 'underline';\n  }\n  if (annotation instanceof Annotations.TextSquigglyAnnotation) {\n    return 'squiggly';\n  }\n  if (annotation instanceof Annotations.Model3DAnnotation) {\n    return '3D';\n  }\n\n  return 'other';\n};\n","export default annotation => {\n  const latestReplyActivityDate = annotation\n    .getReplies()\n    .reduce((acc, reply) => {\n      const replyDate = reply.DateModified || reply.DateCreated;\n      if (replyDate && new Date(replyDate) > new Date(acc)) {\n        return replyDate;\n      }\n      return acc;\n    }, 0);\n\n  if (latestReplyActivityDate) {\n    return latestReplyActivityDate;\n  }\n  if (annotation.DateModified) {\n    return annotation.DateModified;\n  }\n  if (annotation.DateCreated) {\n    return annotation.DateCreated;\n  }\n\n  return undefined;\n};\n","import i18next from 'i18next';\nimport dayjs from 'dayjs';\nimport core from 'core';\nimport React from 'react';\nimport { rotateRad } from 'helpers/rotate';\nimport { rgbaToHex } from 'helpers/color';\nimport { getAnnotationClass } from 'helpers/getAnnotationClass';\nimport getLatestActivityDate from 'helpers/getLatestActivityDate';\n\nfunction getDocumentCenter(pageNumber) {\n  let result;\n  if (pageNumber <= core.getTotalPages()) {\n    result = core.getPageInfo(pageNumber);\n  } else {\n    result = {\n      width: 0,\n      height: 0,\n    };\n  }\n  return { x: result.width / 2, y: result.height / 2 };\n}\n\nfunction getRotationRad(pageNumber) {\n  const orientation = core.getRotation(pageNumber);\n  return (4 - orientation) * (Math.PI / 2);\n}\n\nconst sortStrategies = {\n  position: {\n    getSortedNotes: notes =>\n      notes.sort((a, b) => {\n        if (a.PageNumber === b.PageNumber) {\n          const rotation = getRotationRad(a.PageNumber);\n          const center = getDocumentCenter(a.PageNumber);\n\n          // Simulated with respect to the document origin\n          const rotatedA = [\n            rotateRad(center.x, center.y, a.X, a.Y, rotation),\n            rotateRad(center.x, center.y, a.X + a.Width, a.Y + a.Height, rotation),\n          ];\n          const rotatedB = [\n            rotateRad(center.x, center.y, b.X, b.Y, rotation),\n            rotateRad(center.x, center.y, b.X + b.Width, b.Y + b.Height, rotation),\n          ];\n\n          const smallestA = rotatedA.reduce(\n            (smallest, current) => (current.y < smallest ? current.y : smallest),\n            Number.MAX_SAFE_INTEGER,\n          );\n          const smallestB = rotatedB.reduce(\n            (smallest, current) => (current.y < smallest ? current.y : smallest),\n            Number.MAX_SAFE_INTEGER,\n          );\n\n          return smallestA - smallestB;\n        }\n        return a.PageNumber - b.PageNumber;\n      }),\n    shouldRenderSeparator: (prevNote, currNote) => currNote.PageNumber !== prevNote.PageNumber,\n    getSeparatorContent: (prevNote, currNote, { pageLabels }) =>\n      `${i18next.t('option.shared.page')} ${pageLabels[currNote.PageNumber - 1]}`,\n  },\n  createdDate: {\n    getSortedNotes: notes => notes.sort((a, b) => (a.DateCreated || 0) - (b.DateCreated || 0)),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      const prevNoteDate = prevNote.DateCreated;\n      const currNoteDate = currNote.DateCreated;\n      if (prevNoteDate && currNoteDate) {\n        const dayFormat = 'MMM D, YYYY';\n        return dayjs(prevNoteDate).format(dayFormat) !== dayjs(currNoteDate).format(dayFormat);\n      }\n\n      if (!prevNoteDate && !currNoteDate) {\n        return false;\n      }\n\n      return true;\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      const createdDate = currNote.DateCreated;\n      if (createdDate) {\n        const dayFormat = 'MMM D, YYYY';\n        const today = dayjs(new Date()).format(dayFormat);\n        const yesterday = dayjs(new Date(new Date() - 86400000)).format(dayFormat);\n        const createdDateString = dayjs(new Date(createdDate)).format(dayFormat);\n\n        if (createdDateString === today) {\n          return i18next.t('option.notesPanel.separator.today');\n        }\n        if (createdDateString === yesterday) {\n          return i18next.t('option.notesPanel.separator.yesterday');\n        }\n        return createdDateString;\n      }\n\n      return i18next.t('option.notesPanel.separator.unknown');\n    },\n  },\n  modifiedDate: {\n    getSortedNotes: notes => notes.sort((a, b) => (getLatestActivityDate(b) || 0) - (getLatestActivityDate(a) || 0)),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      const prevNoteDate = getLatestActivityDate(prevNote);\n      const currNoteDate = getLatestActivityDate(currNote);\n      if (prevNoteDate && currNoteDate) {\n        const dayFormat = 'MMM D, YYYY';\n        return dayjs(prevNoteDate).format(dayFormat) !== dayjs(currNoteDate).format(dayFormat);\n      }\n\n      if (!prevNoteDate && !currNoteDate) {\n        return false;\n      }\n\n      return true;\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      const latestActivityDate = getLatestActivityDate(currNote);\n      if (latestActivityDate) {\n        const dayFormat = 'MMM D, YYYY';\n        const today = dayjs(new Date()).format(dayFormat);\n        const yesterday = dayjs(new Date(new Date() - 86400000)).format(dayFormat);\n        const latestActivityDay = dayjs(latestActivityDate).format(dayFormat);\n\n        if (latestActivityDay === today) {\n          return i18next.t('option.notesPanel.separator.today');\n        }\n        if (latestActivityDay === yesterday) {\n          return i18next.t('option.notesPanel.separator.yesterday');\n        }\n        return latestActivityDay;\n      }\n\n      return i18next.t('option.notesPanel.separator.unknown');\n    },\n  },\n  status: {\n    getSortedNotes: notes =>\n      notes.sort((a, b) => {\n        const statusA =\n          a.getStatus() === ''\n            ? i18next.t('option.state.none').toUpperCase()\n            : i18next.t(`option.state.${a.getStatus().toLowerCase()}`).toUpperCase();\n        const statusB =\n          b.getStatus() === ''\n            ? i18next.t('option.state.none').toUpperCase()\n            : i18next.t(`option.state.${b.getStatus().toLowerCase()}`).toUpperCase();\n        return statusA < statusB ? -1 : statusA > statusB ? 1 : 0;\n      }),\n    shouldRenderSeparator: (prevNote, currNote) => prevNote.getStatus() !== currNote.getStatus(),\n    getSeparatorContent: (prevNote, currNote) => {\n      return currNote.getStatus() === ''\n        ? i18next.t('option.state.none')\n        : i18next.t(`option.state.${currNote.getStatus().toLowerCase()}`);\n    },\n  },\n  author: {\n    getSortedNotes: notes =>\n      notes.sort((a, b) => {\n        const authorA = core.getDisplayAuthor(a['Author'])?.toUpperCase();\n        const authorB = core.getDisplayAuthor(b['Author'])?.toUpperCase();\n        return authorA < authorB ? -1 : authorA > authorB ? 1 : 0;\n      }),\n    shouldRenderSeparator: (prevNote, currNote) => core.getDisplayAuthor(prevNote['Author']) !== core.getDisplayAuthor(currNote['Author']),\n    getSeparatorContent: (prevNote, currNote) => {\n      return core.getDisplayAuthor(currNote['Author']);\n    },\n  },\n  type: {\n    getSortedNotes: notes =>\n      notes.sort((a, b) => {\n        const typeA = getAnnotationClass(a);\n        const typeB = getAnnotationClass(b);\n        return typeA < typeB ? -1 : typeA > typeB ? 1 : 0;\n      }),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      return getAnnotationClass(prevNote) !== getAnnotationClass(currNote);\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      return i18next.t(`option.type.${getAnnotationClass(currNote)}`);\n    },\n  },\n  color: {\n    getSortedNotes: notes =>\n      notes.sort((prevNote, currNote) => {\n        let colorA = '#485056';\n        let colorB = '#485056';\n        if (currNote.Color) {\n          colorA = rgbaToHex(currNote.Color.R, currNote.Color.G, currNote.Color.B, currNote.Color.A);\n        }\n        if (prevNote.Color) {\n          colorB = rgbaToHex(prevNote.Color.R, prevNote.Color.G, prevNote.Color.B, prevNote.Color.A);\n        }\n        return colorA < colorB ? -1 : colorA > colorB ? 1 : 0;\n      }),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      let colorA = '#485056';\n      let colorB = '#485056';\n      if (currNote.Color) {\n        colorA = rgbaToHex(currNote.Color.R, currNote.Color.G, currNote.Color.B, currNote.Color.A);\n      }\n      if (prevNote.Color) {\n        colorB = rgbaToHex(prevNote.Color.R, prevNote.Color.G, prevNote.Color.B, prevNote.Color.A);\n      }\n      return colorA !== colorB;\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      let color = '#485056';\n      if (currNote.Color) {\n        color = rgbaToHex(currNote.Color.R, currNote.Color.G, currNote.Color.B, currNote.Color.A);\n      }\n      return (\n        <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}>\n          {i18next.t('option.notesOrder.color')}\n          <div\n            style={{ background: color, width: '7px', height: '7px', borderRadius: '10000000px', marginLeft: '10px' }}\n          ></div>\n        </div>\n      );\n    },\n  },\n};\n\nexport const getSortStrategies = () => sortStrategies;\n\nexport const addSortStrategy = newStrategy => {\n  const { name, getSortedNotes, shouldRenderSeparator, getSeparatorContent } = newStrategy;\n\n  sortStrategies[name] = {\n    getSortedNotes,\n    shouldRenderSeparator,\n    getSeparatorContent,\n  };\n};\n\n/**\n * Contains string enums for all the possible sorting algorithms available in NotesPanel.\n * @name UI.NotesPanelSortStrategy\n * @property {string} POSITION Sort notes by position.\n * @property {string} CREATED_DATE Sort notes by creation date.\n * @property {string} MODIFIED_DATE Sort notes by last modification date.\n * @property {string} STATUS Sort notes by status.\n * @property {string} AUTHOR Sort notes by the author.\n * @property {string} TYPE Sort notes by type.\n * @property {string} COLOR Sort notes by color.\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const sortStrategy = instance.UI.NotesPanelSortStrategy;\n    instance.UI.setNotesPanelSortStrategy(sortStrategy.AUTHOR);\n  });\n */\nexport const NotesPanelSortStrategy = {\n  POSITION: 'position',\n  CREATED_DATE: 'createdDate',\n  MODIFIED_DATE: 'modifiedDate',\n  STATUS: 'status',\n  AUTHOR: 'author',\n  TYPE: 'type',\n  COLOR: 'color'\n};","import i18next from 'i18next';\n\n/**\n * this is the map we used to get information about annotations and tools\n * for example, we can look for map.freeHand.currentPalette to get the current color palette for freeHandAnnotation and freeHandTool\n * ideally, this map file should be the only place which provides information about annotations and tools\n * if you are tempted to create a new map file(which maps a tool/annotation to something else) under this constants folder\n * please make sure that it is not possible to implement that map here\n * @ignore\n */\nconst map = {\n  signature: {\n    icon: 'icon-tool-signature',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: ['AnnotationCreateSignature'],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.FreeHandAnnotation &&\n      annotation.Subject === i18next.t('annotation.signature'),\n  },\n  freeHand: {\n    icon: 'icon-tool-pen-line',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateFreeHand',\n      'AnnotationCreateFreeHand2',\n      'AnnotationCreateFreeHand3',\n      'AnnotationCreateFreeHand4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.FreeHandAnnotation,\n  },\n  freeHandHighlight: {\n    icon: 'icon-tool-pen-highlight',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateFreeHandHighlight',\n      'AnnotationCreateFreeHandHighlight2',\n      'AnnotationCreateFreeHandHighlight3',\n      'AnnotationCreateFreeHandHighlight4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.FreeHandAnnotation,\n  },\n  freeText: {\n    icon: 'icon-tool-text-free-text',\n    iconColor: 'TextColor',\n    currentPalette: 'TextColor',\n    availablePalettes: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateFreeText',\n      'AnnotationCreateFreeText2',\n      'AnnotationCreateFreeText3',\n      'AnnotationCreateFreeText4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() ===\n      window.Annotations.FreeTextAnnotation.Intent.FreeText,\n  },\n  dateFreeText: {\n    icon: 'icon-tool-fill-and-sign-calendar',\n    iconColor: 'TextColor',\n    currentPalette: 'TextColor',\n    availablePalettes: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateDateFreeText',\n      'AnnotationCreateDateFreeText2',\n      'AnnotationCreateDateFreeText3',\n      'AnnotationCreateDateFreeText4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() ===\n        window.Annotations.FreeTextAnnotation.Intent.FreeText,\n  },\n  distanceMeasurement: {\n    icon: 'ic_annotation_distance_black_24px',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateDistanceMeasurement',\n      'AnnotationCreateDistanceMeasurement2',\n      'AnnotationCreateDistanceMeasurement3',\n      'AnnotationCreateDistanceMeasurement4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.LineAnnotation &&\n      annotation.IT === 'LineDimension' &&\n      annotation.Measure,\n  },\n  perimeterMeasurement: {\n    icon: 'ic_annotation_perimeter_black_24px',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreatePerimeterMeasurement',\n      'AnnotationCreatePerimeterMeasurement2',\n      'AnnotationCreatePerimeterMeasurement3',\n      'AnnotationCreatePerimeterMeasurement4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.PolylineAnnotation &&\n      annotation.IT === 'PolyLineDimension' &&\n      annotation.Measure,\n  },\n  arcMeasurement: {\n    icon: 'icon-tool-measurement-arc',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateArcMeasurement',\n      'AnnotationCreateArcMeasurement2',\n      'AnnotationCreateArcMeasurement3',\n      'AnnotationCreateArcMeasurement4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.ArcAnnotation &&\n      annotation.IT === 'ArcDimension' &&\n      annotation.Measure,\n  },\n  rectangularAreaMeasurement: {\n    icon: 'ic_annotation_rectangular_area_black_24px',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateRectangularAreaMeasurement',\n      'AnnotationCreateRectangularAreaMeasurement2',\n      'AnnotationCreateRectangularAreaMeasurement3',\n      'AnnotationCreateRectangularAreaMeasurement4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.PolygonAnnotation &&\n      annotation.IT === 'PolygonDimension' &&\n      annotation.Measure &&\n      annotation.isRectangularPolygon(),\n  },\n  cloudyRectangularAreaMeasurement: {\n    icon: 'ic_annotation_cloudy_rectangular_area_black_24px',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateCloudyRectangularAreaMeasurement',\n      'AnnotationCreateCloudyRectangularAreaMeasurement2',\n      'AnnotationCreateCloudyRectangularAreaMeasurement3',\n      'AnnotationCreateCloudyRectangularAreaMeasurement4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.PolygonAnnotation &&\n      annotation.IT === 'PolygonDimension' &&\n      annotation.Measure &&\n      annotation.isRectangularPolygon(),\n  },\n  areaMeasurement: {\n    icon: 'ic_annotation_area_black_24px',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateAreaMeasurement',\n      'AnnotationCreateAreaMeasurement2',\n      'AnnotationCreateAreaMeasurement3',\n      'AnnotationCreateAreaMeasurement4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.PolygonAnnotation &&\n      annotation.IT === 'PolygonDimension' &&\n      annotation.Measure,\n  },\n  ellipseMeasurement: {\n    icon: 'ic_annotation_ellipse_area_black',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateEllipseMeasurement',\n      'AnnotationCreateEllipseMeasurement2',\n      'AnnotationCreateEllipseMeasurement3',\n      'AnnotationCreateEllipseMeasurement4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.EllipseAnnotation &&\n      annotation.IT === 'EllipseDimension' &&\n      annotation.Measure,\n  },\n  countMeasurement: {\n    icon: 'ic_check_black_24px',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateCountMeasurement',\n      'AnnotationCreateCountMeasurement2',\n      'AnnotationCreateCountMeasurement3',\n      'AnnotationCreateCountMeasurement4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.StickyAnnotation &&\n      annotation.getCustomData('trn-is-count')\n  },\n  callout: {\n    icon: 'icon-tool-callout-line',\n    iconColor: 'StrokeColor',\n    currentPalette: 'TextColor',\n    availablePalettes: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateCallout',\n      'AnnotationCreateCallout2',\n      'AnnotationCreateCallout3',\n      'AnnotationCreateCallout4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() ===\n      window.Annotations.FreeTextAnnotation.Intent.FreeTextCallout,\n  },\n  line: {\n    icon: 'icon-tool-shape-line',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateLine',\n      'AnnotationCreateLine2',\n      'AnnotationCreateLine3',\n      'AnnotationCreateLine4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.LineAnnotation &&\n      annotation.getStartStyle() === 'None' &&\n      annotation.getEndStyle() === 'None',\n  },\n  arrow: {\n    icon: 'icon-tool-shape-arrow',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateArrow',\n      'AnnotationCreateArrow2',\n      'AnnotationCreateArrow3',\n      'AnnotationCreateArrow4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.LineAnnotation &&\n      (annotation.getStartStyle() !== 'None' ||\n        annotation.getEndStyle() !== 'None'),\n  },\n  polygon: {\n    icon: 'icon-tool-shape-polygon',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreatePolygon',\n      'AnnotationCreatePolygon2',\n      'AnnotationCreatePolygon3',\n      'AnnotationCreatePolygon4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.PolygonAnnotation &&\n      annotation.Style !== 'cloudy',\n  },\n  cloud: {\n    icon: 'icon-tool-shape-cloud',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreatePolygonCloud',\n      'AnnotationCreatePolygonCloud2',\n      'AnnotationCreatePolygonCloud3',\n      'AnnotationCreatePolygonCloud4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.PolygonAnnotation &&\n      annotation.Style === 'cloudy',\n  },\n  highlight: {\n    icon: 'icon-tool-text-manipulation-highlight',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextHighlight',\n      'AnnotationCreateTextHighlight2',\n      'AnnotationCreateTextHighlight3',\n      'AnnotationCreateTextHighlight4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.TextHighlightAnnotation,\n  },\n  underline: {\n    icon: 'icon-tool-text-manipulation-underline',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextUnderline',\n      'AnnotationCreateTextUnderline2',\n      'AnnotationCreateTextUnderline3',\n      'AnnotationCreateTextUnderline4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.TextUnderlineAnnotation,\n  },\n  squiggly: {\n    icon: 'icon-tool-text-manipulation-squiggly',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextSquiggly',\n      'AnnotationCreateTextSquiggly2',\n      'AnnotationCreateTextSquiggly3',\n      'AnnotationCreateTextSquiggly4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.TextSquigglyAnnotation,\n  },\n  strikeout: {\n    icon: 'icon-tool-text-manipulation-strikethrough',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextStrikeout',\n      'AnnotationCreateTextStrikeout2',\n      'AnnotationCreateTextStrikeout3',\n      'AnnotationCreateTextStrikeout4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.TextStrikeoutAnnotation,\n  },\n  redaction: {\n    icon: 'icon-tool-select-area-redaction',\n    iconColor: 'StrokeColor',\n    currentPalette: 'TextColor',\n    availablePalettes: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateRedaction',\n      'AnnotationCreateRedaction2',\n      'AnnotationCreateRedaction3',\n      'AnnotationCreateRedaction4'\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.RedactionAnnotation,\n  },\n  rectangle: {\n    icon: 'icon-tool-shape-rectangle',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateRectangle',\n      'AnnotationCreateRectangle2',\n      'AnnotationCreateRectangle3',\n      'AnnotationCreateRectangle4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === '',\n  },\n  ellipse: {\n    icon: 'icon-tool-shape-oval',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateEllipse',\n      'AnnotationCreateEllipse2',\n      'AnnotationCreateEllipse3',\n      'AnnotationCreateEllipse4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.EllipseAnnotation,\n  },\n  arc: {\n    icon: 'icon-tool-arc',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateArc',\n      'AnnotationCreateArc2',\n      'AnnotationCreateArc3',\n      'AnnotationCreateArc4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.ArcAnnotation\n  },\n  polyline: {\n    icon: 'icon-tool-shape-polyline',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreatePolyline',\n      'AnnotationCreatePolyline2',\n      'AnnotationCreatePolyline3',\n      'AnnotationCreatePolyline4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.PolylineAnnotation,\n  },\n  stickyNote: {\n    icon: 'icon-tool-comment-line',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateSticky',\n      'AnnotationCreateSticky2',\n      'AnnotationCreateSticky3',\n      'AnnotationCreateSticky4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.StickyAnnotation,\n  },\n  changeView: {\n    icon: 'icon-tool-changeview',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateChangeViewTool',\n      'AnnotationCreateChangeViewTool2',\n      'AnnotationCreateChangeViewTool3',\n      'AnnotationCreateChangeViewTool4',\n    ],\n    annotationCheck: annotation => annotation instanceof window.Annotations.StampAnnotation && annotation.ViewState,\n  },\n  image: {\n    icon: 'icon-tool-image-line',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: [\n      'AnnotationCreateRubberStamp',\n    ],\n    annotationCheck: annotation => {\n      return annotation instanceof window.Annotations.StampAnnotation &&\n      annotation.ToolName === 'AnnotationCreateStamp';\n    },\n  },\n  stamp: {\n    icon: 'icon-tool-stamp-line',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: [\n      'AnnotationCreateStamp',\n    ],\n    annotationCheck: annotation => {\n      return annotation instanceof window.Annotations.StampAnnotation;\n    },\n  },\n  edit: {\n    icon: 'ic_select_black_24px',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['AnnotationEdit'],\n    annotationCheck: null,\n  },\n  pan: {\n    icon: 'ic_pan_black_24px',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['Pan'],\n    annotationCheck: null,\n  },\n  ContentEditTool: {\n    icon: 'ic_edit_page_24px',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['ContentEditTool'],\n    annotationCheck: null,\n  },\n  textSelect: {\n    icon: 'textselect_cursor',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['TextSelect'],\n    annotationCheck: null,\n  },\n  marqueeZoomTool: {\n    icon: null,\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['MarqueeZoomTool'],\n    annotationCheck: null,\n  },\n  eraser: {\n    icon: 'ic_annotation_eraser_black_24px',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['AnnotationEraserTool'],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.FreeHandAnnotation,\n  },\n  cropPage: {\n    icon: 'ic_crop_black_24px',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['CropPage'],\n    annotationCheck: null,\n  },\n  fileattachment: {\n    icon: 'ic_fileattachment_24px',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: ['AnnotationCreateFileAttachment'],\n    annotationCheck: annotation => annotation instanceof window.Annotations.FileAttachmentAnnotation,\n  },\n  sound: {\n    icon: 'ic_sound_24px',\n    iconColor: 'FillColor',\n    currentPalette: 'FillColor',\n    availablePalettes: ['FillColor', 'StrokeColor'],\n    toolNames: [],\n    annotationCheck: annotation => annotation instanceof window.Annotations.SoundAnnotation,\n  },\n  threeDAnnotation: {\n    icon: 'icon-tool-model3d',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['AnnotationCreateThreeD'],\n    annotationCheck: annotation => annotation instanceof window.Annotations.Model3DAnnotation,\n  },\n  textField: {\n    icon: 'icon-form-field-text',\n    iconColor: 'TextColor',\n    currentPalette: 'TextColor',\n    availablePalettes: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'TextFormFieldCreateTool',\n      'TextFormFieldCreateTool2',\n      'TextFormFieldCreateTool3',\n      'TextFormFieldCreateTool4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'TextFormField'\n  },\n  signatureFormField: {\n    icon: 'icon-form-field-signature',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: [\n      'SignatureFormFieldCreateTool',\n      'SignatureFormFieldCreateTool2',\n      'SignatureFormFieldCreateTool3',\n      'SignatureFormFieldCreateTool4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'SignatureFormField'\n  },\n  checkBoxFormField: {\n    icon: 'icon-form-field-checkbox',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: ['CheckBoxFormFieldCreateTool'],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'CheckBoxFormField'\n  },\n  radioButtonFormField: {\n    icon: 'icon-form-field-radiobutton',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['StrokeColor'],\n    toolNames: ['RadioButtonFormFieldCreateTool'],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'RadioButtonFormField'\n  },\n  listBoxFormField: {\n    icon: 'icon-form-field-listbox',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'ListBoxFormFieldCreateTool',\n      'ListBoxFormFieldCreateTool2',\n      'ListBoxFormFieldCreateTool3',\n      'ListBoxFormFieldCreateTool4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'ListBoxFormField'\n  },\n  comboBoxFormField: {\n    icon: 'icon-form-field-combobox',\n    iconColor: 'StrokeColor',\n    currentPalette: 'StrokeColor',\n    availablePalettes: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'ComboBoxFormFieldCreateTool',\n      'ComboBoxFormFieldCreateTool2',\n      'ComboBoxFormFieldCreateTool3',\n      'ComboBoxFormFieldCreateTool4',\n    ],\n    annotationCheck: annotation =>\n      annotation instanceof window.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'ComboBoxFormField'\n  },\n};\n\nexport const mapToolNameToKey = toolName =>\n  Object.keys(map).find(key => map[key].toolNames.includes(toolName));\n\nexport const mapAnnotationToKey = annotation =>\n  Object.keys(map).find(key => {\n    const { annotationCheck } = map[key];\n    return annotationCheck && annotationCheck(annotation);\n  });\n\nexport const mapAnnotationToToolName = annotation =>\n  map[mapAnnotationToKey(annotation)].toolNames[0];\n\nexport const copyMapWithDataProperties = (...properties) =>\n  Object.keys(map).reduce((newMap, key) => {\n    newMap[key] = {};\n    properties.forEach(property => {\n      newMap[key][property] = map[key][property];\n    });\n\n    return newMap;\n  }, {});\n\nexport const register = (tool, annotationConstructor, customAnnotCheckFunc) => {\n  const { toolName, buttonImage, toolObject } = tool;\n  const key = toolName;\n  const availablePalettes = ['TextColor', 'StrokeColor', 'FillColor'].filter(\n    property => toolObject.defaults && toolObject.defaults[property],\n  );\n\n  map[key] = {\n    icon: buttonImage,\n    iconColor: availablePalettes[0],\n    currentPalette: availablePalettes[0],\n    availablePalettes,\n    toolNames: [toolName],\n    annotationCheck: customAnnotCheckFunc ?\n      annotation => customAnnotCheckFunc(annotation) :\n      (annotationConstructor ? annotation => annotation instanceof annotationConstructor : null)\n  };\n};\n\n// we return an empty object here to prevent some components from accessing undefined\n// if the map doesn't have a key for some annotations\nexport const getDataWithKey = key => map[key] || { icon: 'icon - tool - pen and shape - phone - line' };\n","import i18n from 'i18next';\n\nimport actions from 'actions';\nimport dayjs from 'dayjs';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\n\nimport { workerTypes } from 'constants/types';\nimport { getSortStrategies } from 'constants/sortStrategies';\nimport { mapAnnotationToKey, getDataWithKey } from 'constants/map';\nimport { isSafari, isChromeOniOS, isFirefoxOniOS } from 'helpers/device';\nimport core from 'core';\n\nlet pendingCanvases = [];\nlet PRINT_QUALITY = 1;\nlet colorMap;\n\ndayjs.extend(LocalizedFormat);\n\nexport const print = async (dispatch, isEmbedPrintSupported, sortStrategy, colorMap, options = {}) => {\n  const {\n    includeAnnotations,\n    includeComments,\n    maintainPageOrientation,\n    onProgress,\n    printQuality = PRINT_QUALITY,\n    printWithoutModal = false,\n    language,\n    isPrintCurrentView,\n    printedNoteDateFormat: dateFormat\n  } = options;\n  let { pagesToPrint } = options;\n\n  if (!core.getDocument()) {\n    return;\n  }\n\n  const documentType = core.getDocument().getType();\n  const bbURLPromise = core.getPrintablePDF();\n\n  if (bbURLPromise) {\n    const printPage = window.open('', '_blank');\n    printPage.document.write(i18n.t('message.preparingToPrint'));\n    bbURLPromise.then(result => {\n      printPage.location.href = result.url;\n    });\n  } else if (isEmbedPrintSupported && documentType === workerTypes.PDF) {\n    dispatch(actions.openElement('loadingModal'));\n    printPdf().then(() => {\n      dispatch(actions.closeElement('loadingModal'));\n    });\n  } else if (includeAnnotations || includeComments || printWithoutModal) {\n    if (!pagesToPrint) {\n      pagesToPrint = [];\n      for (let i = 1; i <= core.getTotalPages(); i++) {\n        pagesToPrint.push(i);\n      }\n    }\n    if (isPrintCurrentView) {\n      pagesToPrint = [core.getDocumentViewer().getCurrentPage()];\n    }\n\n    const createPages = creatingPages(\n      pagesToPrint,\n      includeComments,\n      includeAnnotations,\n      maintainPageOrientation,\n      printQuality,\n      sortStrategy,\n      colorMap,\n      dateFormat,\n      onProgress,\n      isPrintCurrentView,\n      language,\n    );\n    Promise.all(createPages)\n      .then(pages => {\n        printPages(pages);\n      })\n      .catch(e => {\n        console.error(e);\n      });\n  } else {\n    dispatch(actions.openElement('printModal'));\n  }\n};\n\nconst printPdf = () =>\n  core.exportAnnotations().then(xfdfString => {\n    const printDocument = true;\n    return core\n      .getDocument()\n      .getFileData({ xfdfString, printDocument })\n      .then(data => {\n        const arr = new Uint8Array(data);\n        const blob = new Blob([arr], { type: 'application/pdf' });\n\n        const printHandler = document.getElementById('print-handler');\n        printHandler.src = URL.createObjectURL(blob);\n\n        return new Promise(resolve => {\n          const loadListener = function() {\n            printHandler.contentWindow.print();\n            printHandler.removeEventListener('load', loadListener);\n\n            resolve();\n          };\n\n          printHandler.addEventListener('load', loadListener);\n        });\n      });\n  });\n\nexport const creatingPages = (pagesToPrint, includeComments, includeAnnotations, maintainPageOrientation, printQuality, sortStrategy, clrMap, dateFormat, onProgress, isPrintCurrentView, language) => {\n  const createdPages = [];\n  pendingCanvases = [];\n  PRINT_QUALITY = printQuality;\n  colorMap = clrMap;\n\n  pagesToPrint.forEach(pageNumber => {\n    const printableAnnotationNotes = getPrintableAnnotationNotes(pageNumber);\n    createdPages.push(creatingImage(pageNumber, includeAnnotations, maintainPageOrientation, isPrintCurrentView));\n\n    if (onProgress) {\n      createdPages[createdPages.length - 1].then(htmlElement => {\n        onProgress(pageNumber, htmlElement);\n      });\n    }\n\n    if (includeComments && printableAnnotationNotes) {\n      const sortedNotes = getSortStrategies()[sortStrategy].getSortedNotes(printableAnnotationNotes);\n      if (sortedNotes.length) {\n        createdPages.push(creatingNotesPage(sortedNotes, pageNumber, dateFormat, language));\n      }\n      if (onProgress) {\n        createdPages[createdPages.length - 1].then(htmlElement => {\n          onProgress(pageNumber, htmlElement);\n        });\n      }\n    }\n  });\n\n  return createdPages;\n};\n\nexport const printPages = pages => {\n  const printHandler = document.getElementById('print-handler');\n  printHandler.innerHTML = '';\n\n  const fragment = document.createDocumentFragment();\n  pages.forEach(page => {\n    fragment.appendChild(page);\n  });\n\n  printHandler.appendChild(fragment);\n\n  if (isSafari && !(isChromeOniOS || isFirefoxOniOS)) {\n    // Print for Safari browser. Makes Safari 11 consistently work.\n    document.execCommand('print');\n  } else {\n    // It looks like both Chrome and Firefox (on iOS) use the top window as target for window.print instead of the frame where it was triggered,\n    // so we need to teleport the print handler div to the top parent and inject some CSS to make it print nicely.\n    // This can be removed when Chrome and Firefox for iOS respect the origin frame as the actual target for window.print\n    if (isChromeOniOS || isFirefoxOniOS) {\n      if (window.parent.document.getElementById('print-handler')) {\n        window.parent.document.getElementById('print-handler').remove();\n      }\n      window.parent.document.body.appendChild(printHandler.cloneNode(true));\n\n      if (!window.parent.document.getElementById('print-handler-css')) {\n        const style = window.parent.document.createElement('style');\n        style.id = 'print-handler-css';\n\n        style.textContent = `\n          #print-handler {\n            display: none;\n          }\n\n          @media print {\n            * {\n              display: none! important;\n            }\n\n            html {\n              height: 100%;\n              display: block! important;\n            }\n\n            body {\n              height: 100%;\n              display: block! important;\n              overflow: visible !important;\n              padding: 0;\n            }\n\n            #print-handler {\n              display: block !important;\n              height: 100%;\n              padding: 0;\n              top: 0;\n              bottom: 0;\n              left: 0;\n              right: 0;\n              position: absolute;\n            }\n\n            #print-handler img {\n              display: block !important;\n              max-width: 100%;\n              max-height: 100%;\n              height: 100%;\n              width: 100%;\n              object-fit: contain;\n              page-break-after: always;\n              padding: 0;\n              margin: 0;\n            }\n\n            #print-handler .page__container {\n              box-sizing: border-box;\n              display: flex !important;\n              flex-direction: column;\n              padding: 10px;\n              min-height: 100%;\n              min-width: 100%;\n              font-size: 10px;\n            }\n\n            #print-handler .page__container .page__header {\n              display: block !important;\n              align-self: flex-start;\n              font-size: 2rem;\n              margin-bottom: 2rem;\n              padding-bottom: 0.6rem;\n              border-bottom: 0.1rem solid black;\n            }\n\n            #print-handler .page__container .note {\n              display: flex !important;\n              flex-direction: column;\n              padding: 0.6rem;\n              border: 0.1rem lightgray solid;\n              border-radius: 0.4rem;\n              margin-bottom: 0.5rem;\n            }\n\n            #print-handler .page__container .note .note__info {\n              display: block !important;\n              font-size: 1.3rem;\n              margin-bottom: 0.1rem;\n            }\n\n            #print-handler .page__container .note .note__info--with-icon {\n              display: flex !important;\n            }\n\n            #print-handler .page__container .note .note__info--with-icon .note__icon {\n              display: block !important;\n              width: 1.65rem;\n              height: 1.65rem;\n              margin-top: -0.1rem;\n              margin-right: 0.2rem;\n            }\n\n            #print-handler .page__container .note .note__info--with-icon .note__icon path:not([fill=none]) {\n              display: block !important;\n              fill: currentColor;\n            }\n\n            #print-handler .page__container .note .note__root .note__content {\n              display: block !important;\n              margin-left: 0.3rem;\n            }\n\n            #print-handler .page__container .note .note__root {\n              display: block !important;\n            }\n\n            #print-handler .page__container .note .note__info--with-icon .note__icon svg {\n              display: block !important;\n            }\n\n            #print-handler .page__container .note .note__reply {\n              display: block !important;\n              margin: 0.5rem 0 0 2rem;\n            }\n\n            #print-handler .page__container .note .note__content {\n              display: block !important;\n              font-size: 1.2rem;\n              margin-top: 0.1rem;\n            }\n\n            #app {\n              overflow: visible !important;\n            }\n\n            .App {\n              display: none !important;\n            }\n\n            html, body, #app {\n              max-width: none !important;\n            }\n          }\n      `;\n\n        window.parent.document.head.appendChild(style);\n      }\n    }\n\n    window.print();\n  }\n};\n\nexport const cancelPrint = () => {\n  const doc = core.getDocument();\n  pendingCanvases.forEach(id => doc.cancelLoadCanvas(id));\n};\n\nconst getPrintableAnnotationNotes = pageNumber =>\n  core\n    .getAnnotationsList()\n    .filter(\n      annotation =>\n        annotation.Listable &&\n        annotation.PageNumber === pageNumber &&\n        !annotation.isReply() &&\n        !annotation.isGrouped() &&\n        annotation.Printable,\n    );\n\nconst creatingImage = (pageNumber, includeAnnotations, maintainPageOrientation, isPrintCurrentView) =>\n  new Promise(resolve => {\n    const pageIndex = pageNumber - 1;\n    let zoom = 1;\n    let renderRect;\n    const printRotation = getPrintRotation(pageIndex, maintainPageOrientation);\n    const onCanvasLoaded = async canvas => {\n      pendingCanvases = pendingCanvases.filter(pendingCanvas => pendingCanvas !== id);\n      positionCanvas(canvas, pageIndex);\n      let printableAnnotInfo = [];\n      if (!includeAnnotations) {\n        // according to Adobe, even if we exclude annotations, it will still draw widget annotations\n        const annotatationsToPrint = core.getAnnotationsList().filter(annotation => {\n          return annotation.PageNumber === pageNumber && !(annotation instanceof window.Annotations.WidgetAnnotation);\n        });\n        // store the previous Printable value so that we can set it back later\n        printableAnnotInfo = annotatationsToPrint.map(annotation => ({\n          annotation, printable: annotation.Printable\n        }));\n        // set annotations to false so that it won't show up in the printed page\n        annotatationsToPrint.forEach(annotation => {\n          annotation.Printable = false;\n        });\n      }\n\n      if (core.getDocumentViewer().isGrayscaleModeEnabled()) {\n        const ctx = canvas.getContext('2d');\n        ctx.globalCompositeOperation = 'color';\n        ctx.fillStyle = 'white';\n        ctx.globalAlpha = 1;\n        ctx.fillRect(0, 0, canvas.width, canvas.height);\n        ctx.globalCompositeOperation = 'source-over';\n      }\n\n      await drawAnnotationsOnCanvas(canvas, pageNumber);\n\n      printableAnnotInfo.forEach(info => {\n        info.annotation.Printable = info.printable;\n      });\n\n      const img = document.createElement('img');\n      img.src = canvas.toDataURL();\n      img.onload = () => {\n        resolve(img);\n      };\n    };\n\n    if (isPrintCurrentView) {\n      const displayMode = core.getDisplayModeObject();\n      const containerElement = core.getScrollViewElement();\n      const documentElement = core.getViewerElement();\n      const headerElement = document.querySelector('.Header');\n      const headerItemsElements = document.querySelector('.HeaderToolsContainer');\n\n      const headerHeight = headerElement?.clientHeight + headerItemsElements?.clientHeight;\n      const coordinates = [];\n      coordinates[0] = displayMode.windowToPageNoRotate({\n        x: Math.max(containerElement.scrollLeft, documentElement.offsetLeft),\n        y: Math.max(containerElement.scrollTop + headerHeight, 0)\n      }, pageNumber);\n      coordinates[1] = displayMode.windowToPageNoRotate({\n        x: Math.min(window.innerWidth, documentElement.offsetLeft + documentElement.offsetWidth) + containerElement.scrollLeft,\n        y: window.innerHeight + containerElement.scrollTop\n      }, pageNumber);\n      const x1 = Math.min(coordinates[0].x, coordinates[1].x);\n      const y1 = Math.min(coordinates[0].y, coordinates[1].y);\n      const x2 = Math.max(coordinates[0].x, coordinates[1].x);\n      const y2 = Math.max(coordinates[0].y, coordinates[1].y);\n\n      zoom = core.getZoom();\n      renderRect = { x1, y1, x2, y2 };\n    }\n\n    const id = core.getDocument().loadCanvas({\n      pageNumber,\n      zoom,\n      pageRotation: printRotation,\n      drawComplete: onCanvasLoaded,\n      multiplier: PRINT_QUALITY,\n      'print': true,\n      renderRect\n    });\n    pendingCanvases.push(id);\n  });\n\nconst creatingNotesPage = (annotations, pageNumber, dateFormat, language) =>\n  new Promise(resolve => {\n    const container = document.createElement('div');\n    container.className = 'page__container';\n\n    const header = document.createElement('div');\n    header.className = 'page__header';\n    header.innerHTML = `${i18n.t('option.shared.page')} ${pageNumber}`;\n\n    container.appendChild(header);\n    annotations.forEach(annotation => {\n      const note = getNote(annotation, dateFormat, language);\n\n      container.appendChild(note);\n    });\n\n    resolve(container);\n  });\n\nconst getPrintRotation = (pageIndex, maintainPageOrientation) => {\n  if (!maintainPageOrientation) {\n    const { width, height } = core.getPageInfo(pageIndex + 1);\n    const documentRotation = getDocumentRotation(pageIndex);\n    let printRotation = (4 - documentRotation) % 4;\n\n    // automatically rotate pages so that they fill up as much of the printed page as possible\n    if (printRotation % 2 === 0 && width > height) {\n      printRotation++;\n    } else if (printRotation % 2 === 1 && height > width) {\n      printRotation--;\n    }\n    return printRotation;\n  }\n\n  return window.documentViewer.getRotation(pageIndex + 1);\n};\n\nconst positionCanvas = (canvas, pageIndex) => {\n  const { width, height } = core.getPageInfo(pageIndex + 1);\n  const documentRotation = getDocumentRotation(pageIndex);\n  const ctx = canvas.getContext('2d');\n\n  const printRotation = (4 - documentRotation) % 4;\n  // To check if automatic print rotation will be applied\n  const isAutoRotated = ((printRotation % 2 === 0 && width > height) || (printRotation % 2 === 1 && height > width));\n\n  // If this is pdf js and auto rotated, apply different transform\n  if (window.utils.isPdfjs && isAutoRotated) {\n    switch (documentRotation) {\n      case 0:\n        ctx.translate(height, 0);\n        ctx.rotate((90 * Math.PI) / 180);\n        break;\n      case 1:\n        ctx.translate(0, height);\n        ctx.rotate((270 * Math.PI) / 180);\n        break;\n      case 2:\n        ctx.translate(height, 0);\n        ctx.rotate((-270 * Math.PI) / 180);\n        break;\n      case 3:\n        ctx.translate(0, height);\n        ctx.rotate((270 * Math.PI) / 180);\n        break;\n    }\n  } else if (!window.utils.isPdfjs) {\n    switch (documentRotation) {\n      case 1:\n        ctx.translate(width, 0);\n        break;\n      case 2:\n        ctx.translate(width, height);\n        break;\n      case 3:\n        ctx.translate(0, height);\n        break;\n    }\n    ctx.rotate((documentRotation * 90 * Math.PI) / 180);\n  }\n};\n\nconst drawAnnotationsOnCanvas = (canvas, pageNumber) => {\n  if (core.getDocumentViewer().isGrayscaleAnnotationsModeEnabled()) {\n    const ctx = canvas.getContext('2d');\n    ctx.filter = 'grayscale(1)';\n  }\n\n  const widgetAnnotations = core\n    .getAnnotationsList()\n    .filter(annotation => annotation.PageNumber === pageNumber && annotation instanceof window.Annotations.WidgetAnnotation);\n  // just draw markup annotations\n  if (widgetAnnotations.length === 0) {\n    return core.drawAnnotations(pageNumber, canvas);\n  }\n  // draw all annotations\n  const widgetContainer = createWidgetContainer(pageNumber - 1);\n  return core.drawAnnotations(pageNumber, canvas, true, widgetContainer).then(() => {\n    document.body.appendChild(widgetContainer);\n    return import(/* webpackChunkName: 'html2canvas' */ 'html2canvas').then(({ default: html2canvas }) => {\n      return html2canvas(widgetContainer, {\n        canvas,\n        backgroundColor: null,\n        scale: 1,\n        logging: false,\n      }).then(() => {\n        document.body.removeChild(widgetContainer);\n      });\n    });\n  });\n};\n\nconst getDocumentRotation = pageIndex => {\n  const pageNumber = pageIndex + 1;\n  const completeRotation = core.getCompleteRotation(pageNumber);\n  const viewerRotation = core.getRotation(pageNumber);\n\n  return (completeRotation - viewerRotation + 4) % 4;\n};\n\nconst getNote = (annotation, dateFormat, language) => {\n  const note = document.createElement('div');\n  note.className = 'note';\n\n  const noteRoot = document.createElement('div');\n  noteRoot.className = 'note__root';\n\n  const noteRootInfo = document.createElement('div');\n  noteRootInfo.className = 'note__info--with-icon';\n\n  const noteIcon = getNoteIcon(annotation);\n\n  noteRootInfo.appendChild(noteIcon);\n  noteRootInfo.appendChild(getNoteInfo(annotation, dateFormat, language));\n  noteRoot.appendChild(noteRootInfo);\n  noteRoot.appendChild(getNoteContent(annotation));\n\n  note.appendChild(noteRoot);\n  annotation.getReplies().forEach(reply => {\n    const noteReply = document.createElement('div');\n    noteReply.className = 'note__reply';\n    noteReply.appendChild(getNoteInfo(reply, dateFormat, language));\n    noteReply.appendChild(getNoteContent(reply));\n\n    note.appendChild(noteReply);\n  });\n\n  return note;\n};\n\nconst getNoteIcon = annotation => {\n  const key = mapAnnotationToKey(annotation);\n  const iconColor = colorMap[key] && colorMap[key].iconColor;\n  const icon = getDataWithKey(key).icon;\n  const isBase64 = icon && icon.trim().indexOf('data:') === 0;\n\n  let noteIcon;\n  if (isBase64) {\n    noteIcon = document.createElement('img');\n    noteIcon.src = icon;\n  } else {\n    let innerHTML;\n    if (icon) {\n      const isInlineSvg = icon.indexOf('<svg') === 0;\n      /* eslint-disable global-require */\n      innerHTML = isInlineSvg ? icon : require(`../../assets/icons/${icon}.svg`);\n    } else {\n      innerHTML = annotation.Subject;\n    }\n\n    noteIcon = document.createElement('div');\n    noteIcon.innerHTML = innerHTML;\n  }\n\n  noteIcon.className = 'note__icon';\n  noteIcon.style.color = iconColor && annotation[iconColor].toHexString();\n  return noteIcon;\n};\n\nconst getNoteInfo = (annotation, dateFormat, language) => {\n  const info = document.createElement('div');\n  let date = dayjs(annotation.DateCreated).format(dateFormat);\n\n  if (language) {\n    date = dayjs(annotation.DateCreated).locale(language).format(dateFormat);\n  }\n\n  info.className = 'note__info';\n  if (annotation.Subject === '' || annotation.Subject === null || annotation.Subject === undefined) {\n    info.innerHTML = `\n      ${i18n.t('option.printInfo.author')}: ${core.getDisplayAuthor(annotation['Author']) || ''} &nbsp;&nbsp;\n      ${i18n.t('option.printInfo.date')}: ${date}\n    `;\n  } else {\n    info.innerHTML = `\n      ${i18n.t('option.printInfo.author')}: ${core.getDisplayAuthor(annotation['Author']) || ''} &nbsp;&nbsp;\n      ${i18n.t('option.printInfo.subject')}: ${annotation.Subject} &nbsp;&nbsp;\n      ${i18n.t('option.printInfo.date')}: ${date}\n    `;\n  }\n\n  return info;\n};\n\nconst getNoteContent = annotation => {\n  const contentElement = document.createElement('div');\n  const contentText = annotation.getContents();\n\n  contentElement.className = 'note__content';\n  if (contentText) {\n    // ensure that new lines are preserved and rendered properly\n    contentElement.style.whiteSpace = 'pre-wrap';\n    contentElement.innerHTML = `${contentText}`;\n  }\n  return contentElement;\n};\n\nconst createWidgetContainer = pageIndex => {\n  const { width, height } = core.getPageInfo(pageIndex + 1);\n  const widgetContainer = document.createElement('div');\n\n  widgetContainer.id = 'printWidgetContainer';\n  widgetContainer.style.width = width;\n  widgetContainer.style.height = height;\n  widgetContainer.style.position = 'relative';\n  widgetContainer.style.top = '-10000px';\n\n  return widgetContainer;\n};\n","import core from 'core';\n\nexport default toolName => {\n  const tool = core.getTool(toolName);\n  const ToolNames = window.Core.Tools.ToolNames;\n\n\n  const isHighlightTool =\n    tool?.name === ToolNames.HIGHLIGHT ||\n    tool?.name === ToolNames.HIGHLIGHT2 ||\n    tool?.name === ToolNames.HIGHLIGHT3 ||\n    tool?.name === ToolNames.HIGHLIGHT4;\n  if (isHighlightTool && !core.isBlendModeSupported('multiply')) {\n    tool.defaults.Opacity = null;\n  }\n\n  // widget don't support opacity\n  if (tool?.name.includes(ToolNames.TEXT_FORM_FIELD)) {\n    tool.defaults.Opacity = null;\n  }\n\n  return tool?.defaults;\n};\n","import core from 'core';\nimport getToolStyles from 'helpers/getToolStyles';\nimport { mapAnnotationToToolName } from 'constants/map';\nimport actions from 'actions';\n\nexport default (dispatch, annotationConstructor) => {\n  const annotations = createTextAnnotation(annotationConstructor);\n\n  core.clearSelection();\n  core.addAnnotations(annotations);\n  core.selectAnnotations(annotations);\n  dispatch(actions.closeElement('textPopup'));\n};\n\n\nconst createTextAnnotation = annotationConstructor => {\n  const annotations = [];\n  const quads = core.getSelectedTextQuads();\n\n  Object.keys(quads).forEach(pageNumber => {\n    pageNumber = parseInt(pageNumber, 10);\n    const annotation = createAnnotation(annotationConstructor, pageNumber, quads);\n\n    if (window.Core.Tools.TextAnnotationCreateTool.AUTO_SET_TEXT && !(annotation instanceof window.Annotations.RedactionAnnotation)) {\n      annotation.setContents(core.getSelectedText(pageNumber));\n    }\n\n    annotation.setCustomData('trn-annot-preview', core.getSelectedText(pageNumber));\n\n    if (annotation instanceof window.Annotations.RedactionAnnotation) {\n      setRedactionStyle(annotation);\n      annotation.IsText = true;\n    }\n\n    setAnnotationStyle(annotation);\n\n    annotations.push(annotation);\n  });\n\n  return annotations;\n};\n\nconst createAnnotation = (annotationConstructor, pageNumber, quads) => {\n  const annotation = new annotationConstructor();\n\n  annotation.PageNumber = pageNumber;\n  annotation.Quads = quads[pageNumber];\n  annotation.Author = core.getCurrentUser();\n  return annotation;\n};\n\nconst setAnnotationStyle = annotation => {\n  const toolName = mapAnnotationToToolName(annotation);\n\n  if (toolName) {\n    const newStyles = getToolStyles(toolName);\n    Object.keys(newStyles).forEach(property => {\n      annotation[property] = newStyles[property];\n    });\n  }\n};\n\nconst setRedactionStyle = annotation => {\n  const { AnnotationCreateRedaction: { defaults: style = {} } } = core.getToolModeMap();\n\n  if (style) {\n    if (style.StrokeColor) {\n      const color = style.StrokeColor;\n      annotation.StrokeColor = new window.Annotations.Color(color['R'], color['G'], color['B'], color['A']);\n    }\n    if (style.StrokeThickness) {\n      annotation.StrokeThickness = style['StrokeThickness'];\n    }\n    if (style.FillColor) {\n      const fillColor = style.FillColor;\n      annotation.FillColor = new window.Annotations.Color(fillColor['R'], fillColor['G'], fillColor['B'], fillColor['A']);\n    }\n  }\n};","import core from 'core';\n\nexport default () => {\n  const freetextAnnots = core.getAnnotationsList().filter(annot => annot instanceof window.Annotations.FreeTextAnnotation);\n  const isEditingFreetext = freetextAnnots.some(annot => annot.getEditor()?.hasFocus());\n  const { activeElement } = document;\n\n  return (\n    activeElement instanceof window.HTMLInputElement ||\n    activeElement instanceof window.HTMLTextAreaElement ||\n    activeElement.className.includes('ql-editor') ||\n    isEditingFreetext ||\n    (activeElement?.tagName?.toLowerCase() === 'input' && activeElement?.getAttribute('type') === 'text') ||\n    activeElement?.tagName?.toLowerCase() === 'textarea'\n  );\n};\n","import core from 'core';\n\nexport default () => {\n  const mapDisplayModeToNumberOfPages = {\n    Single: 1,\n    Continuous: 1,\n    Facing: 2,\n    FacingContinuous: 2,\n    CoverFacing: 2,\n    Cover: 2,\n  };\n\n  return mapDisplayModeToNumberOfPages[core.getDisplayMode()] || 1;\n};\n","import core from 'core';\n\nexport default nextPageNumber => {\n  const totalPageNumber = core.getTotalPages();\n  const currPageNumber = core.getCurrentPage();\n\n  let nextPage = Math.min(totalPageNumber, nextPageNumber);\n  nextPage = Math.max(1, nextPage);\n\n  if (nextPage !== currPageNumber) {\n    core.setCurrentPage(nextPage);\n  }\n};\n","import hotkeys from 'hotkeys-js';\n\nimport core from 'core';\nimport { isMac, isMobile } from 'helpers/device';\nimport openFilePicker from 'helpers/openFilePicker';\nimport copyText from 'helpers/copyText';\nimport setToolModeAndGroup from 'helpers/setToolModeAndGroup';\nimport { zoomIn, zoomOut } from 'helpers/zoom';\nimport { print } from 'helpers/print';\nimport createTextAnnotationAndSelect from 'helpers/createTextAnnotationAndSelect';\nimport isFocusingElement from 'helpers/isFocusingElement';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport setCurrentPage from 'helpers/setCurrentPage';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\n// prettier-ignore\nconst keyMap = {\n  'arrow': 'A',\n  'callout': 'C',\n  'copy': 'Control+C',\n  'delete': 'Delete',\n  'ellipse': 'O',\n  'eraser': 'E',\n  'freehand': 'F',\n  'freetext': 'T',\n  'highlight': 'H',\n  'line': 'L',\n  'pan': 'P',\n  'rectangle': 'R',\n  'rotateClockwise': 'Control+Shift+=',\n  'rotateCounterClockwise': 'Control+Shift+-',\n  'select': 'Escape',\n  'signature': 'S',\n  'squiggly': 'G',\n  'image': 'I',\n  'redo': 'Control+Shift+Z',\n  'undo': 'Control+Z',\n  'stickyNote': 'N',\n  'strikeout': 'K',\n  'underline': 'U',\n  'zoomIn': 'Control+=',\n  'zoomOut': 'Control+-',\n  'richText.bold': 'Control+B',\n  'richText.italic': 'Control+I',\n  'richText.underline': 'Control+U',\n  'richText.strikeout': 'Control+K',\n};\n\nexport function shortcutAria(shortcut) {\n  let aria = keyMap[shortcut];\n  if (aria) {\n    if (isMac) {\n      aria = aria.replace('Control', 'Meta');\n    }\n    return aria;\n  }\n\n  return undefined;\n}\n\nconst NOOP = () => {};\n\n/**\n * Available hotkeys that can be passed to {@link UI.Hotkeys#on instance.UI.hotkeys.on} or {@link UI.Hotkeys#off instance.UI.hotkeys.off}. <br/><br/>\n * @name UI.Hotkeys.Keys\n * @enum {string}\n * @property {string} CTRL_SHIFT_EQUAL Rotate the document clockwise\n * @property {string} COMMAND_SHIFT_EQUAL Rotate the document clockwise\n * @property {string} CTRL_SHIFT_MINUS Rotate the document counterclockwise\n * @property {string} COMMAND_SHIFT_MINUS Rotate the document counterclockwise\n * @property {string} CTRL_C Copy selected text or annotations\n * @property {string} COMMAND_C Copy selected text or annotations\n * @property {string} CTRL_V Paste text or annotations\n * @property {string} COMMAND_V Paste text or annotations\n * @property {string} CTRL_Z Undo an annotation change\n * @property {string} COMMAND_Z Undo an annotation change\n * @property {string} CTRL_Y Redo an annotation change\n * @property {string} COMMAND_SHIFT_Z Redo an annotation change\n * @property {string} CTRL_O Open the file picker\n * @property {string} COMMAND_O Open the file picker\n * @property {string} CTRL_F Open the search overlay\n * @property {string} COMMAND_F Open the search overlay\n * @property {string} CTRL_EQUAL Zoom in\n * @property {string} COMMAND_EQUAL Zoom in\n * @property {string} CTRL_MINUS Zoom out\n * @property {string} COMMAND_MINUS Zoom out\n * @property {string} CTRL_0 Fit the document to the screen width in a small screen(< 640px), otherwise fit it to its original size\n * @property {string} COMMAND_0 Fit the document to the screen width in a small screen(< 640px), otherwise fit it to its original size\n * @property {string} CTRL_P Print\n * @property {string} COMMAND_P Print\n * @property {string} PAGE_UP Go to the previous page\n * @property {string} PAGE_DOWN Go to the next page\n * @property {string} UP Go to the previous page in single layout mode (ArrowUp)\n * @property {string} DOWN Go to the next page in single layout mode (ArrowDown)\n * @property {string} SPACE Hold to switch to Pan mode and release to return to previous tool\n * @property {string} ESCAPE Select the AnnotationEdit tool\n * @property {string} P Select the Pan tool\n * @property {string} A Select the AnnotationCreateArrow tool\n * @property {string} C Select the AnnotationCreateCallout tool\n * @property {string} E Select the AnnotationEraserTool tool\n * @property {string} F Select the AnnotationCreateFreeHand tool\n * @property {string} I Select the AnnotationCreateStamp tool\n * @property {string} L Select the AnnotationCreateLine tool\n * @property {string} N Select the AnnotationCreateSticky tool\n * @property {string} O Select the AnnotationCreateEllipse tool\n * @property {string} R Select the AnnotationCreateRectangle tool\n * @property {string} T Select the AnnotationCreateFreeText tool\n * @property {string} S Open the signature modal or the overlay\n * @property {string} G Select the AnnotationCreateTextSquiggly tool\n * @property {string} H Select the AnnotationCreateTextHighlight tool\n * @property {string} K Select the AnnotationCreateTextStrikeout tool\n * @property {string} U Select the AnnotationCreateTextUnderline tool\n */\nexport const Keys = {\n  CTRL_SHIFT_EQUAL: 'ctrl+shift+=',\n  COMMAND_SHIFT_EQUAL: 'command+shift+=',\n  CTRL_SHIFT_MINUS: 'ctrl+shift+-',\n  COMMAND_SHIFT_MINUS: 'command+shift+-',\n  CTRL_C: 'ctrl+c',\n  COMMAND_C: 'command+c',\n  CTRL_V: 'ctrl+v',\n  COMMAND_V: 'command+v',\n  CTRL_Z: 'ctrl+z',\n  COMMAND_Z: 'command+z',\n  CTRL_Y: 'ctrl+y',\n  COMMAND_SHIFT_Z: 'command+shift+z',\n  CTRL_O: 'ctrl+o',\n  COMMAND_O: 'command+o',\n  CTRL_F: 'ctrl+f',\n  COMMAND_F: 'command+f',\n  CTRL_EQUAL: 'ctrl+=',\n  COMMAND_EQUAL: 'command+=',\n  CTRL_MINUS: 'ctrl+-',\n  COMMAND_MINUS: 'command+-',\n  CTRL_0: 'ctrl+0',\n  COMMAND_0: 'command+0',\n  CTRL_P: 'ctrl+p',\n  COMMAND_P: 'command+p',\n  ENTER: 'enter',\n  PAGE_UP: 'pageup',\n  PAGE_DOWN: 'pagedown',\n  UP: 'up',\n  DOWN: 'down',\n  SPACE: 'space',\n  ESCAPE: 'escape',\n  P: 'p',\n  A: 'a',\n  C: 'c',\n  E: 'e',\n  F: 'f',\n  I: 'i',\n  L: 'l',\n  N: 'n',\n  O: 'o',\n  R: 'r',\n  Q: 'q',\n  T: 't',\n  S: 's',\n  G: 'g',\n  H: 'h',\n  K: 'k',\n  U: 'u',\n};\n\nexport function concatKeys(...keys) {\n  return keys.join(', ');\n}\n\nconst unbindedHotkeysMap = {};\n\n/**\n * A class which contains hotkeys APIs.<br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> You must NOT instantiate this yourself. Access instances of this class using {@link UI.hotkeys instance.UI.hotkeys}\n * @namespace Hotkeys\n * @memberof UI\n */\nconst HotkeysManager = {\n  initialize(store) {\n    // still allow hotkeys when focusing a textarea or an input\n    hotkeys.filter = () => true;\n    this.store = store;\n    this.keyHandlerMap = this.createKeyHandlerMap(store);\n    this.prevToolName = null;\n    Object.keys(this.keyHandlerMap).forEach(key => {\n      this.on(key, this.keyHandlerMap[key]);\n    });\n    this.didInitializeAllKeys = true;\n  },\n  /**\n   * Add an event handler for the given hotkey\n   * @method UI.Hotkeys.on\n   * @param {string|UI.Hotkeys.Keys} key A keyboard key <br/>\n   * If a hotkey is consisted of more than one key. Those keys should be connected using '+'.\n   * @param {function|object} [handler] An optional argument <br/>\n   * If it is undefined, the default handler of the given key will be registered <br/>\n   * If it is an function, it will be called on key down <br/>\n   * If it is an object, it should have the shape of { keydown: func1, keyup: func2 }. Func1 will be called on keydown while func2 will be called on keyup\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    const { UI } = instance;\n      // this will register the default zoom in handler\n      UI.hotkeys.on(UI.hotkeys.Keys.CTRL_EQUAL);\n      UI.hotkeys.on(UI.hotkeys.Keys.COMMAND_EQUAL);\n\n      // this will be called on keydown\n      UI.hotkeys.on('ctrl+d, command+d', e => {\n        e.preventDefault();\n        instance.Core.documentViewer.closeDocument();\n      });\n\n      UI.hotkeys.on('ctrl+g', {\n        keydown: e => {\n          console.log('ctrl+g is pressed!');\n        },\n        keyup: e => {\n          console.log('ctrl+g is released!')\n        },\n      });\n  });\n   */\n  on(key, handler) {\n    const isToolName = !!core.getToolModeMap()[key];\n    if (isToolName) {\n      key = this.getHotkeyByToolName(key);\n    }\n\n    if (!handler) {\n      handler = this.keyHandlerMap[key];\n    }\n\n    function enableHotkey(_key, _handler) {\n      // https://github.com/jaywcjlove/hotkeys#defining-shortcuts\n      const { keyup = NOOP, keydown = _handler } = _handler;\n      hotkeys(_key, { keyup: true }, e => {\n        if (e.type === 'keyup') {\n          keyup(e);\n        }\n        if (e.type === 'keydown') {\n          keydown(e);\n        }\n      });\n    }\n\n    if ((!key || !handler) && !this.didInitializeAllKeys) {\n      this.keyHandlerMap = this.createKeyHandlerMap(this.store);\n      this.prevToolName = null;\n      Object.keys(this.keyHandlerMap).forEach(_key => {\n        // Check if the \"key\" has already been inilized\n        if (!unbindedHotkeysMap[_key]) {\n          enableHotkey(_key, this.keyHandlerMap[_key]);\n        }\n      });\n      this.didInitializeAllKeys = true;\n    }\n\n    // when key is undefined we need to set all keys to true\n    if (!key) {\n      for (const property in Keys) {\n        unbindedHotkeysMap[Keys[property]] = true;\n      }\n    } else {\n      unbindedHotkeysMap[key.toLocaleLowerCase()] = true;\n    }\n\n    if (!key || !handler) {\n      return;\n    }\n\n    enableHotkey(key, handler);\n  },\n  /**\n   * Remove an event handler for the given hotkey\n   * @method UI.Hotkeys.off\n   * @param {string|UI.Hotkeys.Keys} [key] An optional keyboard key. If not passed, all handlers will be removed\n   * @param {function} [handler] An optional function. If not passed, all handlers of the given key will be removed\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n      // this will remove all handlers for ctrl = and command =\n      instance.UI.hotkeys.off(instance.UI.hotkeys.Keys.CTRL_EQUAL);\n      instance.UI.hotkeys.off(instance.UI.hotkeys.Keys.COMMAND_EQUAL);\n  });\n   */\n  off(key, handler) {\n    const isToolName = !!core.getToolModeMap()[key];\n    if (isToolName) {\n      key = this.getHotkeyByToolName(key);\n\n      // need to return here otherwise all the handlers will be removed\n      // if the tool name doesn't have a corresponding hotkey\n      if (!key) {\n        return;\n      }\n    }\n\n    // when key is undefined hotkeysjs unbinds all handler\n    // here we need to flag all keys too\n    if (!key) {\n      for (const property in Keys) {\n        unbindedHotkeysMap[Keys[property]] = false;\n      }\n      this.didInitializeAllKeys = false;\n    } else {\n      unbindedHotkeysMap[key.toLocaleLowerCase()] = false;\n    }\n\n    // https://github.com/jaywcjlove/hotkeys#unbind\n    hotkeys.unbind(key, handler);\n  },\n\n  isActive(shortcut) {\n    const key = keyMap[shortcut];\n    if (key) {\n      let hotkeyName;\n      // change 'ctrl' to 'command' for Mac OS\n      if (isMac) {\n        hotkeyName = key.replace('Control', 'command').toLocaleLowerCase();\n      } else {\n        hotkeyName = key.replace('Control', 'ctrl').toLocaleLowerCase();\n      }\n      return unbindedHotkeysMap[hotkeyName];\n    }\n    return true;\n  },\n\n  createKeyHandlerMap(store) {\n    const { dispatch, getState } = store;\n\n    return {\n      [`${Keys.CTRL_SHIFT_EQUAL}, ${Keys.COMMAND_SHIFT_EQUAL}`]: e => {\n        e.preventDefault();\n        core.rotateClockwise();\n      },\n      [`${Keys.CTRL_SHIFT_MINUS}, ${Keys.COMMAND_SHIFT_MINUS}`]: e => {\n        e.preventDefault();\n        core.rotateCounterClockwise();\n      },\n      [`${Keys.CTRL_C}, ${Keys.COMMAND_C}`]: () => {\n        if (core.getSelectedText()) {\n          copyText();\n          dispatch(actions.closeElement('textPopup'));\n        } else if (core.getSelectedAnnotations().length) {\n          core.updateCopiedAnnotations();\n        }\n      },\n      [`${Keys.CTRL_V}, ${Keys.COMMAND_V}`]: e => {\n        if (!isFocusingElement()) {\n          e.preventDefault();\n          core.pasteCopiedAnnotations();\n        }\n      },\n      [`${Keys.CTRL_Z}, ${Keys.COMMAND_Z}`]: e => {\n        if (!isFocusingElement()) {\n          e.preventDefault();\n          core.undo();\n        }\n      },\n      [`${Keys.CTRL_Y}, ${Keys.COMMAND_SHIFT_Z}`]: e => {\n        if (!isFocusingElement()) {\n          e.preventDefault();\n          core.redo();\n        }\n      },\n      [`${Keys.CTRL_O}, ${Keys.COMMAND_O}`]: e => {\n        e.preventDefault();\n        openFilePicker();\n      },\n      [concatKeys(Keys.CTRL_F, Keys.COMMAND_F)]: e => {\n        e.preventDefault();\n\n        const isNotesPanelOpen = selectors.isElementOpen(getState(), 'notesPanel');\n        if (isNotesPanelOpen) {\n          dispatch(actions.closeElement('notesPanel'));\n        }\n\n        const isRedactionPanelOpen = selectors.isElementOpen(getState(), 'redactionPanel');\n        if (isRedactionPanelOpen) {\n          dispatch(actions.closeElement('redactionPanel'));\n        }\n\n        const isWv3dPropertiesPanelOpen = selectors.isElementOpen(getState(), 'wv3dPropertiesPanel');\n        if (isWv3dPropertiesPanelOpen) {\n          dispatch(actions.closeElement('wv3dPropertiesPanel'));\n        }\n\n        dispatch(actions.toggleElement('searchPanel'));\n      },\n      [`${Keys.CTRL_EQUAL}, ${Keys.COMMAND_EQUAL}`]: e => {\n        e.preventDefault();\n        zoomIn();\n      },\n      [`${Keys.CTRL_MINUS}, ${Keys.COMMAND_MINUS}`]: e => {\n        e.preventDefault();\n        zoomOut();\n      },\n      [`${Keys.CTRL_0}, ${Keys.COMMAND_0}`]: e => {\n        e.preventDefault();\n\n        if (isMobile) {\n          core.fitToWidth();\n        } else {\n          core.fitToPage();\n        }\n      },\n      [concatKeys(Keys.CTRL_P, Keys.COMMAND_P)]: e => {\n        e.preventDefault();\n\n        print(\n          dispatch,\n          selectors.isEmbedPrintSupported(getState()),\n          selectors.getSortStrategy(getState()),\n          selectors.getColorMap(getState()),\n        );\n      },\n      [`${Keys.PAGE_UP}`]: e => {\n        e.preventDefault();\n\n        setCurrentPage(core.getCurrentPage() - getNumberOfPagesToNavigate());\n      },\n      [`${Keys.PAGE_DOWN}`]: e => {\n        e.preventDefault();\n\n        setCurrentPage(core.getCurrentPage() + getNumberOfPagesToNavigate());\n      },\n      [`${Keys.UP}`]: () => {\n        if (isFocusingElement() || core.isContinuousDisplayMode()) {\n          return;\n        }\n\n        // do not call preventDefault else it will prevent scrolling\n        const scrollViewElement = core.getScrollViewElement();\n        const { scrollHeight, clientHeight } = scrollViewElement;\n        const reachedTop = scrollViewElement.scrollTop === 0;\n\n        if (reachedTop) {\n          const currentPage = core.getCurrentPage();\n          setCurrentPage(currentPage - getNumberOfPagesToNavigate());\n\n          // set the scrollbar to be at the bottom of the page only if the previous page is bigger than 1\n          if (currentPage > 1) {\n            scrollViewElement.scrollTop = scrollHeight - clientHeight;\n          }\n        }\n      },\n      [`${Keys.DOWN}`]: () => {\n        if (isFocusingElement() || core.isContinuousDisplayMode()) {\n          return;\n        }\n\n        // do not call preventDefault else it will prevent scrolling\n        const scrollViewElement = core.getScrollViewElement();\n        const { scrollTop, clientHeight, scrollHeight } = scrollViewElement;\n        const reachedBottom = Math.abs(scrollTop + clientHeight - scrollHeight) <= 1;\n        if (reachedBottom) {\n          setCurrentPage(core.getCurrentPage() + getNumberOfPagesToNavigate());\n        }\n      },\n      [`${Keys.SPACE}`]: {\n        keyup: this.createToolHotkeyHandler(e => {\n          e.preventDefault();\n\n          setToolModeAndGroup(store, this.prevToolName);\n          this.prevToolName = null;\n        }),\n        keydown: this.createToolHotkeyHandler(e => {\n          e.preventDefault();\n\n          if (core.getToolMode().name !== 'Pan') {\n            this.prevToolName = core.getToolMode().name;\n            setToolModeAndGroup(store, 'Pan');\n          }\n        }),\n      },\n      [`${Keys.ESCAPE}`]: e => {\n        e.preventDefault();\n        setToolModeAndGroup(store, 'AnnotationEdit', '');\n\n        dispatch(\n          actions.closeElements([\n            'annotationPopup',\n            'textPopup',\n            'contextMenuPopup',\n            'toolStylePopup',\n            'annotationStylePopup',\n            'signatureModal',\n            'customStampModal',\n            'printModal',\n            'rubberStampOverlay',\n            'contentEditModal',\n            'filterModal',\n          ]),\n        );\n      },\n      [`${Keys.P}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'Pan');\n      }),\n      [`${Keys.A}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateArrow');\n      }),\n      [`${Keys.C}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateCallout');\n      }),\n      [`${Keys.E}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationEraserTool');\n      }),\n      [`${Keys.F}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateFreeHand');\n      }),\n      [`${Keys.I}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateStamp');\n      }),\n      [`${Keys.L}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateLine');\n      }),\n      [`${Keys.N}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateSticky');\n      }),\n      [`${Keys.O}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateEllipse');\n      }),\n      [`${Keys.R}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateRectangle');\n      }),\n      [`${Keys.Q}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateRubberStamp');\n      }),\n      [`${Keys.T}`]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, 'AnnotationCreateFreeText');\n      }),\n      [`${Keys.S}`]: this.createToolHotkeyHandler(() => {\n        const sigToolButton = document.querySelector('[data-element=\"signatureToolButton\"] .Button');\n\n        sigToolButton?.click();\n      }),\n      [`${Keys.G}`]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Annotations.TextSquigglyAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextSquiggly');\n        }\n      }),\n      [`${Keys.H}`]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Annotations.TextHighlightAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextHighlight');\n        }\n      }),\n      [`${Keys.K}`]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Annotations.TextStrikeoutAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextStrikeout');\n        }\n      }),\n      [`${Keys.U}`]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Annotations.TextUnderlineAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextUnderline');\n        }\n      }),\n    };\n  },\n  /**\n   * Returns a function that will be used as a handler to a hotkey\n   * @param {func} handler a function that only gets called when no textarea or input elements are focused\n   * @ignore\n   */\n  createToolHotkeyHandler(handler) {\n    const { getState } = this.store;\n\n    return (...args) => {\n      const openElements = selectors.getOpenElements(getState());\n      const currentToolName = core.getToolMode().name;\n\n      // disable changing tool when the signature overlay is opened.\n      const isSignatureModalOpen =\n        currentToolName === window.Core.Tools.ToolNames.SIGNATURE && openElements['signatureModal'];\n\n      if (isFocusingElement() || isSignatureModalOpen) {\n        return;\n      }\n\n      handler(...args);\n    };\n  },\n  getHotkeyByToolName(toolName) {\n    const map = {\n      AnnotationEdit: 'escape',\n      Pan: 'p',\n      AnnotationCreateArrow: 'a',\n      AnnotationCreateCallout: 'c',\n      AnnotationEraserTool: 'e',\n      AnnotationCreateFreeHand: 'f',\n      AnnotationCreateStamp: 'i',\n      AnnotationCreateLine: 'l',\n      AnnotationCreateSticky: 'n',\n      AnnotationCreateEllipse: 'o',\n      AnnotationCreateRectangle: 'r',\n      AnnotationCreateFreeText: 't',\n      AnnotationCreateSignature: 's',\n      AnnotationCreateTextSquiggly: 'g',\n      AnnotationCreateTextHighlight: 'h',\n      AnnotationCreateTextStrikeout: 'k',\n      AnnotationCreateTextUnderline: 'u',\n      AnnotationCreateRubberStamp: 'q',\n    };\n\n    return map[toolName];\n  },\n};\n\nexport default Object.create(HotkeysManager);\n","import React, { useState, useRef, useEffect, useLayoutEffect, forwardRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport hotkeysManager, { Keys } from 'helpers/hotkeysManager';\n\nimport { isMac, isWindows, isIOS, isAndroid } from 'helpers/device';\n\nimport './Tooltip.scss';\n\nconst propTypes = {\n  children: PropTypes.element.isRequired,\n  content: PropTypes.string,\n  hideShortcut: PropTypes.bool,\n  forcePosition: PropTypes.string,\n  hideOnClick: PropTypes.bool\n};\n\nconst Tooltip = forwardRef(({ content = '', children, hideShortcut, forcePosition, hideOnClick }, ref) => {\n  const timeoutRef = useRef(null);\n  const childRef = useRef(null);\n  useImperativeHandle(ref, () => childRef.current);\n\n  const tooltipRef = useRef(null);\n  const [show, setShow] = useState(false);\n  const [opacity, setOpacity] = useState(0);\n  const [position, setPosition] = useState({\n    top: 0,\n    left: 0,\n  });\n  const [location, setLocation] = useState('bottom');\n  const [t] = useTranslation();\n  const delayShow = 700;\n  const opacityTimeout = 50;\n\n  useEffect(() => {\n    const showToolTip = () => {\n      timeoutRef.current = setTimeout(() => {\n        setShow(true);\n      }, delayShow - opacityTimeout);\n    };\n\n    const hideTooltip = () => {\n      clearTimeout(timeoutRef.current);\n      setShow(false);\n    };\n\n    childRef.current?.addEventListener('mouseenter', showToolTip);\n    childRef.current?.addEventListener('mouseleave', hideTooltip);\n    if (hideOnClick) {\n      childRef.current?.addEventListener('click', hideTooltip);\n    }\n\n    const observer = new MutationObserver((mutations) => {\n      // hide tooltip when button get disabled, disable buttons don't have \"mouseleave\" events\n      const lastMutation = mutations[mutations.length - 1];\n      if (lastMutation && lastMutation.attributeName == 'disabled' && lastMutation.target.disabled ) {\n        hideTooltip();\n      }\n    });\n\n    observer.observe(childRef.current, { attributes: true, childList: false, characterData: false  });\n\n    return () => {\n      hideTooltip();\n      observer.disconnect();\n      childRef.current?.removeEventListener('mouseenter', showToolTip);\n      childRef.current?.removeEventListener('mouseleave', hideTooltip);\n    };\n  }, [childRef, hideOnClick]);\n\n  useLayoutEffect(() => {\n    const childEle = childRef.current;\n    const tooltipEle = tooltipRef.current;\n\n    const setTopAndLeft = () => {\n      const childRect = childEle.getBoundingClientRect();\n      const tooltipRect = tooltipEle.getBoundingClientRect();\n\n      const locationTopLeftMap = {\n        // TODO be able to support other directions too\n        bottom: {\n          top: childRect.bottom,\n          left: childRect.left + childRect.width / 2 - tooltipRect.width / 2,\n        },\n        bottomLeft: {\n          top: childRect.bottom,\n          left: childRect.left,\n        },\n        left: {\n          top: childRect.top + childRect.height / 2 - tooltipRect.height / 2,\n          left: childRect.left - tooltipRect.width,\n        },\n        right: {\n          top: childRect.top + childRect.height / 2 - tooltipRect.height / 2,\n          left: childRect.right,\n        },\n        top: {\n          top: childRect.top - tooltipRect.height,\n          left: childRect.left + childRect.width / 2 - tooltipRect.width / 2,\n        },\n      };\n\n      // starting from placing the tooltip at the bottom location\n      // if the tooltip can't fit into the window, try placing it counterclockwise until we can find a location to fit it\n      const bestLocation = Object.keys(locationTopLeftMap).find(location => {\n        if (forcePosition) {\n          return location === forcePosition;\n        } else {\n          const { top: newTop, left: newLeft } = locationTopLeftMap[location];\n\n          return (\n            newTop > 0\n            && newTop + tooltipRect.height < window.innerHeight\n            && newLeft > 0\n            && newLeft + tooltipRect.width < window.innerWidth\n          );\n        }\n      }) || 'bottom';\n      const { top: tooltipTop, left: tooltipLeft } = locationTopLeftMap[\n        bestLocation\n      ];\n\n      setPosition({\n        top: tooltipTop,\n        left: tooltipLeft,\n      });\n      setLocation(bestLocation);\n    };\n\n    if (show && childEle && tooltipEle) {\n      setTopAndLeft();\n      setTimeout(() => {\n        setOpacity(1);\n      }, opacityTimeout);\n    } else {\n      setOpacity(0);\n    }\n  }, [childRef, show]);\n\n  const isUsingMobileDevices = isIOS || isAndroid;\n  const child = React.cloneElement(children, {\n    ref: childRef,\n  });\n  const translatedContent = t(content);\n  // If shortcut.xxx exists in translation-en.json file\n  // method t will return the shortcut, otherwise it will return shortcut.xxx\n  let shortcutKey = content.slice(content.indexOf('.') + 1);\n  if (isWindows && shortcutKey === 'redo') {\n    shortcutKey = 'redo_windows';\n  }\n  let isActive = hotkeysManager.isActive(shortcutKey);\n\n  let hasShortcut = t(`shortcut.${shortcutKey}`).indexOf('.') === -1;\n  let shortcut = t(`shortcut.${shortcutKey}`);\n  if (isMac) {\n    shortcut = shortcut.replace('Ctrl', 'Cmd');\n  }\n\n  if (!isActive) {\n    hasShortcut = false;\n  }\n\n  return (\n    <React.Fragment>\n      {child}\n      {show\n        && translatedContent\n        && !isUsingMobileDevices\n        && ReactDOM.createPortal(\n          <div\n            className={`tooltip--${location}`}\n            style={{ opacity, ...position }}\n            ref={tooltipRef}\n          >\n            <div className={`tooltip__content`}>\n              {translatedContent}\n              {hasShortcut && !hideShortcut && (\n                <span className=\"tooltip__shortcut\">{shortcut}</span>\n              )}\n            </div>\n          </div>,\n          document.getElementById('app'),\n        )}\n    </React.Fragment>\n  );\n});\n\nTooltip.propTypes = propTypes;\n\nexport default Tooltip;\n","import Tooltip from './Tooltip';\n\nexport default Tooltip;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport './Icon.scss';\n\nclass Icon extends React.PureComponent {\n  static propTypes = {\n    className: PropTypes.string,\n    color: PropTypes.string,\n    glyph: PropTypes.string.isRequired,\n    fillColor: PropTypes.string,\n    strokeColor: PropTypes.string,\n    disabled: PropTypes.bool\n  }\n\n  constructor() {\n    super();\n    this.icon = React.createRef();\n  }\n\n  componentDidMount() {\n    this.updateSvg();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.glyph !== prevProps.glyph) {\n      this.updateSvg();\n    }\n  }\n\n  updateSvg() {\n    if (this.isInlineSvg()) {\n      const domElement = this.icon.current;\n\n      // remove existing svg\n      while (domElement.firstChild) {\n        domElement.removeChild(domElement.firstChild);\n      }\n\n      // innerHTML also works, but not in IE...\n      const svg = (new DOMParser()).parseFromString(this.props.glyph, 'image/svg+xml').querySelector('svg');\n      domElement.appendChild(svg);\n    }\n  }\n\n  isInlineSvg() {\n    const { glyph } = this.props;\n    return glyph && glyph.indexOf('<svg') === 0;\n  }\n\n  render() {\n    const { className = '', color, glyph, fillColor = '', strokeColor = '', disabled } = this.props;\n    const filter = (color && (color === 'rgba(255, 255, 255, 1)' || color === 'rgb(255, 255, 255)')) ? 'drop-shadow(0 0 .5px #333)' : undefined;\n    let svgElement;\n\n    try {\n      svgElement = this.isInlineSvg() ? glyph : require(`../../../assets/icons/${this.props.glyph}.svg`);\n    } catch {\n      svgElement = undefined;\n    }\n\n    const style = {\n      filter\n    };\n\n    if (!disabled) {\n      style.color = (color === 'rgba(0, 0, 0, 0)') ? '#808080' : color;\n      if (fillColor) {\n        svgElement = svgElement.replace('fill=\"none\"', `fill=\"#${fillColor}\"`);\n      }\n      if (strokeColor) {\n        svgElement = svgElement.replace('fill=\"stroke\"', `fill=\"#${strokeColor}\"`);\n      }\n    }\n\n    return (\n      <div\n        ref={this.icon}\n        className={classNames({\n          Icon: true,\n          [className]: true,\n          [fillColor]: true,\n          disabled,\n        })}\n        style={style}\n        dangerouslySetInnerHTML={{ __html: svgElement }}\n      />\n    );\n  }\n}\n\nexport default Icon;\n","import Icon from './Icon';\n\nexport default Icon;","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nimport Tooltip from 'components/Tooltip';\nimport Icon from 'components/Icon';\nimport { shortcutAria } from 'helpers/hotkeysManager';\n\nimport selectors from 'selectors';\n\nimport './Button.scss';\n\nconst NOOP = e => {\n  e?.stopPropagation();\n  e?.preventDefault();\n};\n\nconst propTypes = {\n  isActive: PropTypes.bool,\n  mediaQueryClassName: PropTypes.string,\n  img: PropTypes.string,\n  label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  title: PropTypes.string,\n  color: PropTypes.string,\n  dataElement: PropTypes.string,\n  className: PropTypes.string,\n  onClick: PropTypes.func,\n  onDoubleClick: PropTypes.func,\n  onMouseUp: PropTypes.func,\n  isSubmitType: PropTypes.bool,\n  /** Will override translated title if both given. */\n  ariaLabel: PropTypes.string,\n  role: PropTypes.string,\n  hideTooltipShortcut: PropTypes.bool,\n  useI18String: PropTypes.bool,\n};\n\nconst Button = props => {\n  const [removeElement, customOverrides = {}] = useSelector(\n    state => [\n      selectors.isElementDisabled(state, props.dataElement),\n      selectors.getCustomElementOverrides(state, props.dataElement),\n    ],\n    shallowEqual,\n  );\n\n  const {\n    // old name for disabled. We are keeping it for backwards compatibility\n    // should remove in the future .\n    disable,\n    disabled,\n    isActive,\n    mediaQueryClassName,\n    img,\n    tabIndex,\n    label,\n    useI18String = true,\n    color,\n    dataElement,\n    onClick,\n    onDoubleClick,\n    onMouseUp,\n    className,\n    title,\n    style,\n    ariaLabel,\n    role,\n    strokeColor,\n    fillColor,\n    hideTooltipShortcut,\n    iconClassName,\n    forceTooltipPosition,\n    isSubmitType,\n    hideOnClick,\n  } = { ...props, ...customOverrides };\n  const [t] = useTranslation();\n\n  const aLabel = ariaLabel || (title ? t(title) : undefined);\n\n  const shortcutKey = title ? title.slice(title.indexOf('.') + 1) : undefined;\n  const ariaKeyshortcuts = shortcutKey ? shortcutAria(shortcutKey) : undefined;\n\n  const isBase64 = img?.trim().startsWith('data:');\n\n  const imgToShow = img;\n\n  // for backwards compatibility\n  const actuallyDisabled = disable || disabled;\n\n  // if there is no file extension then assume that this is a glyph\n  const isGlyph =\n    img && !isBase64 && (!img.includes('.') || img.startsWith('<svg'));\n  const shouldRenderTooltip = !!title;\n  const children = (\n    <button\n      className={classNames({\n        Button: true,\n        active: isActive && !actuallyDisabled,\n        disabled: actuallyDisabled,\n        [mediaQueryClassName]: mediaQueryClassName,\n        [className]: className,\n      })}\n      style={style}\n      data-element={dataElement}\n      // Can't use button disabled property here.\n      // Because mouse events won't fire and we want them to\n      // so that we can show the button tooltip\n      onClick={actuallyDisabled ? NOOP : onClick}\n      onDoubleClick={actuallyDisabled ? NOOP : onDoubleClick}\n      onMouseUp={actuallyDisabled ? NOOP : onMouseUp}\n      aria-label={aLabel}\n      role={role}\n      tabIndex={tabIndex}\n      aria-keyshortcuts={ariaKeyshortcuts}\n      type={isSubmitType ? 'submit' : 'button'}\n      disabled={actuallyDisabled}\n    >\n      {isGlyph && (\n        <Icon\n          disabled={actuallyDisabled}\n          glyph={imgToShow}\n          color={color}\n          fillColor={fillColor}\n          strokeColor={strokeColor}\n          className={iconClassName}\n        />\n      )}\n      {imgToShow && !isGlyph && <img src={imgToShow} />}\n      {\n        label && (useI18String ?\n          <span>{t(label)}</span> :\n          <span>{label}</span>)\n      }\n    </button>\n  );\n\n  return removeElement ? null : shouldRenderTooltip ? (\n    <Tooltip\n      content={title}\n      hideShortcut={hideTooltipShortcut || actuallyDisabled}\n      forcePosition={forceTooltipPosition}\n      hideOnClick={hideOnClick}>\n      {children}\n    </Tooltip>\n  ) : (\n    children\n  );\n};\n\nButton.propTypes = propTypes;\n\nexport default React.memo(Button);\n","import Button from './Button';\n\nexport default Button;","export default color => {\n  const parsedColor = (color?.toHexString?.() || '').substring(1);\n  return parsedColor;\n};\n","import React, { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\nimport { useDispatch, useSelector, shallowEqual } from \"react-redux\";\n\nimport Button from \"components/Button\";\n\nimport core from \"core\";\nimport toolStylesExist from \"helpers/toolStylesExist\";\nimport getToolStyles from \"helpers/getToolStyles\";\nimport hotkeysManager from \"helpers/hotkeysManager\";\nimport getColor from 'helpers/getColor';\nimport { mapToolNameToKey } from \"constants/map\";\nimport defaultTool from 'constants/defaultTool';\nimport actions from \"actions\";\nimport selectors from \"selectors\";\n\nimport \"./ToolButton.scss\";\n\nconst propTypes = {\n  toolName: PropTypes.string.isRequired,\n  group: PropTypes.string,\n  className: PropTypes.string,\n};\n\nconst ToolButton = ({\n  toolName,\n  className,\n  ...restProps\n}) => {\n  const [\n    activeToolName,\n    isActive,\n    iconColorKey,\n    // use this to trigger rerender so the color will be right\n    // TODO: fix the issue properly. Can listen to toolUpdated\n    // eslint-disable-next-line\n    activeToolStyles,\n    toolButtonObject,\n    customOverrides,\n  ] = useSelector(\n    state => [\n      selectors.getActiveToolName(state),\n      selectors.getActiveToolName(state) === toolName,\n      selectors.getIconColor(state, mapToolNameToKey(toolName)),\n      selectors.getActiveToolStyles(state),\n      selectors.getToolButtonObject(state, toolName),\n      selectors.getCustomElementOverrides(state, selectors.getToolButtonDataElement(state, toolName)),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const { group = '', ...restObjectData } = toolButtonObject;\n\n  useEffect(() => {\n    if (typeof customOverrides?.disable === \"undefined\") {\n      return;\n    }\n\n    if (customOverrides.disable) {\n      hotkeysManager.off(toolName);\n    } else {\n      hotkeysManager.on(toolName);\n    }\n  }, [customOverrides, toolName]);\n\n  const handleClick = () => {\n    if (isActive) {\n      if (toolName !== \"AnnotationCreateStamp\" && toolName !== \"AnnotationCreateRedaction\" && toolName !== \"AnnotationEraserTool\") {\n        if (toolStylesExist(toolName)) {\n          dispatch(actions.toggleElement(\"toolStylePopup\"));\n          if (toolName === \"AnnotationCreateRubberStamp\") {\n            core.setToolMode(defaultTool);\n          }\n        }\n      }\n    } else {\n      if (group === 'miscTools') {\n        dispatch(actions.closeElement(\"toolStylePopup\"));\n      }\n\n      core.setToolMode(toolName);\n      dispatch(actions.setActiveToolGroup(group));\n      dispatch(actions.setLastPickedToolForGroup(group, toolName));\n      if (toolName === \"AnnotationCreateRubberStamp\") {\n        dispatch(actions.openElement(\"toolStylePopup\"));\n      }\n    }\n  };\n\n  let color = '';\n  let fillColor = '';\n  let strokeColor = '';\n  const showColor = customOverrides?.showColor || toolButtonObject.showColor;\n  if (showColor === 'always' || (showColor === 'active' && isActive)) {\n    const toolStyles = getToolStyles(toolName);\n    color = toolStyles?.[iconColorKey]?.toHexString?.();\n    fillColor = getColor(toolStyles?.FillColor);\n    strokeColor = getColor(toolStyles?.StrokeColor);\n    if (toolName.indexOf('AnnotationCreateFreeText') > -1 && toolStyles?.StrokeThickness === 0) {\n      // transparent\n      strokeColor = 'ff000000';\n    }\n  }\n\n  return (\n    <Button\n      className={classNames({\n        \"tool-button\": true,\n        hasStyles: toolStylesExist(toolName),\n        [className]: className,\n      })}\n      onClick={handleClick}\n      isActive={isActive}\n      color={color}\n      fillColor={fillColor}\n      strokeColor={strokeColor}\n      {...restProps}\n      {...restObjectData}\n    />\n  );\n};\n\nToolButton.propTypes = propTypes;\n\nexport default ToolButton;\n","import ToolButton from './ToolButton';\n\nexport default ToolButton;","import { useState, useEffect } from 'react';\n\n// https://usehooks.com/useMedia/\nexport default (queries, values, defaultValue) => {\n  // Array containing a media query list for each query\n  const mediaQueryLists = queries.map(q => window.matchMedia(`screen and ${q}`));\n\n  // Function that gets value based on matching media query\n  const getValue = initial => {\n    // HACK: Reading window.innerWidth prevents a bug where checking mql.matches\n    // in a background tab on chromium returns true even though it isn't.\n    if (initial) {\n      window.innerWidth;\n    }\n    // Get index of first media query that matches\n    const index = mediaQueryLists.findIndex(mql => mql.matches);\n    // Return related value or defaultValue if none\n    return typeof values[index] !== 'undefined' ? values[index] : defaultValue;\n  };\n\n  // State and setter for matched value\n  const [value, setValue] = useState(() => getValue(true));\n\n  useEffect(\n    () => {\n      // Event listener callback\n      // Note: By defining getValue outside of useEffect we ensure that it has ...\n      // ... current values of hook args (as this hook callback is created once on mount).\n      const handler = () => setValue(() => getValue());\n      // Set a listener for each media query with above handler as callback.\n      mediaQueryLists.forEach(mql => mql.addListener(handler));\n      // Remove listeners on cleanup\n      return () => mediaQueryLists.forEach(mql => mql.removeListener(handler));\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [], // Empty array ensures effect is only run on mount and unmount\n  );\n\n  return value;\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport Button from 'components/Button';\n\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport useMedia from 'hooks/useMedia';\n\nconst ToggleElementButton = ({\n  onClick,\n  dataElement,\n  isElementDisabled,\n  isActive,\n  ariaLabel,\n  ...restProps\n}) => {\n  if (isElementDisabled) {\n    return null;\n  }\n\n  return (\n    <Button {...restProps} isActive={isActive} dataElement={dataElement} onClick={onClick} ariaLabel={ariaLabel} />\n  );\n};\n\nconst mapStateToProps = (state, ownProps) => {\n  const isActive = selectors.isElementOpen(state, ownProps.element);\n\n  return {\n    isElementDisabled: selectors.isElementDisabled(state, ownProps.dataElement),\n    isActive,\n  };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n  onClick: () => {\n    dispatch(actions.toggleElement(ownProps.element));\n  },\n});\n\nconst ConnectedToggleElementButton = connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(ToggleElementButton);\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return (\n    <ConnectedToggleElementButton {...props} isMobile={isMobile} />\n  );\n};\n","import ToggleElementButton from './ToggleElementButton';\n\nexport default ToggleElementButton;","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nconst propTypes = {\n  children: PropTypes.node,\n  dataElement: PropTypes.string,\n  type: PropTypes.string\n};\n\n/*\n * Custom hook that makes sure we can use this component in unit tests and storybook easier. If Redux context is not available, it will\n * return defaultValue given, which is false by default. If redux context is available like in normal case, it will get the value\n * from redux store.\n */\nfunction useIsDisabledWithDefaultValue(selector, defaultValue = false) {\n  try {\n    return useSelector(selector);\n  } catch (e) {\n    if (e.message !== 'could not find react-redux context value; please ensure the component is wrapped in a <Provider>') {\n      // If error don't throw it, just return default value, or we break chromatic tests\n      // throw e;\n    }\n  }\n  return defaultValue;\n}\n\nconst DataElementWrapper = React.forwardRef(({ type = \"div\", children, dataElement, ...props }, ref) => {\n  const isDisabled = useIsDisabledWithDefaultValue(state => selectors.isElementDisabled(state, dataElement));\n  if (isDisabled) {\n    return null;\n  }\n\n  if (type === 'button') {\n    return (\n      <button ref={ref} data-element={dataElement} {...props}>\n        {children}\n      </button>\n    );\n  }\n  return (\n    <div ref={ref} data-element={dataElement} {...props}>\n      {children}\n    </div>\n  );\n});\n\nDataElementWrapper.propTypes = propTypes;\nexport default DataElementWrapper;\n","import DataElementWrapper from './DataElementWrapper';\n\nexport default DataElementWrapper;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { connect } from 'react-redux';\n\nimport Button from 'components/Button';\nimport defaultTool from 'constants/defaultTool';\n\nimport core from 'core';\nimport getToolStyles from 'helpers/getToolStyles';\nimport getColor from 'helpers/getColor';\nimport { mapToolNameToKey } from 'constants/map';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport useMedia from 'hooks/useMedia';\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport './ToolGroupButton.scss';\n\nclass ToolGroupButton extends React.PureComponent {\n  static propTypes = {\n    activeToolName: PropTypes.string.isRequired,\n    toolGroup: PropTypes.string.isRequired,\n    mediaQueryClassName: PropTypes.string.isRequired,\n    dataElement: PropTypes.string.isRequired,\n    img: PropTypes.string,\n    title: PropTypes.string,\n    toolNames: PropTypes.arrayOf(PropTypes.string),\n    toolButtonObjects: PropTypes.object,\n    lastPickedToolForGroup: PropTypes.string,\n    allButtonsInGroupDisabled: PropTypes.bool,\n    openElement: PropTypes.func.isRequired,\n    toggleElement: PropTypes.func.isRequired,\n    closeElement: PropTypes.func.isRequired,\n    setActiveToolGroup: PropTypes.func.isRequired,\n    isActive: PropTypes.bool.isRequired,\n    showColor: PropTypes.string,\n    iconColorKey: PropTypes.string,\n  };\n\n  onClick = () => {\n    const {\n      setActiveToolGroup,\n      isActive,\n      closeElement,\n      openElement,\n      toolGroup,\n      toolNames,\n      lastPickedToolForGroup,\n    } = this.props;\n\n    if (isActive) {\n      closeElement('toolStylePopup');\n      core.setToolMode(defaultTool);\n      setActiveToolGroup('');\n    } else {\n      closeElement('toolStylePopup');\n      if (toolGroup === 'signatureTools' || toolGroup === 'rubberStampTools') {\n        core.setToolMode(defaultTool);\n      } else {\n        core.setToolMode(lastPickedToolForGroup || toolNames[0]);\n      }\n      setActiveToolGroup(toolGroup);\n      openElement('toolsOverlay');\n    }\n  };\n\n  render() {\n    const {\n      toolNames,\n      lastPickedToolForGroup,\n      isActive,\n      mediaQueryClassName,\n      dataElement,\n      toolButtonObjects,\n      allButtonsInGroupDisabled,\n      iconColorKey,\n      showColor,\n      title,\n    } = this.props;\n    const toolName = lastPickedToolForGroup || toolNames[0];\n    const img = this.props.img\n      ? this.props.img\n      : toolButtonObjects[toolName]?.img;\n    let color = '';\n    let fillColor = '';\n    let strokeColor = '';\n    if (showColor !== 'never' && isActive) {\n      const toolStyles = getToolStyles(toolName);\n      if (iconColorKey) {\n        color = toolStyles[iconColorKey]?.toHexString?.();\n      }\n      fillColor = getColor(toolStyles.FillColor);\n      strokeColor = getColor(toolStyles.StrokeColor);\n      if (toolName.indexOf('AnnotationCreateFreeText') > -1 && toolStyles?.StrokeThickness === 0) {\n        // transparent\n        strokeColor = 'ff000000';\n      }\n    }\n\n    if (toolName.indexOf('AnnotationCreateRedaction') > -1 && !isActive) {\n      // The redaction icon needs a default fill for it's inactive state\n      fillColor = '868E96';\n    }\n\n    return allButtonsInGroupDisabled ? null : (\n      <DataElementWrapper\n        className={classNames({\n          'tool-group-button': true,\n          active: isActive,\n        })}\n        dataElement={dataElement}\n      >\n        <Button\n          title={title}\n          mediaQueryClassName={mediaQueryClassName}\n          isActive={isActive}\n          img={img}\n          color={color}\n          fillColor={fillColor}\n          strokeColor={strokeColor}\n          dataElement={dataElement}\n          onClick={this.onClick}\n        />\n      </DataElementWrapper>\n    );\n  }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n  lastPickedToolForGroup: selectors.getLastPickedToolForGroup(state, ownProps.toolGroup),\n  savedSignatures: selectors.getSavedSignatures(state),\n  isActive: selectors.getActiveToolGroup(state) === ownProps.toolGroup,\n  activeToolName: selectors.getActiveToolName(state),\n  toolNames: selectors.getToolNamesByGroup(state, ownProps.toolGroup),\n  toolButtonObjects: selectors.getToolButtonObjects(state),\n  allButtonsInGroupDisabled: selectors.allButtonsInGroupDisabled(state, ownProps.toolGroup),\n  iconColorKey: selectors.getIconColor(\n    state,\n    mapToolNameToKey(selectors.getActiveToolName(state)),\n  ),\n});\n\nconst mapDispatchToProps = {\n  openElement: actions.openElement,\n  toggleElement: actions.toggleElement,\n  closeElement: actions.closeElement,\n  setActiveToolGroup: actions.setActiveToolGroup,\n};\n\nconst ConnectedToolGroupButton = connect(mapStateToProps, mapDispatchToProps)(ToolGroupButton);\n\nexport default props => {\n  const isTabletAndMobile = useMedia(\n    // Media queries\n    ['(max-width: 900px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return (\n    <ConnectedToolGroupButton {...props} isTabletAndMobile={isTabletAndMobile} />\n  );\n};\n","import ToolGroupButton from './ToolGroupButton';\n\nexport default ToolGroupButton;","import { connect } from 'react-redux';\nimport classNames from 'classnames';\n\nimport Button from 'components/Button';\n\nconst mapStateToProps = (state, { isNotClickableSelector, className }) => ({\n  className: classNames({\n    ActionButton: true,\n    [className]: !!className,\n  }),\n  disabled: isNotClickableSelector && isNotClickableSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n  onClick: () => {\n    ownProps.onClick(dispatch);\n  },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Button);","import ActionButton from './ActionButton';\n\nexport default ActionButton;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport Button from 'components/Button';\n\nimport selectors from 'selectors';\n\nclass StatefulButton extends React.PureComponent {\n  static propTypes = {\n    dispatch: PropTypes.func,\n    initialState: PropTypes.string.isRequired,\n    mount: PropTypes.func.isRequired,\n    unmount: PropTypes.func,\n    didUpdate: PropTypes.func,\n    states: PropTypes.shape({\n      activeState: PropTypes.shape({\n        img: PropTypes.string,\n        label: PropTypes.string,\n        onClick: PropTypes.func.isRequired,\n        title: PropTypes.string.isRequired,\n        getContent: PropTypes.func.isRequired,\n      }),\n      AnotherState: PropTypes.shape({\n        img: PropTypes.string,\n        label: PropTypes.string,\n        onClick: PropTypes.func.isRequired,\n        title: PropTypes.string.isRequired,\n        getContent: PropTypes.func.isRequired,\n      }),\n    }),\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      activeState: this.props.initialState,\n    };\n  }\n\n  componentDidMount() {\n    const { mount } = this.props;\n    if (mount) {\n      mount(this.update);\n    }\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    const { didUpdate, states } = this.props;\n    if (didUpdate) {\n      didUpdate(\n        prevProps,\n        this.props,\n        states[prevState.activeState],\n        states[this.state.activeState],\n        this.update,\n      );\n    }\n  }\n\n  componentWillUnmount() {\n    const { unmount } = this.props;\n    if (unmount) {\n      unmount();\n    }\n  }\n\n  update = newState => {\n    if (newState) {\n      this.setState({\n        activeState: newState,\n      });\n    } else {\n      this.forceUpdate();\n    }\n  };\n\n  onClick = () => {\n    const { activeState } = this.state;\n    const { states, dispatch } = this.props;\n\n    this.props.states[activeState].onClick(\n      this.update,\n      states[activeState],\n      dispatch,\n    );\n  };\n\n  render() {\n    const { activeState } = this.state;\n    const { states } = this.props;\n    const { title, img, getContent, isActive } = states[activeState];\n    const content = getContent ? getContent(states[activeState]) : '';\n    const className = [\n      'StatefulButton',\n      states[activeState].className ? states[activeState].className : '',\n    ]\n      .join(' ')\n      .trim();\n\n    return (\n      <Button\n        {...this.props}\n        className={className}\n        isActive={isActive && isActive(this.props)}\n        img={img}\n        label={content}\n        onClick={this.onClick}\n        title={title}\n      />\n    );\n  }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n  isOpen: selectors.isElementOpen(state, ownProps.dataElement),\n  openElements: selectors.getOpenElements(state),\n});\n\nexport default connect(mapStateToProps)(StatefulButton);\n","import StatefulButton from './StatefulButton';\n\nexport default StatefulButton;","import React, { useState, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport Tooltip from 'components/Tooltip';\nimport selectors from 'selectors';\n\nimport './CustomElement.scss';\n\nconst propTypes = {\n  className: PropTypes.string,\n  dataElement: PropTypes.string,\n  display: PropTypes.string,\n  render: PropTypes.func.isRequired,\n  mediaQueryClassName: PropTypes.string,\n  title: PropTypes.string,\n};\n\nconst CustomElement = ({\n  className = 'CustomElement',\n  dataElement,\n  display,\n  render,\n  mediaQueryClassName,\n  title,\n}) => {\n  const [reactComponent, setReactComponent] = useState(null);\n  const wrapperRef = useRef();\n  const toolTipWrapperRef = useRef();\n  const isDisabled = useSelector(state => selectors.isElementDisabled(state, dataElement));\n\n  useEffect(() => {\n    // currently UI is running in an iframe, and there are two ways an user can add a CustomElement component to the header using setHeaderItems.\n    // one way is in a config file. This way the element created by document.createElement() is an instanceof window.Element but not window.parent.Element since\n    // code inside the config is running inside the iframe and window.parent is the iframe\n    // the other way is calling setHeaderItems and creating elements outside the iframe. This way the element is an instanceof window.parent.Element, not window.Element\n    const isDOMElement = element => {\n      try {\n        return (\n          element instanceof window.Element ||\n          element instanceof window.parent.Element\n        );\n      } catch (e) {\n        return false;\n      }\n    };\n\n    const isReactElement = element => React.isValidElement(element);\n\n    if (!isDisabled) {\n      const element = render();\n\n      if (isDOMElement(element)) {\n        const wrapperElement = toolTipWrapperRef.current ? toolTipWrapperRef.current : wrapperRef.current;\n\n        while (wrapperElement.firstChild) {\n          wrapperElement.removeChild(wrapperElement.firstChild);\n        }\n        wrapperElement.appendChild(element);\n      } else if (isReactElement(element)) {\n        setReactComponent(element);\n      } else {\n        console.warn(\n          'The object returned by the render function does not seem to be either a DOM element or a React Component',\n        );\n      }\n    }\n  }, [isDisabled, render]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  const children = (\n    <div\n      className={classNames({\n        [className]: !!className,\n        [mediaQueryClassName]: !!mediaQueryClassName,\n      })}\n      ref={wrapperRef}\n      data-element={dataElement}\n      style={{ display }}\n    >\n      {reactComponent}\n    </div>\n  );\n\n  return title ? (<Tooltip content={title} ref={toolTipWrapperRef}>{children}</Tooltip>) : children;\n};\n\nCustomElement.propTypes = propTypes;\n\nexport default CustomElement;\n","import CustomElement from './CustomElement';\n\nexport default CustomElement;","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nvar types = ['client', 'offset', 'scroll', 'bounds', 'margin'];\nfunction getTypes(props) {\n  var allowedTypes = [];\n  types.forEach(function (type) {\n    if (props[type]) {\n      allowedTypes.push(type);\n    }\n  });\n  return allowedTypes;\n}\n\nfunction getContentRect(node, types) {\n  var calculations = {};\n\n  if (types.indexOf('client') > -1) {\n    calculations.client = {\n      top: node.clientTop,\n      left: node.clientLeft,\n      width: node.clientWidth,\n      height: node.clientHeight\n    };\n  }\n\n  if (types.indexOf('offset') > -1) {\n    calculations.offset = {\n      top: node.offsetTop,\n      left: node.offsetLeft,\n      width: node.offsetWidth,\n      height: node.offsetHeight\n    };\n  }\n\n  if (types.indexOf('scroll') > -1) {\n    calculations.scroll = {\n      top: node.scrollTop,\n      left: node.scrollLeft,\n      width: node.scrollWidth,\n      height: node.scrollHeight\n    };\n  }\n\n  if (types.indexOf('bounds') > -1) {\n    var rect = node.getBoundingClientRect();\n    calculations.bounds = {\n      top: rect.top,\n      right: rect.right,\n      bottom: rect.bottom,\n      left: rect.left,\n      width: rect.width,\n      height: rect.height\n    };\n  }\n\n  if (types.indexOf('margin') > -1) {\n    var styles = getComputedStyle(node);\n    calculations.margin = {\n      top: styles ? parseInt(styles.marginTop) : 0,\n      right: styles ? parseInt(styles.marginRight) : 0,\n      bottom: styles ? parseInt(styles.marginBottom) : 0,\n      left: styles ? parseInt(styles.marginLeft) : 0\n    };\n  }\n\n  return calculations;\n}\n\n/**\n * Returns the global window object associated with provided element.\n */\nfunction getWindowOf(target) {\n  // Assume that the element is an instance of Node, which means that it\n  // has the \"ownerDocument\" property from which we can retrieve a\n  // corresponding global object.\n  var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local window object if it's not possible extract one from\n  // provided element.\n\n  return ownerGlobal || window;\n}\n\nfunction withContentRect(types) {\n  return function (WrappedComponent) {\n    var _class, _temp;\n\n    return _temp = _class =\n    /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(WithContentRect, _Component);\n\n      function WithContentRect() {\n        var _this;\n\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n        _this.state = {\n          contentRect: {\n            entry: {},\n            client: {},\n            offset: {},\n            scroll: {},\n            bounds: {},\n            margin: {}\n          }\n        };\n        _this._animationFrameID = null;\n        _this._resizeObserver = null;\n        _this._node = null;\n        _this._window = null;\n\n        _this.measure = function (entries) {\n          var contentRect = getContentRect(_this._node, types || getTypes(_this.props));\n\n          if (entries) {\n            contentRect.entry = entries[0].contentRect;\n          }\n\n          _this._animationFrameID = _this._window.requestAnimationFrame(function () {\n            if (_this._resizeObserver !== null) {\n              _this.setState({\n                contentRect: contentRect\n              });\n\n              if (typeof _this.props.onResize === 'function') {\n                _this.props.onResize(contentRect);\n              }\n            }\n          });\n        };\n\n        _this._handleRef = function (node) {\n          if (_this._resizeObserver !== null && _this._node !== null) {\n            _this._resizeObserver.unobserve(_this._node);\n          }\n\n          _this._node = node;\n          _this._window = getWindowOf(_this._node);\n          var innerRef = _this.props.innerRef;\n\n          if (innerRef) {\n            if (typeof innerRef === 'function') {\n              innerRef(_this._node);\n            } else {\n              innerRef.current = _this._node;\n            }\n          }\n\n          if (_this._resizeObserver !== null && _this._node !== null) {\n            _this._resizeObserver.observe(_this._node);\n          }\n        };\n\n        return _this;\n      }\n\n      var _proto = WithContentRect.prototype;\n\n      _proto.componentDidMount = function componentDidMount() {\n        this._resizeObserver = this._window !== null && this._window.ResizeObserver ? new this._window.ResizeObserver(this.measure) : new ResizeObserver(this.measure);\n\n        if (this._node !== null) {\n          this._resizeObserver.observe(this._node);\n\n          if (typeof this.props.onResize === 'function') {\n            this.props.onResize(getContentRect(this._node, types || getTypes(this.props)));\n          }\n        }\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        if (this._window !== null) {\n          this._window.cancelAnimationFrame(this._animationFrameID);\n        }\n\n        if (this._resizeObserver !== null) {\n          this._resizeObserver.disconnect();\n\n          this._resizeObserver = null;\n        }\n      };\n\n      _proto.render = function render() {\n        var _this$props = this.props,\n            innerRef = _this$props.innerRef,\n            onResize = _this$props.onResize,\n            props = _objectWithoutPropertiesLoose(_this$props, [\"innerRef\", \"onResize\"]);\n\n        return createElement(WrappedComponent, _extends({}, props, {\n          measureRef: this._handleRef,\n          measure: this.measure,\n          contentRect: this.state.contentRect\n        }));\n      };\n\n      return WithContentRect;\n    }(Component), _class.propTypes = {\n      client: PropTypes.bool,\n      offset: PropTypes.bool,\n      scroll: PropTypes.bool,\n      bounds: PropTypes.bool,\n      margin: PropTypes.bool,\n      innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n      onResize: PropTypes.func\n    }, _temp;\n  };\n}\n\nvar Measure = withContentRect()(function (_ref) {\n  var measure = _ref.measure,\n      measureRef = _ref.measureRef,\n      contentRect = _ref.contentRect,\n      children = _ref.children;\n  return children({\n    measure: measure,\n    measureRef: measureRef,\n    contentRect: contentRect\n  });\n});\nMeasure.displayName = 'Measure';\nMeasure.propTypes.children = PropTypes.func;\n\nexport default Measure;\nexport { withContentRect };\n","import React, { useRef, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport Measure from 'react-measure';\nimport { useTranslation } from 'react-i18next';\n\nconst ScrollGroup = ({ children }) => {\n  const [t] = useTranslation();\n  const scrollRef = useRef();\n  const [isScrolledToEnd, setIsScrolledToEnd] = useState(false);\n  const [isScrolledToStart, setIsScrolledToStart] = useState(false);\n\n  const checkScrollPosition = () => {\n    if (scrollRef.current) {\n      const {\n        scrollWidth,\n        scrollLeft,\n        offsetWidth,\n      } = scrollRef.current;\n\n      if (scrollLeft >= (scrollWidth - offsetWidth)) {\n        setIsScrolledToEnd(true);\n      } else {\n        setIsScrolledToEnd(false);\n      }\n\n      if (scrollLeft === 0) {\n        setIsScrolledToStart(true);\n      } else {\n        setIsScrolledToStart(false);\n      }\n    }\n  };\n\n  useEffect(() => {\n    checkScrollPosition();\n  });\n\n  return (\n    <Measure\n      onResize={() => {\n        checkScrollPosition();\n      }}\n    >\n      {({ measureRef }) => (\n        <div\n          ref={measureRef}\n          className=\"tool-group-buttons-container\"\n        >\n          {!isScrolledToStart &&\n            <div\n              className={classNames(\n                'chevron-scroll',\n                'left',\n              )}\n            >\n              <div\n                className={classNames(\n                  'scroll-edge',\n                  'left',\n                )}\n              />\n              <button\n                className={classNames(\n                  'tool-group-button',\n                )}\n                onClick={() => {\n                  // Move two tools over\n                  // don't use scrollTo as it doesn't work in IE11\n                  scrollRef.current.scrollTop = 0;\n                  scrollRef.current.scrollLeft = scrollRef.current.scrollLeft - 54 * 2;\n                }}\n                aria-label={t('action.prev')}\n              >\n                <Icon  glyph=\"icon-chevron-left\" />\n              </button>\n            </div>}\n          {!isScrolledToEnd &&\n            <div\n              className={classNames(\n                'chevron-scroll',\n                'right',\n              )}\n            >\n              <button\n                className={classNames(\n                  'tool-group-button',\n                )}\n                onClick={() => {\n                  // Move two tools over\n                  // don't use scrollTo as it doesn't work in IE11\n                  scrollRef.current.scrollTop = 0;\n                  scrollRef.current.scrollLeft = scrollRef.current.scrollLeft + 54 * 2;\n                }}\n                aria-label={t('action.next')}\n              >\n                <Icon  glyph=\"icon-chevron-right\" />\n              </button>\n            </div>}\n          <div\n            className=\"tool-group-buttons-scroll\"\n            ref={scrollRef}\n            onScroll={checkScrollPosition}\n          >\n            {\n              children           \n            }\n          </div>\n        </div>\n      )}\n    </Measure>\n  );\n};\n\nexport default ScrollGroup;\n","import React from 'react';\nimport ToolGroupButton from 'components/ToolGroupButton';\nimport ScrollGroup from './ScrollGroup';\n\nconst ToolGroupButtonsScroll = ({ toolGroupButtonsItems }) => {\n  return <ScrollGroup>\n    {\n      toolGroupButtonsItems.map((toolBtn, i) => {\n        const { type, dataElement, hidden } = toolBtn;\n        const mediaQueryClassName = hidden ? hidden.map(screen => `hide-in-${screen}`).join(' ') : '';\n        const innerKey = `${type}-${dataElement || i}`;\n\n        return (\n          <React.Fragment key={innerKey}>\n            {\n              <ToolGroupButton key={innerKey} mediaQueryClassName={mediaQueryClassName} {...toolBtn} />\n            }\n          </React.Fragment>\n        );\n      })}\n  </ScrollGroup>\n};\n\nexport default ToolGroupButtonsScroll;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToolButton from 'components/ToolButton';\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport ToolGroupButton from 'components/ToolGroupButton';\nimport ActionButton from 'components/ActionButton';\nimport StatefulButton from 'components/StatefulButton';\nimport CustomElement from 'components/CustomElement';\nimport ToolGroupButtonsScroll from './ToolGroupButtonsScroll';\nimport ScrollGroup from './ScrollGroup';\nimport useMedia from 'hooks/useMedia';\nimport { isMobileDeviceFunc } from 'helpers/device';\n\nimport './HeaderItems.scss';\n\nclass HeaderItems extends React.PureComponent {\n  static propTypes = {\n    isToolGroupReorderingEnabled: PropTypes.bool.isRequired,\n    items: PropTypes.arrayOf(PropTypes.object).isRequired,\n    isInDesktopOnlyMode: PropTypes.bool\n  }\n\n  render() {\n    const { items, isToolGroupReorderingEnabled, isInDesktopOnlyMode } = this.props;\n    let handledToolGroupButtons = false;\n\n    const headers = items.map((item, i) => {\n      const { type, dataElement, hidden, toolName, hiddenOnMobileDevice } = item;\n      let mediaQueryClassName = hidden ? hidden.map(screen => {\n        let result = '';\n        if (isInDesktopOnlyMode) {\n          // if in desktop only mode and if it should hide in desktop\n          // append style to always make it hidden\n          if (screen === 'desktop') {\n            result = `always-hide hide-in-${screen}`;\n          }\n        } else {\n          result = `hide-in-${screen}`;\n        }\n        return result;\n      })\n        .join(' ') : '';\n      if (hiddenOnMobileDevice && isMobileDeviceFunc()) {\n        mediaQueryClassName += ' hide-in-mobile hide-in-small-mobile';\n      }\n      const key = `${type}-${dataElement || i}`;\n\n      switch (type) {\n        case 'toolButton':\n          return <ToolButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'scrollGroup':\n          return <ScrollGroup key={key}>\n            <HeaderItems items={item.children} isToolGroupReorderingEnabled={isToolGroupReorderingEnabled} isInDesktopOnlyMode={isInDesktopOnlyMode} />\n          </ScrollGroup>;\n        case 'toolGroupButton':\n          if (!isToolGroupReorderingEnabled) {\n            return <ToolGroupButton  key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n          } else if (!handledToolGroupButtons) {\n            handledToolGroupButtons = true;\n            const toolGroupButtonsItems = items.filter(({ type }) => (type === 'toolGroupButton'));\n            return <ToolGroupButtonsScroll key={key} toolGroupButtonsItems={toolGroupButtonsItems} />;\n          }\n          return null;\n        case 'toggleElementButton':\n          return <ToggleElementButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'actionButton':\n          return <ActionButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'statefulButton':\n          return <StatefulButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'customElement':\n          return <CustomElement key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'spacer':\n        case 'divider':\n          return <div key={key} className={`${type} ${mediaQueryClassName}`}></div>;\n        default:\n          console.warn(`${type} is not a valid header item type.`);\n          return null;\n      }\n    });\n\n    return (\n      <div className=\"HeaderItems\">\n        { headers }\n      </div>\n    );\n  }\n}\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return (\n    <HeaderItems {...props} isMobile={isMobile} />\n  );\n};","import HeaderItems from './HeaderItems';\n\nexport default HeaderItems;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport HeaderItems from 'components/HeaderItems';\n\nimport selectors from 'selectors';\nimport classNames from 'classnames';\n\nimport './Header.scss';\n\nclass Header extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    activeHeaderItems: PropTypes.array.isRequired,\n    isToolGroupReorderingEnabled: PropTypes.bool,\n    isInDesktopOnlyMode: PropTypes.bool,\n    isToolsHeaderOpen: PropTypes.bool,\n    isMultiTab: PropTypes.bool,\n    currentToolbarGroup: PropTypes.string,\n  }\n\n  render() {\n    const { isDisabled, activeHeaderItems, isOpen, isToolsHeaderOpen, currentToolbarGroup, isMultiTab, isToolGroupReorderingEnabled, isInDesktopOnlyMode } = this.props;\n\n    if (isDisabled || !isOpen) {\n      return null;\n    }\n\n    return (\n      <React.Fragment>\n        <div\n          className={classNames({\n            Header: true,\n          })}\n          data-element=\"header\"\n        >\n          <HeaderItems items={activeHeaderItems} isToolGroupReorderingEnabled={isToolGroupReorderingEnabled} isInDesktopOnlyMode={isInDesktopOnlyMode} />\n          {(!isToolsHeaderOpen || currentToolbarGroup === 'toolbarGroup-View') && !isMultiTab\n          && <div className=\"view-header-border\" />}\n        </div>\n      </React.Fragment>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  isMultiTab: selectors.getIsMultiTab(state),\n  currentToolbarGroup: selectors.getCurrentToolbarGroup(state),\n  isToolsHeaderOpen: selectors.isElementOpen(state, 'toolsHeader'),\n  isDisabled: selectors.isElementDisabled(state, 'header'),\n  isOpen: selectors.isElementOpen(state, 'header'),\n  activeHeaderItems: selectors.getActiveHeaderItems(state),\n  isToolGroupReorderingEnabled: selectors.isToolGroupReorderingEnabled(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state),\n});\n\nexport default connect(mapStateToProps)(Header);\n","import Header from './Header';\n\nexport default Header;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport actions from 'actions';\nimport classNames from 'classnames';\n\nimport HeaderItems from 'components/HeaderItems';\nimport useMedia from 'hooks/useMedia';\n\nimport selectors from 'selectors';\n\nimport './Header.scss';\n\n\nclass ToolsHeader extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    activeHeaderItems: PropTypes.array.isRequired,\n    isToolGroupReorderingEnabled: PropTypes.bool,\n    isInDesktopOnlyMode: PropTypes.bool\n  }\n\n  render() {\n    const { isDisabled, activeHeaderItems, isOpen, currentToolbarGroup, isToolGroupReorderingEnabled, isInDesktopOnlyMode } = this.props;\n\n    const isVisible = !isDisabled && isOpen && currentToolbarGroup !== 'toolbarGroup-View';\n\n    return (\n      <div\n        className={classNames({\n          'HeaderToolsContainer': true,\n          'closed': !isVisible,\n        })}\n        data-element=\"toolsHeader\"\n      >\n        <div\n          className=\"Header Tools\"\n        >\n          <HeaderItems items={activeHeaderItems} isToolGroupReorderingEnabled={isToolGroupReorderingEnabled} isInDesktopOnlyMode={isInDesktopOnlyMode} />\n        </div>\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  currentToolbarGroup: selectors.getCurrentToolbarGroup(state),\n  isDisabled: selectors.isElementDisabled(state, 'toolsHeader'),\n  isOpen: selectors.isElementOpen(state, 'toolsHeader'),\n  activeHeaderItems: selectors.getToolsHeaderItems(state),\n  isToolsOverlayOpen: selectors.isElementOpen(state, 'toolsOverlay'),\n  isToolsOverlayDisabled: selectors.isElementDisabled(state, 'toolsOverlay'),\n  isSignatureOverlayOpen: selectors.isElementOpen(state, 'signatureOverlay'),\n  isSignatureOverlayDisabled: selectors.isElementDisabled(state, 'signatureOverlay'),\n  isToolGroupReorderingEnabled: selectors.isToolGroupReorderingEnabled(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state)\n});\n\nconst mapDispatchToProps = {\n  setActiveToolGroup: actions.setActiveToolGroup,\n};\n\n// export default connect(mapStateToProps, mapDispatchToProps)(ToolsHeader) ;\n\nconst ConnectedToolsHeader = connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(ToolsHeader);\n\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const isTabletAndMobile = useMedia(\n    // Media queries\n    ['(max-width: 900px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n\n  return (\n    <ConnectedToolsHeader {...props} isMobile={isMobile} isTabletAndMobile={isTabletAndMobile} />\n  );\n};","export default [\n  {\n    displayMode: 'Single',\n    pageTransition: 'default',\n    layout: 'single',\n  },\n  {\n    displayMode: 'Continuous',\n    pageTransition: 'continuous',\n    layout: 'single',\n  },\n  {\n    displayMode: 'Facing',\n    pageTransition: 'default',\n    layout: 'double',\n  },\n  {\n    displayMode: 'FacingContinuous',\n    pageTransition: 'continuous',\n    layout: 'double',\n  },\n  {\n    displayMode: 'CoverFacing',\n    pageTransition: 'default',\n    layout: 'cover',\n  },\n  {\n    displayMode: 'Cover',\n    pageTransition: 'continuous',\n    layout: 'cover',\n  },\n];","export default (element, overlay, isTabletAndMobile, isSmallBrowserHeight) => {\n  const button = document.querySelector(`[data-element=${element}]`);\n  let left = 0;\n  let right = 'auto';\n\n  // by default the button is visible in the header\n  // but it can be removed from the DOM by calling viewerInstance.disableElement(...);\n  // in this case we are not able to position the overlay correctly so we just \"hide\" the overlay\n  if (!button || !overlay.current) {\n    return { left: -9999, right };\n  }\n\n  const {\n    bottom: buttonBottom,\n    left: buttonLeft,\n  } = button.getBoundingClientRect();\n  const { width: overlayWidth, height: overlayHeight } = overlay.current.getBoundingClientRect();\n\n  if (buttonLeft + overlayWidth > window.innerWidth) {\n    const rightMargin = 6;\n    left = window.innerWidth - rightMargin - overlayWidth;\n    right = 'auto';\n  } else {\n    left = buttonLeft;\n    right = 'auto';\n  }\n\n  let maxHeight;\n  const verticalGap = isTabletAndMobile ? 14 : 6;\n  let top = buttonBottom + verticalGap;\n  if (buttonBottom > window.innerHeight / 2) {\n    top = 0;\n    maxHeight = window.innerHeight;\n  } else if ((buttonBottom + overlayHeight > window.innerHeight) && !isSmallBrowserHeight) {\n    top = window.innerHeight - overlayHeight - verticalGap;\n  }\n\n  return {\n    left: !isNaN(left) ? Math.max(left, 0) : left,\n    right,\n    top,\n    ...(maxHeight && { maxHeight })\n  };\n};\n","import { useEffect } from 'react';\n\n// https://usehooks.com/useOnClickOutside/\nexport default (ref, handler) => {\n  useEffect(\n    () => {\n      const listener = event => {\n        // Do nothing if clicking ref's element or descendent elements\n        if (!ref.current || ref.current.contains(event.target)) {\n          return;\n        }\n\n        handler(event);\n      };\n\n      document.addEventListener('mousedown', listener);\n      document.addEventListener('touchstart', listener);\n\n      return () => {\n        document.removeEventListener('mousedown', listener);\n        document.removeEventListener('touchstart', listener);\n      };\n    },\n    // Add ref and handler to effect dependencies\n    // It's worth noting that because passed in handler is a new ...\n    // ... function on every render that will cause this effect ...\n    // ... callback/cleanup to run every render. It's not a big deal ...\n    // ... but to optimize you can wrap handler in useCallback before ...\n    // ... passing it into this hook.\n    [ref, handler],\n  );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\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 _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar defaultProps = {\n  preventDefaultTouchmoveEvent: false,\n  delta: 10,\n  rotationAngle: 0,\n  trackMouse: false,\n  trackTouch: true\n};\nvar initialState = {\n  xy: [0, 0],\n  swiping: false,\n  eventData: undefined,\n  start: undefined\n};\nvar LEFT = 'Left';\nvar RIGHT = 'Right';\nvar UP = 'Up';\nvar DOWN = 'Down';\nvar touchStart = 'touchstart';\nvar touchMove = 'touchmove';\nvar touchEnd = 'touchend';\nvar mouseMove = 'mousemove';\nvar mouseUp = 'mouseup';\n\nfunction getDirection(absX, absY, deltaX, deltaY) {\n  if (absX > absY) {\n    if (deltaX > 0) {\n      return LEFT;\n    }\n\n    return RIGHT;\n  } else if (deltaY > 0) {\n    return UP;\n  }\n\n  return DOWN;\n}\n\nfunction rotateXYByAngle(pos, angle) {\n  if (angle === 0) return pos;\n  var angleInRadians = Math.PI / 180 * angle;\n  var x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n  var y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n  return [x, y];\n}\n\nfunction getHandlers(set, handlerProps) {\n  var onStart = function onStart(event) {\n    // if more than a single touch don't track, for now...\n    if (event.touches && event.touches.length > 1) return;\n    set(function (state, props) {\n      // setup mouse listeners on document to track swipe since swipe can leave container\n      if (props.trackMouse) {\n        document.addEventListener(mouseMove, onMove);\n        document.addEventListener(mouseUp, onUp);\n      }\n\n      var _ref = event.touches ? event.touches[0] : event,\n          clientX = _ref.clientX,\n          clientY = _ref.clientY;\n\n      var xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n      return _extends({}, state, initialState, {\n        eventData: {\n          initial: [].concat(xy),\n          first: true\n        },\n        xy: xy,\n        start: event.timeStamp || 0\n      });\n    });\n  };\n\n  var onMove = function onMove(event) {\n    set(function (state, props) {\n      if (!state.xy[0] || !state.xy[1] || event.touches && event.touches.length > 1) {\n        return state;\n      }\n\n      var _ref2 = event.touches ? event.touches[0] : event,\n          clientX = _ref2.clientX,\n          clientY = _ref2.clientY;\n\n      var _rotateXYByAngle = rotateXYByAngle([clientX, clientY], props.rotationAngle),\n          x = _rotateXYByAngle[0],\n          y = _rotateXYByAngle[1];\n\n      var deltaX = state.xy[0] - x;\n      var deltaY = state.xy[1] - y;\n      var absX = Math.abs(deltaX);\n      var absY = Math.abs(deltaY);\n      var time = (event.timeStamp || 0) - state.start;\n      var velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1); // if swipe is under delta and we have not started to track a swipe: skip update\n\n      if (absX < props.delta && absY < props.delta && !state.swiping) return state;\n      var dir = getDirection(absX, absY, deltaX, deltaY);\n\n      var eventData = _extends({}, state.eventData, {\n        event: event,\n        absX: absX,\n        absY: absY,\n        deltaX: deltaX,\n        deltaY: deltaY,\n        velocity: velocity,\n        dir: dir\n      });\n\n      props.onSwiping && props.onSwiping(eventData); // track if a swipe is cancelable(handler for swiping or swiped(dir) exists)\n      // so we can call preventDefault if needed\n\n      var cancelablePageSwipe = false;\n\n      if (props.onSwiping || props.onSwiped || props[\"onSwiped\" + dir]) {\n        cancelablePageSwipe = true;\n      }\n\n      if (cancelablePageSwipe && props.preventDefaultTouchmoveEvent && props.trackTouch && event.cancelable) event.preventDefault(); // first is now always false\n\n      return _extends({}, state, {\n        eventData: _extends({}, eventData, {\n          first: false\n        }),\n        swiping: true\n      });\n    });\n  };\n\n  var onEnd = function onEnd(event) {\n    set(function (state, props) {\n      var eventData;\n\n      if (state.swiping) {\n        eventData = _extends({}, state.eventData, {\n          event: event\n        });\n        props.onSwiped && props.onSwiped(eventData);\n        props[\"onSwiped\" + eventData.dir] && props[\"onSwiped\" + eventData.dir](eventData);\n      }\n\n      return _extends({}, state, initialState, {\n        eventData: eventData\n      });\n    });\n  };\n\n  var cleanUpMouse = function cleanUpMouse() {\n    // safe to just call removeEventListener\n    document.removeEventListener(mouseMove, onMove);\n    document.removeEventListener(mouseUp, onUp);\n  };\n\n  var onUp = function onUp(e) {\n    cleanUpMouse();\n    onEnd(e);\n  };\n\n  var attachTouch = function attachTouch(el) {\n    if (el && el.addEventListener) {\n      // attach touch event listeners and handlers\n      var tls = [[touchStart, onStart], [touchMove, onMove], [touchEnd, onEnd]];\n      tls.forEach(function (_ref3) {\n        var e = _ref3[0],\n            h = _ref3[1];\n        return el.addEventListener(e, h);\n      }); // return properly scoped cleanup method for removing listeners\n\n      return function () {\n        return tls.forEach(function (_ref4) {\n          var e = _ref4[0],\n              h = _ref4[1];\n          return el.removeEventListener(e, h);\n        });\n      };\n    }\n  };\n\n  var onRef = function onRef(el) {\n    // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n    // ignore null here\n    if (el === null) return;\n    set(function (state, props) {\n      // if the same DOM el as previous just return state\n      if (state.el === el) return state;\n      var addState = {}; // if new DOM el clean up old DOM and reset cleanUpTouch\n\n      if (state.el && state.el !== el && state.cleanUpTouch) {\n        state.cleanUpTouch();\n        addState.cleanUpTouch = null;\n      } // only attach if we want to track touch\n\n\n      if (props.trackTouch && el) {\n        addState.cleanUpTouch = attachTouch(el);\n      } // store event attached DOM el for comparison, clean up, and re-attachment\n\n\n      return _extends({}, state, {\n        el: el\n      }, addState);\n    });\n  }; // set ref callback to attach touch event listeners\n\n\n  var output = {\n    ref: onRef // if track mouse attach mouse down listener\n\n  };\n\n  if (handlerProps.trackMouse) {\n    output.onMouseDown = onStart;\n  }\n\n  return [output, attachTouch];\n}\n\nfunction updateTransientState(state, props, attachTouch) {\n  var addState = {}; // clean up touch handlers if no longer tracking touches\n\n  if (!props.trackTouch && state.cleanUpTouch) {\n    state.cleanUpTouch();\n    addState.cleanUpTouch = null;\n  } else if (props.trackTouch && !state.cleanUpTouch) {\n    // attach/re-attach touch handlers\n    if (state.el) {\n      addState.cleanUpTouch = attachTouch(state.el);\n    }\n  }\n\n  return _extends({}, state, addState);\n}\n\nfunction useSwipeable(props) {\n  var trackMouse = props.trackMouse;\n  var transientState = React.useRef(_extends({}, initialState, {\n    type: 'hook'\n  }));\n  var transientProps = React.useRef();\n  transientProps.current = _extends({}, defaultProps, props);\n\n  var _React$useMemo = React.useMemo(function () {\n    return getHandlers(function (cb) {\n      return transientState.current = cb(transientState.current, transientProps.current);\n    }, {\n      trackMouse: trackMouse\n    });\n  }, [trackMouse]),\n      handlers = _React$useMemo[0],\n      attachTouch = _React$useMemo[1];\n\n  transientState.current = updateTransientState(transientState.current, transientProps.current, attachTouch);\n  return handlers;\n}\nvar Swipeable =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inheritsLoose(Swipeable, _React$PureComponent);\n\n  function Swipeable(props) {\n    var _this;\n\n    _this = _React$PureComponent.call(this, props) || this;\n\n    _this._set = function (cb) {\n      _this.transientState = cb(_this.transientState, _this.props);\n    };\n\n    _this.transientState = _extends({}, initialState, {\n      type: 'class'\n    });\n    return _this;\n  }\n\n  var _proto = Swipeable.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        style = _this$props.style,\n        _this$props$nodeName = _this$props.nodeName,\n        nodeName = _this$props$nodeName === void 0 ? 'div' : _this$props$nodeName,\n        innerRef = _this$props.innerRef,\n        children = _this$props.children,\n        trackMouse = _this$props.trackMouse;\n\n    var _getHandlers = getHandlers(this._set, {\n      trackMouse: trackMouse\n    }),\n        handlers = _getHandlers[0],\n        attachTouch = _getHandlers[1];\n\n    this.transientState = updateTransientState(this.transientState, this.props, attachTouch);\n    var ref = innerRef ? function (el) {\n      return innerRef(el), handlers.ref(el);\n    } : handlers.ref;\n    return React.createElement(nodeName, _extends({}, handlers, {\n      className: className,\n      style: style,\n      ref: ref\n    }), children);\n  };\n\n  return Swipeable;\n}(React.PureComponent);\nSwipeable.propTypes = {\n  onSwiped: PropTypes.func,\n  onSwiping: PropTypes.func,\n  onSwipedUp: PropTypes.func,\n  onSwipedRight: PropTypes.func,\n  onSwipedDown: PropTypes.func,\n  onSwipedLeft: PropTypes.func,\n  delta: PropTypes.number,\n  preventDefaultTouchmoveEvent: PropTypes.bool,\n  nodeName: PropTypes.string,\n  trackMouse: PropTypes.bool,\n  trackTouch: PropTypes.bool,\n  innerRef: PropTypes.func,\n  rotationAngle: PropTypes.number\n};\nSwipeable.defaultProps = defaultProps;\n\nexport { DOWN, LEFT, RIGHT, Swipeable, UP, useSwipeable };\n","/**\n * Returns an object describing whether the object is visible. It will detect if\n * the item is cut off by either the top or bottom of the window, or by the\n * container passed in.\n * @param element The element to detect scroll position of.\n * @param container The scroll container which could be cutting off the item.\n */\nexport function isScrolledIntoView(element, container) {\n    if (!element || !container)\n        return { isVisible: true, isAbove: false, isBelow: false };\n    var elem = element.getBoundingClientRect();\n    var cont = container.getBoundingClientRect();\n    var elemTop = elem.top;\n    var elemBottom = elem.bottom;\n    // Can be cut off by container, or by window if container extends outside.\n    var contTop = Math.max(cont.top, 0);\n    var contBottom = Math.min(cont.bottom, window.innerHeight);\n    // Only completely visible elements return true:\n    var isAbove = elemTop < contTop;\n    var isBelow = elemBottom > contBottom;\n    var isVisible = !isAbove && !isBelow;\n    return { isVisible: isVisible, isAbove: isAbove, isBelow: isBelow };\n}\n/**\n * Get a sibling in the DOM based on an index diff.\n * @param element The element to find the sibling of.\n * @param indexDiff The index diff of the sibling to find (ex: 1 returns next sibling).\n */\nexport function getSibling(element, indexDiff) {\n    if (!element || !element.parentElement)\n        return undefined;\n    var siblings = Array.from(element.parentElement.children);\n    var nodeIndex = siblings.indexOf(element);\n    // Get the item occupying the previous index location.\n    var sibling = siblings[nodeIndex + indexDiff];\n    return sibling;\n}\n/**\n * Generates a click mouse event from an input keyboard event.\n * @param keyboardEvent The keyboard event to translate into a mouse event.\n */\nexport function generateClickEventFromKeyboardEvent(keyboardEvent) {\n    var clickEvent = new MouseEvent('click', {\n        bubbles: keyboardEvent.bubbles,\n        cancelable: keyboardEvent.cancelable,\n        altKey: keyboardEvent.altKey,\n        shiftKey: keyboardEvent.shiftKey,\n        ctrlKey: keyboardEvent.ctrlKey,\n        metaKey: keyboardEvent.metaKey,\n    });\n    return clickEvent;\n}\n/**\n * A string for querying all focusable elements.\n */\nexport var focusableElementDomString = [\n    'a[href]',\n    'area[href]',\n    'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n    'select:not([disabled]):not([aria-hidden])',\n    'textarea:not([disabled]):not([aria-hidden])',\n    'button:not([disabled]):not([aria-hidden])',\n    'iframe',\n    'object',\n    'embed',\n    '[contenteditable]',\n    '[tabindex]:not([tabindex^=\"-\"])',\n].join(',');\n","export function isKeyboardNav() {\n  return document.documentElement.getAttribute('data-tabbing') === 'true';\n}\n\nexport function findFocusableIndex(elements, toFind) {\n  let index = -1;\n  if (!toFind) {\n    return index;\n  }\n  for (let i = 0; i < elements.length; i++) {\n    if (elements[i] === toFind) {\n      index = i;\n      break;\n    }\n  }\n  return index;\n}\n\nexport function escapePressListener(event, onEscapeFunction) {\n  if (event.key === 'Escape') {\n    onEscapeFunction(event);\n  }\n}\n","import { useEffect, useCallback } from 'react';\nimport { focusableElementDomString } from '@pdftron/webviewer-react-toolkit';\nimport { findFocusableIndex } from '../helpers/accessibility';\n\n/**\n * Use arrows to focus within a menu.\n * @param {boolean} isOpen Is the menu currently open.\n * @param {Function} onClose Function to close menu. Must be memoized!\n * @param {HTMLElement} overlayRef The wrapper element for the menu.\n */\nexport default function useArrowFocus(isOpen, onClose, overlayRef) {\n  const getFocusableElements = useCallback(() => {\n    return overlayRef.current.querySelectorAll(focusableElementDomString);\n  }, [overlayRef]);\n\n  useEffect(() => {\n    if (isOpen) {\n      const lastFocusedElement = document.activeElement;\n\n      const keydownListener = e => {\n        // Tab and escape close the menu.\n        if (e.key === 'Tab' || e.key === 'Escape') {\n          onClose();\n          if (lastFocusedElement) {\n            lastFocusedElement.focus();\n          }\n          return;\n        }\n\n        // Up and Down keys used to navigate overlay menu.\n        if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n          const focusable = getFocusableElements();\n\n          if (focusable.length === 0) {\n            return;\n          }\n\n          let focusIndex = findFocusableIndex(focusable, document.activeElement);\n          if (e.key === 'ArrowUp' && focusIndex === -1) {\n            focusIndex = 0;\n          }\n\n          const vector = e.key === 'ArrowUp' ? -1 : 1;\n          focusable[(focusIndex + vector + focusable.length) % focusable.length].focus();\n          // User is \"tabbing\", so show button outlines.\n          document.documentElement.setAttribute('data-tabbing', 'true');\n        }\n      };\n\n      window.addEventListener('keydown', keydownListener);\n      return () => window.removeEventListener('keydown', keydownListener);\n    }\n  }, [getFocusableElements, isOpen, onClose]);\n}\n","import actions from 'actions';\nimport classNames from 'classnames';\nimport getOverlayPositionBasedOn from 'helpers/getOverlayPositionBasedOn';\nimport useMedia from 'hooks/useMedia';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Swipeable } from 'react-swipeable';\nimport selectors from 'selectors';\nimport useArrowFocus from '../../hooks/useArrowFocus';\nimport './FlyoutMenu.scss';\n\nconst MENUS = [\n  'menuOverlay',\n  'groupOverlay',\n  'viewControlsOverlay',\n  'searchOverlay',\n  'signatureOverlay',\n  'zoomOverlay',\n  'redactionOverlay',\n  'toolStylePopup',\n  'pageManipulationOverlay',\n  'thumbnailsControlRotatePopup',\n  'thumbnailsControlInsertPopup',\n  'thumbnailsControlManipulatePopup',\n  'tabMenu',\n];\n\nconst TRIGGERS = [\n  'menuButton',\n  'viewControlsButton',\n  'zoomOverlayButton',\n  'pageManipulationOverlayButton',\n  'thumbnailsControlRotatePopupTrigger',\n  'thumbnailsControlInsertPopupTrigger',\n  'thumbnailsControlManipulatePopupTrigger',\n  'tabTrigger',\n];\n\nconst propTypes = {\n  /** Menu must be one of the available menus. */\n  menu: PropTypes.oneOf(MENUS).isRequired,\n  /** The button that triggered the menu. */\n  trigger: PropTypes.oneOf(TRIGGERS).isRequired,\n  /** The menu content. */\n  children: PropTypes.node.isRequired,\n  /** Fired when the menu is closed. */\n  onClose: PropTypes.func,\n  /** Accessibility */\n  ariaLabel: PropTypes.string,\n};\n\nfunction FlyoutMenu({ menu, trigger, onClose, children, ariaLabel }) {\n  const dispatch = useDispatch();\n\n  const allOtherMenus = useMemo(() => MENUS.filter(m => m !== menu), [menu]);\n\n  const isDisabled = useSelector(state => selectors.isElementDisabled(state, menu));\n  const isOpen = useSelector(state => selectors.isElementOpen(state, menu));\n\n  const isInDesktopOnlyMode = useSelector(state => selectors.isInDesktopOnlyMode(state));\n\n  const closeMenu = useCallback(() => {\n    dispatch(actions.closeElements([menu]));\n    onClose && onClose();\n  }, [dispatch, menu, onClose]);\n\n  const overlayRef = useRef(null);\n  useArrowFocus(!isDisabled && isOpen, closeMenu, overlayRef);\n\n  const onClickOutside = useCallback(\n    e => {\n      const menuButton = document.querySelector(`[data-element=\"${trigger}\"]`);\n      const clickedMenuButton = menuButton?.contains(e.target);\n      if (!clickedMenuButton) {\n        closeMenu();\n      }\n    },\n    [closeMenu, trigger],\n  );\n  useOnClickOutside(overlayRef, onClickOutside);\n\n  const [position, setPosition] = useState(() => ({ left: 0, right: 'auto', top: 'auto' }));\n  const isMobile = useMedia(['(max-width: 640px)'], [true], false);\n  const isTabletOrMobile = useMedia(['(max-width: 900px)'], [true], false);\n  const isSmallBrowserHeight = useMedia(['(max-height: 500px)'], [true], false);\n\n  // When open: close others, position, and listen for resizes to position.\n  // Uselayouteffect prevents \"jumpy\" behaviour from opening in old position and immediately repositioning the flyout\n  useLayoutEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElements(allOtherMenus));\n\n      const onResize = () => {\n        const overlayPosition = getOverlayPositionBasedOn(trigger, overlayRef, isMobile && isTabletOrMobile, isSmallBrowserHeight);\n\n        if (isSmallBrowserHeight) {\n          overlayPosition.maxHeight = window.innerHeight - overlayPosition.top\n        }\n\n        setPosition(overlayPosition);\n      };\n      onResize();\n\n      window.addEventListener('resize', onResize);\n      return () => window.removeEventListener('resize', onResize);\n    }\n  }, [allOtherMenus, dispatch, isOpen, isTabletOrMobile, trigger, isSmallBrowserHeight, isMobile]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  const overlayClass = classNames('Overlay', 'FlyoutMenu', {\n    mobile: isMobile && !isInDesktopOnlyMode,\n    closed: !isOpen,\n  });\n\n  return (\n    <Swipeable onSwipedUp={closeMenu} onSwipedDown={closeMenu} preventDefaultTouchmoveEvent>\n      <div className={overlayClass} data-element={menu} style={(!isMobile || isInDesktopOnlyMode) ? position : undefined} ref={overlayRef} role=\"listbox\" aria-label={ariaLabel}>\n        {isMobile && !isInDesktopOnlyMode && <div className=\"swipe-indicator\" />}\n        {children}\n      </div>\n    </Swipeable>\n  );\n}\n\nFlyoutMenu.propTypes = propTypes;\nexport default FlyoutMenu;\n","/**\n * An instance of Hotkeys that can be used to enable, disable or register custom hotkeys in the viewer\n * @name UI.hotkeys\n * @see UI.Hotkeys\n * @type {Class<UI.Hotkeys>}\n */\n\nimport hotkeysManager, { Keys } from 'helpers/hotkeysManager';\n\nexport default {\n  on: (...args) => {\n    hotkeysManager.on(...args);\n  },\n  off: (...args) => {\n    hotkeysManager.off(...args);\n  },\n  Keys,\n};\n","class LocalStorageManager {\n  constructor() {\n    // Browser will throw an error after accessing window.localStorage\n    // when loading webviewer through an iframe. So we add a catch.\n    try {\n      this.localStorageEnabled = !!window.localStorage;\n    } catch (error) {\n      console.error('window.localStorage unavailable. Disabling local storage.');\n      this.localStorageEnabled = false;\n    }\n  }\n\n  enableLocalStorage() {\n    this.localStorageEnabled = true;\n  }\n\n  disableLocalStorage() {\n    this.localStorageEnabled = false;\n  }\n\n  isLocalStorageEnabled() {\n    return this.localStorageEnabled;\n  }\n}\n\nexport default new LocalStorageManager();","import core from 'core';\nimport { isIOS } from 'helpers/device';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport { getDataWithKey, mapToolNameToKey } from 'constants/map';\nimport { getMinZoomLevel, getMaxZoomLevel } from 'constants/zoomFactors';\n\nconst touchType = {\n  TAP: 'tap',\n  DOUBLE_TAP: 'doubleTap',\n  PINCH: 'pinch',\n  PAN: 'pan',\n  SWIPE: 'swipe'\n};\n\nconst TouchEventManager = {\n  initialize(document, container) {\n    this.document = document;\n    this.container = container;\n    this.allowSwipe = true;\n    this.allowHorizontalSwipe = true;\n    this.allowVerticalSwipe = false;\n    this.verticalMomentum = 0;\n    this.horziontalMomentum = 0;\n    this.verticalLock = false;\n    this.horziontalLock = false;\n    this.enableTouchScrollLock = true;\n    this.startingScrollLeft = null;\n    this.startingScrollTop = null;\n    this.useNativeScroll = false;\n    this.touch = {\n      clientX: 0,\n      clientY: 0,\n      distance: 0,\n      horizontalDistance: 0,\n      verticalDistance: 0,\n      scale: 1,\n      zoom: 1,\n      type: '',\n    };\n    this.handleTouchStart = this.handleTouchStart.bind(this);\n    this.handleTouchMove = this.handleTouchMove.bind(this);\n    this.handleTouchEnd = this.handleTouchEnd.bind(this);\n    this.handleTouchCancel = this.handleTouchCancel.bind(this);\n    this.container.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n    this.container.addEventListener('touchmove', this.handleTouchMove, { passive: false });\n    this.container.addEventListener('touchend', this.handleTouchEnd, { passive: false });\n    this.container.addEventListener('touchcancel', this.handleTouchCancel, { passive: false });\n  },\n  terminate() {\n    this.container.removeEventListener('touchstart', this.handleTouchStart);\n    this.container.removeEventListener('touchmove', this.handleTouchMove);\n    this.container.removeEventListener('touchend', this.handleTouchEnd);\n    this.container.removeEventListener('touchcancel', this.handleTouchCancel);\n  },\n  handleTouchStart(e) {\n    switch (e.touches.length) {\n      case 1: {\n        const touch = e.touches[0];\n        const scrollWidth = this.container.clientWidth;\n        const viewerWidth = this.document.clientWidth;\n        const isDoubleTap = this.touch.type === touchType.TAP && this.getDistance(this.touch, touch) <= 10;\n        this.touch = {\n          clientX: touch.clientX,\n          clientY: touch.clientY,\n          distance: 0,\n          scale: scrollWidth / viewerWidth,\n          zoom: core.getZoom(),\n          type: isDoubleTap ? touchType.DOUBLE_TAP : touchType.TAP,\n          touchStartTimeStamp: Date.now(),\n          stopMomentumScroll: true,\n          touchMoveCount: 0,\n        };\n        this.startingScrollLeft = this.container.scrollLeft;\n        this.startingScrollTop = this.container.scrollTop;\n        clearTimeout(this.doubleTapTimeout);\n        break;\n      }\n      case 2: {\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n\n        const t1 = e.touches[0];\n        const t2 = e.touches[1];\n        const clientX = (t1.clientX + t2.clientX) / 2;\n        const clientY = (t1.clientY + t2.clientY) / 2;\n        const docX = clientX - this.document.offsetLeft + this.container.scrollLeft;\n        const docY = clientY - this.document.offsetTop + this.container.scrollTop;\n        this.touch = {\n          previousPinchScale: 0,\n          marginLeft: this.document.offsetLeft,\n          marginTop: parseFloat(window.getComputedStyle(this.document).marginTop),\n          clientX,\n          clientY,\n          docX,\n          docY,\n          distance: this.getDistance(t1, t2),\n          scale: 1,\n          zoom: core.getZoom(),\n          touchStartTimeStamp: Date.now(),\n          stopMomentumScroll: true,\n          touchMoveCount: 0,\n        };\n        if (!isIOS) {\n          this.document.style.transformOrigin = `${docX}px ${docY}px`;\n        }\n        this.startingScrollLeft = this.container.scrollLeft;\n        this.startingScrollTop = this.container.scrollTop;\n        break;\n      }\n    }\n  },\n  axisLockThreshold: 8,\n  isScrollingVertically() {\n    return (Math.abs(this.verticalMomentum) > 0 && this.horziontalMomentum === 0) || (Math.abs(this.touch.verticalDistance) > this.axisLockThreshold * Math.abs(this.touch.horizontalDistance));\n  },\n  isScrollingHorziontally() {\n    return (Math.abs(this.horziontalMomentum) > 0 && this.verticalMomentum === 0) || (Math.abs(this.touch.horizontalDistance) > this.axisLockThreshold * Math.abs(this.touch.verticalDistance));\n  },\n  canLockScrolling() {\n    const { container, document: doc } = this;\n    const doesPagesFitOnScreen = doc.clientWidth < container.clientWidth || doc.clientHeight < container.clientHeight;\n    const alreadyLocked = this.verticalLock || this.horziontalLock;\n\n    // using 'touchMoveCount' to disable scroll locking when user is dragging\n    return !doesPagesFitOnScreen && this.enableTouchScrollLock && this.touch.touchMoveCount < 6 && !alreadyLocked;\n  },\n\n  handleScroll(t) {\n    if (this.useNativeScroll) {\n      return;\n    }\n    this.touch.horizontalDistance = this.touch.clientX - t.clientX;\n    this.touch.verticalDistance = this.touch.clientY - t.clientY;\n\n    if (this.canLockScrolling()) {\n      this.verticalLock = this.isScrollingVertically();\n      this.horziontalLock = this.isScrollingHorziontally();\n    }\n\n    if (this.enableTouchScrollLock) {\n      // scroll vertically\n      if (this.verticalLock) {\n        // calc the position in container\n        this.container.scrollTo(this.startingScrollLeft, this.container.scrollTop);\n        this.touch.horizontalDistance = 0;\n      }\n\n      // scroll horizontally\n      if (this.horziontalLock) {\n        // calc the position in container\n        this.container.scrollTo(this.container.scrollLeft, this.startingScrollTop);\n        this.touch.verticalDistance = 0;\n      }\n    }\n  },\n  handleTouchMove(e) {\n    switch (e.touches.length) {\n      case 1: {\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n\n        const t = e.touches[0];\n\n        if (this.getDistance(this.touch, t) > 10) {\n          this.touch.type = touchType.SWIPE;\n        }\n\n        this.handleScroll(t);\n\n        this.touch.touchMoveCount++;\n        break;\n      }\n      case 2: {\n        const t1 = e.touches[0];\n        const t2 = e.touches[1];\n        const panTool = core.getTool('Pan');\n        const isPanning = panTool.isPanning();\n        const isPinching = panTool.isPinching();\n\n        if (isPanning) {\n          this.touch.type = touchType.PAN;\n          if (e.cancelable) {\n            e.preventDefault();\n          }\n\n          const t = {\n            clientX: (t1.clientX + t2.clientX) / 2,\n            clientY: (t1.clientY + t2.clientY) / 2\n          };\n\n          if (this.getDistance(this.touch, t) > 10) {\n            this.touch.type = touchType.SWIPE;\n          }\n\n          this.handleScroll(t);\n          this.touch.touchMoveCount++;\n          break;\n        }\n\n        if (isPinching) {\n          this.touch.type = touchType.PINCH;\n          if (e.cancelable) {\n            e.preventDefault();\n          }\n          this.touch.scale = this.getDistance(t1, t2) / this.touch.distance;\n\n          if (this.touch.scale * this.touch.zoom < getMinZoomLevel()) {\n            this.touch.scale = getMinZoomLevel() / this.touch.zoom;\n          } else if (this.touch.scale * this.touch.zoom > getMaxZoomLevel()) {\n            this.touch.scale = getMaxZoomLevel() / this.touch.zoom;\n          }\n\n          if (isIOS) {\n            const marginLeft = ((this.touch.marginLeft - this.container.offsetLeft) + (1 - this.touch.scale) * this.touch.docX) / this.touch.scale;\n            const marginTop = (this.touch.marginTop + (1 - this.touch.scale) * this.touch.docY) / this.touch.scale;\n            this.document.style.marginLeft = `${marginLeft}px`;\n            this.document.style.marginTop = `${marginTop}px`;\n            this.document.style.zoom = this.touch.scale;\n          } else {\n            this.document.style.transform = `scale(${this.touch.scale})`;\n          }\n          break;\n        }\n      }\n    }\n  },\n  handleTouchEnd(e) {\n    switch (this.touch.type) {\n      case touchType.TAP: {\n        this.doubleTapTimeout = setTimeout(() => {\n          this.touch.type = '';\n        }, 300);\n\n        this.horziontalLock = false;\n        this.verticalLock = false;\n        break;\n      }\n      case touchType.SWIPE: {\n        if (\n          !this.allowSwipe ||\n          this.isUsingAnnotationTools() ||\n          core.getSelectedText().length ||\n          core.getSelectedAnnotations().length\n        ) {\n          return;\n        }\n\n        const { reachedLeft, reachedTop, reachedRight, reachedBottom } = this.reachedBoundary();\n        const threshold = 0.1 * this.container.clientWidth;\n        const swipedToBottom = reachedBottom && this.touch.verticalDistance > threshold;\n        const swipedToTop = reachedTop && this.touch.verticalDistance < -threshold;\n        const swipedToRight = reachedRight && this.touch.horizontalDistance > threshold;\n        const swipedToLeft = reachedLeft && this.touch.horizontalDistance < -threshold;\n\n        const currentPage = core.getCurrentPage();\n        const totalPages = core.getTotalPages();\n        const numberOfPagesToNavigate = getNumberOfPagesToNavigate();\n\n        const isFirstPage = currentPage === 1;\n        const isLastPage = currentPage === totalPages;\n        const isSingleDisplayMode = !core.isContinuousDisplayMode();\n        const shouldGoToPrevPage = isSingleDisplayMode && !isFirstPage && ((swipedToLeft && this.allowHorizontalSwipe) || (swipedToTop && this.allowVerticalSwipe));\n        const shouldGoToNextPage = isSingleDisplayMode && !isLastPage && ((swipedToRight && this.allowHorizontalSwipe) || (swipedToBottom && this.allowVerticalSwipe));\n\n        if (shouldGoToPrevPage) {\n          core.setCurrentPage(Math.max(1, currentPage - numberOfPagesToNavigate));\n        } else if (shouldGoToNextPage) {\n          core.setCurrentPage(Math.min(totalPages, currentPage + numberOfPagesToNavigate));\n        } else if (!this.useNativeScroll) {\n          const millisecondsToSeconds = 1000;\n          const touchDuration = (Date.now() - this.touch.touchStartTimeStamp) / millisecondsToSeconds;\n\n          if (touchDuration < 0.2) {\n            this.touch.stopMomentumScroll = false;\n            this.startMomentumScroll(touchDuration);\n          } else {\n            this.horziontalLock = false;\n            this.verticalLock = false;\n          }\n        }\n        break;\n      }\n      case touchType.DOUBLE_TAP: {\n        const annotationUnderMouse = core.getAnnotationByMouseEvent(e);\n        const isFreeTextUnderMouse = annotationUnderMouse && annotationUnderMouse instanceof Annotations.FreeTextAnnotation;\n\n        if (this.isUsingAnnotationTools()) {\n          const tool = core.getToolMode();\n          tool.finish && tool.finish();\n        } else if (!isFreeTextUnderMouse) {\n          if (this.oldZoom) {\n            this.touch.scale = Math.max(this.oldZoom / this.touch.zoom, getMinZoomLevel() / this.touch.zoom);\n            this.oldZoom = null;\n          } else {\n            this.touch.scale = Math.min(3, getMaxZoomLevel() / this.touch.zoom);\n            this.oldZoom = this.touch.zoom;\n          }\n          const zoom = core.getZoom() * this.touch.scale;\n          const { x, y } = this.getPointAfterScale();\n          core.zoomTo(zoom, x, y);\n        }\n\n        if (isFreeTextUnderMouse) {\n          core\n            .getAnnotationManager()\n            .trigger('annotationDoubleClicked', annotationUnderMouse);\n        }\n\n        break;\n      }\n      case touchType.PINCH: {\n        // sometimes handleTouchEnd will be called twice with the same value of this.touch.scale\n        // depending on how fast two fingers are away of the screen\n        // as a result the document will be zoomed in twice, and we do this check to prevent that from happening\n        if (this.touch.previousPinchScale === this.touch.scale) {\n          return;\n        }\n\n        this.touch.previousPinchScale = this.touch.scale;\n\n        if (isIOS) {\n          this.document.style.zoom = 1;\n          this.document.style.margin = 'auto';\n        } else {\n          this.document.style.transform = 'none';\n        }\n        const zoom = core.getZoom() * this.touch.scale;\n        const { x, y } = this.getPointAfterScale();\n        core.zoomTo(zoom, x, y);\n        break;\n      }\n    }\n    this.touch.touchMoveCount = 0;\n    // Want to use momentum values during 'TouchMove' event, so clear values in 'touchEnd' instead of 'touchStart'\n    this.verticalMomentum = 0;\n    this.horziontalMomentum = 0;\n  },\n  handleTouchCancel(e) {\n    this.handleTouchEnd(e);\n  },\n  startMomentumScroll(touchDuration) {\n    let currentIteration = 1;\n    const iterationsCount = 70;\n    const momentumUnlockThreshold = 1;\n    const initScrollLeft = this.container.scrollLeft;\n    const initScrollTop = this.container.scrollTop;\n    const dHorizontal = this.touch.horizontalDistance / touchDuration / 1.85;\n    const dVertical = this.touch.verticalDistance / touchDuration / 1.85;\n    const momentumScroll = () => {\n      const nextLeft = this.easeOutQuad(currentIteration, initScrollLeft, dHorizontal, iterationsCount);\n      const nextTop = this.easeOutQuad(currentIteration, initScrollTop, dVertical, iterationsCount);\n      this.verticalMomentum = dVertical;\n      this.horziontalMomentum = dHorizontal;\n\n      // 'handleTouchEnd' should set 'touchMoveCount' to 0, using that to determine if a new touch event happened\n      const isNotNewTouchEvent = !this.touch.touchMoveCount;\n      const horzDiff = this.container.scrollLeft - nextLeft;\n      const vertDiff = this.container.scrollTop - nextTop;\n      // if momentum is small enought that it doesn't look like it's moving, disable scroll locking\n      const isMomentumScrollAlmostFinish = (Math.abs(horzDiff) < momentumUnlockThreshold) && (Math.abs(vertDiff) < momentumUnlockThreshold);\n\n      this.container.scrollLeft = nextLeft;\n      this.container.scrollTop = nextTop;\n\n      if (isNotNewTouchEvent && isMomentumScrollAlmostFinish) {\n        // disable lock when momentum scrolling is mostly done and not in the middle of another touch event\n        this.horziontalLock = false;\n        this.verticalLock = false;\n      }\n\n      if (currentIteration < iterationsCount && !this.touch.stopMomentumScroll) {\n        currentIteration++;\n        requestAnimationFrame(momentumScroll);\n      }\n      if (isNotNewTouchEvent && currentIteration === iterationsCount) {\n        // if the page is against the sides and the users swipe quickly, it tries to set Scroll to a value that is outside the range and 'isMomentumScrollAlmostFinish' is never true\n        this.horziontalLock = false;\n        this.verticalLock = false;\n        this.verticalMomentum = 0;\n        this.horziontalMomentum = 0;\n      }\n    };\n\n    requestAnimationFrame(momentumScroll);\n  },\n  easeOutQuad(currentTime, startValue, changeInValue, duration) {\n    // http://gizma.com/easing/#quad2\n    currentTime /= duration;\n\n    return -changeInValue * currentTime * (currentTime - 2) + startValue;\n  },\n  reachedBoundary() {\n    const { clientHeight: scrollHeight, clientWidth: scrollWidth, scrollLeft, scrollTop } = this.container;\n    const { clientHeight: viewerHeight, clientWidth: viewerWidth } = this.document;\n\n    return {\n      reachedLeft: scrollLeft <= 0,\n      reachedTop: scrollTop <= 0,\n      reachedBottom: scrollHeight + scrollTop >= viewerHeight,\n      reachedRight: scrollWidth + scrollLeft >= viewerWidth,\n    };\n  },\n  getDistance(t1, t2) {\n    return Math.hypot(t1.clientX - t2.clientX, t1.clientY - t2.clientY);\n  },\n  getPointAfterScale() {\n    const x = (this.touch.clientX + this.container.scrollLeft - this.document.offsetLeft) * this.touch.scale - this.touch.clientX + this.container.offsetLeft;\n    const y = (this.touch.clientY + this.container.scrollTop - this.document.offsetTop) * this.touch.scale - this.touch.clientY + this.container.offsetTop;\n\n    return { x, y };\n  },\n  isUsingAnnotationTools() {\n    const tool = core.getToolMode();\n\n    return getDataWithKey(mapToolNameToKey(tool.name)).annotationCheck;\n  },\n};\n\nexport default Object.create(TouchEventManager);\n","/**\n * Contains string enums for all features for WebViewer UI\n * @name UI.Feature\n * @property {string} Measurement Measurement tools that can create annotations to measure distance, perimeter and area.\n * @property {string} Ribbons A collection of toolbar groups to switch between.\n * @property {string} Annotations Render annotations in the document and be able to edit them.\n * @property {string} Download A download button to download the current document.\n * @property {string} FilePicker Ctrl/Cmd + O hotkey and a open file button that can be clicked to load local files.\n * @property {string} LocalStorage Store and retrieve tool styles from window.localStorage.\n * @property {string} NotesPanel A panel that displays information of listable annotations.\n * @property {string} Print Ctrl/Cmd + P hotkey and a print button that can be clicked to print the current document.\n * @property {string} Redaction Redaction tools that can redact text or areas. Need fullAPI to be on to use this feature.\n * @property {string} TextSelection Ability to select text in a document.\n * @property {string} TouchScrollLock Lock document scrolling in one direction in mobile devices.\n * @property {string} Copy Ability to copy text or annotations use Ctrl/Cmd + C hotkeys or the copy button.\n * @property {string} MultipleViewerMerging Ability to drag and drop pages from one instance of WebViewer into another\n * @property {string} ThumbnailMerging Ability to drag and drop a file into the thumbnail panel to merge\n * @property {string} ThumbnailReordering Ability to reorder pages using the thumbnail panel\n * @property {string} PageNavigation Ability to navigate through pages using mouse wheel, arrow up/down keys and the swipe gesture.\n * @property {string} MouseWheelZoom Ability to zoom when holding ctrl/cmd + mouse wheel.\n * @property {string} Search Ctrl/Cmd + F hotkey and a search button that can be clicked to search the current document.\n * @property {string} MathSymbols Ability to add math symbols in free text editor\n * @property {string} OutlineEditing Ability to add, move and delete outlines in the outlines panel. This feature is only available when `fullAPI: true` is used.\n * @property {string} NotesPanelVirtualizedList Ability to use a virtualized list in the note panel. Will limit the number of notes rendered on the DOM\n * @property {string} NotesShowLastUpdatedDate Show last updated date in notes panel instead of created date\n * @property {string} MultiTab toggle feature to open multiple documents in the same viewer instance\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var Feature = instance.UI.Feature;\n    instance.UI.enableFeatures([Feature.Measurement]);\n    instance.UI.disableFeatures([Feature.Copy]);\n  });\n */\n\nexport default {\n  Measurement: 'Measurement',\n  Ribbons: 'Ribbons',\n  Annotations: 'Annotations',\n  Download: 'Download',\n  FilePicker: 'FilePicker',\n  LocalStorage: 'LocalStorage',\n  NotesPanel: 'NotesPanel',\n  Print: 'Print',\n  Redaction: 'Redaction',\n  TextSelection: 'TextSelection',\n  TouchScrollLock: 'TouchScrollLock',\n  Copy: 'Copy',\n  MultipleViewerMerging: 'MultipleViewerMerging',\n  ThumbnailMerging: 'ThumbnailMerging',\n  ThumbnailReordering: 'ThumbnailReordering',\n  ThumbnailMultiselect: 'ThumbnailMultiselect',\n  PageNavigation: 'PageNavigation',\n  MouseWheelZoom: 'MouseWheelZoom',\n  Search: 'Search',\n  MathSymbols: 'MathSymbols',\n  OutlineEditing: 'OutlineEditing',\n  NotesPanelVirtualizedList: 'NotesPanelVirtualizedList',\n  NotesShowLastUpdatedDate: 'NotesShowLastUpdatedDate',\n  MultiTab: 'MultiTab',\n  ChangeView: 'ChangeView'\n};\n","import core from 'core';\n\nexport default () => {\n  const toolNames = [];\n  const toolModeMap = core.getToolModeMap();\n\n  Object.keys(toolModeMap).forEach(toolMode => {\n    const tool = toolModeMap[toolMode];\n    const isAnnotationTool = tool instanceof window.Core.Tools.GenericAnnotationCreateTool || tool instanceof window.Core.Tools.TextAnnotationCreateTool || tool.defaults;\n\n    if (isAnnotationTool) {\n      toolNames.push(tool.name);\n    }\n  });\n\n  return toolNames;\n};\n","import hotkeys from 'src/apis/hotkeys';\nimport core from 'core';\nimport { PRIORITY_TWO } from 'constants/actionPriority';\nimport getAnnotationCreateToolNames from 'helpers/getAnnotationCreateToolNames';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\n// a higher order function that creates the enableTools and disableTools APIs\nexport default (enable, store) => (\n  toolNames = getAnnotationCreateToolNames(),\n) => {\n  const map = {\n    AnnotationCreateTextUnderline: 'textUnderlineToolButton',\n    AnnotationCreateTextHighlight: 'textHighlightToolButton',\n    AnnotationCreateTextSquiggly: 'textSquigglyToolButton',\n    AnnotationCreateTextStrikeout: 'textStrikeoutToolButton',\n  };\n\n  const toolNameArray = typeof toolNames === 'string' ? [toolNames] : toolNames;\n  const dataElements = selectors.getToolButtonDataElements(\n    store.getState(),\n    toolNameArray,\n  );\n\n  // for the tool names in the map, enable/disable other related buttons\n  Object.keys(map).forEach(toolName => {\n    if (toolNameArray.indexOf(toolName) !== -1) {\n      dataElements.push(map[toolName]);\n    }\n  });\n\n  const currTool = core.getToolMode();\n  if (!enable && toolNames.indexOf(currTool?.name) > -1) {\n    core.setToolMode(window.Core.Tools.ToolNames.EDIT);\n  }\n\n  if (enable) {\n    toolNameArray.forEach(toolName => {\n      hotkeys.on(toolName);\n    });\n\n    store.dispatch(actions.enableElements(dataElements, PRIORITY_TWO));\n  } else {\n    toolNameArray.forEach(toolName => {\n      hotkeys.off(toolName);\n    });\n\n    store.dispatch(actions.disableElements(dataElements, PRIORITY_TWO));\n  }\n};\n","/**\n * Enable multiple tools.\n * @method UI.enableTools\n * @param {Array.<string>} [toolNames=all tools] Array of name of the tools, either from tool names list or the name you registered your custom tool with. If nothing is passed, all tools will be enabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // enable sticky annotation tool and free text tool\n    instance.UI.enableTools([ 'AnnotationCreateSticky', 'AnnotationCreateFreeText' ]);\n  });\n */\n\nimport createToolAPI from 'helpers/createToolAPI';\n\nconst enable = true;\nexport default store => createToolAPI(enable, store);\n","/**\n * Disable multiple tools. This API uses disableElements internally to remove tool buttons from the DOM, and also disable the corresponding hotkeys.\n * @method UI.disableTools\n * @param {Array.<string>|Array.<Core.Tools.ToolNames>} [toolNames=all tools] Array of name of the tools, either from tool names list or the name you registered your custom tool with. If nothing is passed, all tools will be disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const { Tools } = instance.Core;\n    // disable sticky annotation tool and free text tool\n    instance.UI.disableTools([Tools.ToolNames.STICKY, Tools.ToolNames.FREETEXT]);\n  });\n */\n\nimport createToolAPI from 'helpers/createToolAPI';\n\nconst enable = false;\nexport default store => createToolAPI(enable, store);\n","/**\n * Sets tool mode.\n * @method UI.setToolMode\n * @param {string|Core.Tools.ToolNames} toolName Name of the tool, either from <a href='https://www.pdftron.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setToolMode('AnnotationEdit');\n  });\n */\n\nimport core from 'core';\n\nexport default toolName => {\n  core.setToolMode(toolName);\n};","import { useCallback, useEffect, useRef } from 'react';\nimport { focusableElementDomString } from '../utils';\nimport { useCurrentRef } from './useCurrentRef';\n/**\n * A hook for trapping focus within an element. Returns a ref which can be given\n * to any element to trap focus within that element when `locked` is true.\n * @param locked When true, focus will be locked within the element you passed\n * the returned ref to.\n * @param options Options to control the focus trap.\n */\nexport function useFocusTrap(locked, options) {\n    if (locked === void 0) { locked = false; }\n    if (options === void 0) { options = {}; }\n    var focusLastOnUnlock = options.focusLastOnUnlock;\n    var focusRef = useRef(null);\n    // Get the focusable elements. Assumes that focusRef exists. DON'T CALL if\n    // you haven't asserted existance of focusRef.current.\n    var getFocusableElements = useCallback(function () {\n        return focusRef.current.querySelectorAll(focusableElementDomString);\n    }, []);\n    // Cycles tabs within the lock zone when enabled, or prevents default\n    // if there are no elements within the lock (rare edge case).\n    var lockFocus = useCallback(function (event) {\n        // Return if not locked, other key pressed, or no ref.\n        if (!locked || (event && event.key !== 'Tab') || !focusRef.current)\n            return;\n        var focusableElements = getFocusableElements();\n        // If no focusable elements, simply prevent tab default.\n        if (!focusableElements.length)\n            return event === null || event === void 0 ? void 0 : event.preventDefault();\n        var focusedItemIndex = findFocusableIndex(focusableElements, document.activeElement);\n        // If focused inside and initial call (no event), leave focused element.\n        if (focusedItemIndex !== -1 && !event)\n            return;\n        // If focused outside, or tabbing past last element, cycle to beginning.\n        if (focusedItemIndex === -1 || (!(event === null || event === void 0 ? void 0 : event.shiftKey) && focusedItemIndex === focusableElements.length - 1)) {\n            focusableElements[0].focus();\n            return event === null || event === void 0 ? void 0 : event.preventDefault();\n        }\n        // If tabbing backwards and focusing first element, cycle to end.\n        if ((event === null || event === void 0 ? void 0 : event.shiftKey) && focusedItemIndex === 0) {\n            focusableElements[focusableElements.length - 1].focus();\n            return event === null || event === void 0 ? void 0 : event.preventDefault();\n        }\n    }, [getFocusableElements, locked]);\n    // Ensure that user can not focus outside of lock. If an attempt is made\n    // and focusable elements exist inside, will focus first element inside.\n    var checkFocus = useCallback(function (event) {\n        var _a;\n        // Return if not locked or no focus ref.\n        if (!locked || !focusRef.current)\n            return;\n        // Blur focus target if no focusable elements.\n        var focusableElements = getFocusableElements();\n        if (!focusableElements.length)\n            return (_a = event.target) === null || _a === void 0 ? void 0 : _a.blur();\n        // Focus initial element if focused outside.\n        var focusedItemIndex = findFocusableIndex(focusableElements, event.target);\n        if (focusedItemIndex === -1)\n            return focusableElements[0].focus();\n    }, [getFocusableElements, locked]);\n    // Add document listeners for lock focus and check focus\n    useEffect(function () {\n        if (typeof window === 'undefined')\n            return;\n        document.addEventListener('keydown', lockFocus);\n        document.addEventListener('focusin', checkFocus);\n        return function () {\n            document.removeEventListener('keydown', lockFocus);\n            document.removeEventListener('focusin', checkFocus);\n        };\n    }, [checkFocus, lockFocus]);\n    // Keep the ref to focusLastOnUnlock fresh, prevents useEffect refresh.\n    var focusLastOnUnlockRef = useCurrentRef(focusLastOnUnlock);\n    // When locked is changed, will maybe store last element focused prior\n    // to lock being enabled, and will call lockFocus to focus first element\n    // if it exists. Returns when locked is disabled, and will focus prior\n    // element if stored (return focus to previous element).\n    useEffect(function () {\n        var _a;\n        if (typeof window === 'undefined')\n            return;\n        var lastFocusedElement;\n        if (locked) {\n            if (focusLastOnUnlockRef.current && !((_a = focusRef.current) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement))) {\n                lastFocusedElement = document.activeElement;\n                lockFocus();\n                return function () { return lastFocusedElement.focus(); };\n            }\n            lockFocus();\n        }\n        return;\n    }, [focusLastOnUnlockRef, lockFocus, locked]);\n    return focusRef;\n}\nexport function findFocusableIndex(elements, toFind) {\n    var index = -1;\n    if (!toFind)\n        return index;\n    for (var i = 0; i < elements.length; i++) {\n        if (elements[i] === toFind) {\n            index = i;\n            break;\n        }\n    }\n    return index;\n}\n","import { useEffect, useRef } from 'react';\nexport function useCurrentRef(toRef) {\n    var toRefRef = useRef(toRef);\n    useEffect(function () {\n        toRefRef.current = toRef;\n    });\n    return toRefRef;\n}\n","import { cloneElement } from 'react';\nimport { useFocusTrap } from '../../hooks';\nexport var FocusTrap = function (_a) {\n    var locked = _a.locked, focusLastOnUnlock = _a.focusLastOnUnlock, children = _a.children;\n    var focusRef = useFocusTrap(locked, { focusLastOnUnlock: focusLastOnUnlock });\n    return cloneElement(children, { ref: focusRef });\n};\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { FocusTrap } from '@pdftron/webviewer-react-toolkit';\nimport Button from 'components/Button';\nimport './ModalWrapper.scss';\n\nconst ModalWrapper = (props) => {\n\n  const [t] = useTranslation();\n\n    return (\n      <FocusTrap locked={props.isOpen}>\n        <div className=\"modal-container\" onClick={props.containerOnClick}>\n          <div className=\"wrapper\">\n            <div className=\"header-container\">\n              {t(props.title)}\n              <Button\n                  className=\"close-button\"\n                  dataElement={props.closeButtonDataElement}\n                  title=\"action.close\"\n                  img=\"ic_close_black_24px\"\n                  onClick={props.onCloseClick}\n                />\n            </div>\n            {props.children}\n          </div>\n        </div>\n      </FocusTrap>\n    )\n}\n\nexport default ModalWrapper;","import ModalWrapper from './ModalWrapper';\n\nexport default ModalWrapper;","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport Button from 'components/Button';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './PasswordModal.scss';\nimport ModalWrapper from '../ModalWrapper';\nimport { escapePressListener } from 'helpers/accessibility';\n\nlet checkPassword = () => {};\nexport const setCheckPasswordFunction = fn => {\n  checkPassword = fn;\n};\n\nconst PasswordModal = () => {\n  const [isOpen, attempt, isMultiTab] = useSelector(\n    state => [\n      selectors.isElementOpen(state, 'passwordModal'),\n      selectors.getPasswordAttempts(state),\n      selectors.getIsMultiTab(state)\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n  const passwordInput = React.createRef();\n  const maxAttempts = 3;\n  const [password, setPassword] = useState('');\n  const [userCancelled, setUserCancelled] = useState(false);\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElement('progressModal'));\n      passwordInput.current?.focus();\n      window.addEventListener('keydown', e => escapePressListener(e, closeModal));\n    } else {\n      // when a user enters the correct password or calls core.closeDocument\n      // reset state in case user loads another password-protected document\n      setPassword('');\n      setUserCancelled(false);\n    }\n    return () => window.removeEventListener('keydown', escapePressListener);\n  }, [dispatch, isOpen, passwordInput]);\n\n  const handleSubmit = e => {\n    e.preventDefault();\n\n    checkPassword(password);\n  };\n\n  const closeModal = (event) => {\n    if(event.key === 'Escape') {\n      setUserCancelled(true);\n    } else {\n      dispatch(actions.closeElement('passwordModal'));\n    }\n  }\n\n  const getErrorModal = (errorMessage) => {\n    return (\n      <ModalWrapper isOpen={isOpen} title={'message.error'}\n        closeButtonDataElement={'errorModalCloseButton'} \n        onCloseClick={closeModal}>\n          <div className=\"modal-content error-modal-content\">\n            <p>{t(errorMessage)}</p>\n          </div>\n          <div className=\"modal-footer footer\">\n            <Button\n              className=\"confirm modal-button\"\n              dataElement=\"passwordSubmitButton\"\n              label={t('action.ok')}\n              onClick={closeModal}\n            />\n          </div>\n        </ModalWrapper>\n     );\n  }\n\n  const renderContent = () => {\n    const userExceedsMaxAttempts = attempt === maxAttempts;\n    if (userExceedsMaxAttempts) {\n      return getErrorModal('message.encryptedAttemptsExceeded');\n    }\n    if (userCancelled) {\n      return getErrorModal('message.encryptedUserCancelled');\n    }\n\n    return renderEnterPasswordContent();\n  };\n\n  const onKeyDown = e => {\n    if (e.which === 13) {\n      handleSubmit(e);\n    }\n  };\n\n  const renderEnterPasswordContent = () => {\n    const wrongPassword = attempt !== 0;\n\n    return (\n      <ModalWrapper isOpen={isOpen} title={'message.passwordRequired'}\n        closeButtonDataElement={'errorModalCloseButton'} \n        onCloseClick={() => {\n          setUserCancelled(true);\n        }}>\n        <form onSubmit={handleSubmit}>\n          <div>{t('message.enterPassword')}</div>\n          <input\n            className={`${wrongPassword ? 'wrong' : 'correct'} text-input-modal`}\n            type=\"password\"\n            ref={passwordInput}\n            autoComplete=\"current-password\"\n            value={password}\n            onKeyDown={onKeyDown}\n            onChange={e => setPassword(e.target.value)}\n            aria-label={t('message.passwordRequired')}\n            placeholder={t('message.enterPasswordPlaceholder')}\n          />\n          {wrongPassword && (\n            <div className=\"incorrect-password\">\n              {t('message.incorrectPassword', {\n                remainingAttempts: maxAttempts - attempt,\n              })}\n            </div>\n          )}\n        </form>\n        <div className=\"modal-footer footer\">\n          <Button\n            className=\"confirm modal-button\"\n            dataElement=\"passwordSubmitButton\"\n            label={t('action.submit')}\n            disabled={!password}\n            onClick={handleSubmit}\n          />\n        </div>\n      </ModalWrapper>\n    );\n  };\n\n\n  let tabsPadding = 0;\n  if (isMultiTab) {\n    // Add tabsheader padding\n    tabsPadding += document.getElementsByClassName(\"TabsHeader\")[0]?.getBoundingClientRect().bottom;\n  }\n\n  return (\n    <div\n      className={classNames({\n        Modal: true,\n        PasswordModal: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      data-element=\"passwordModal\"\n      style={isMultiTab ? { height: `calc(100% - ${tabsPadding}px)` } : undefined}\n    >\n      {renderContent()}\n    </div>\n  );\n};\n\nexport default PasswordModal;\n","import PasswordModal, { setCheckPasswordFunction } from './PasswordModal';\n\nexport { setCheckPasswordFunction };\nexport default PasswordModal;","export default window.Core.getHashParameter;\n","import { setCheckPasswordFunction } from 'components/PasswordModal';\n\nimport core from 'core';\nimport { fireError } from 'helpers/fireEvent';\nimport getHashParameters from 'helpers/getHashParameters';\nimport actions from 'actions';\n\nexport default (dispatch, src, options = {}) => {\n  core.closeDocument();\n  options = { ...getDefaultOptions(), ...options };\n\n  options.docId = options.documentId || null;\n  options.onLoadingProgress = percent => dispatch(actions.setLoadingProgress(percent));\n  options.password = transformPasswordOption(options.password, dispatch);\n  options.xodOptions = extractXodOptions(options);\n  if ('onError' in options) {\n    const userDefinedOnErrorCallback = options.onError;\n    options.onError = function(error) {\n      userDefinedOnErrorCallback(error);\n      fireError(error);\n    };\n  } else {\n    options.onError = fireError;\n  }\n\n\n  dispatch(actions.closeElement('passwordModal'));\n  // ignore caught errors because they are already being handled in the onError callback\n  core.loadDocument(src, options).catch(() => {});\n  dispatch(actions.openElement('progressModal'));\n};\n\n\n/**\n * Default options are some of the options used to initialize WebViewer, and will be preserved on loadDocument calls.\n * We do this so that users don't need to pass these options every time they call instance.loadDocument\n * For example, if WebViewer is initialized with WebViewer Server, subsequent calls to instance.loadDocument will assume WebViewer Server is used.\n * @ignore\n */\nconst getDefaultOptions = () => ({\n  startOffline: getHashParameters('startOffline', false),\n  azureWorkaround: getHashParameters('azureWorkaround', false),\n  webviewerServerURL: getHashParameters('webviewerServerURL', ''),\n  fallbackToClientSide: getHashParameters('fallbackToClientSide', false),\n  singleServerMode: getHashParameters('singleServerMode', false),\n  forceClientSideInit: getHashParameters('forceClientSideInit', false),\n  disableWebsockets: getHashParameters('disableWebsockets', false),\n  cacheKey: JSON.parse(getHashParameters('cacheKey', null)),\n  officeOptions: JSON.parse(getHashParameters('officeOptions', null)),\n  streaming: getHashParameters('streaming', null),\n  useDownloader: getHashParameters('useDownloader', true),\n  backendType: getHashParameters('pdf', null),\n  loadAsPDF: getHashParameters('loadAsPDF', null),\n});\n\n/**\n * transform the password argument from a string to a function to hook up UI logic\n * @ignore\n */\nconst transformPasswordOption = (password, dispatch) => {\n  // a boolean that is used to prevent infinite loop when wrong password is passed as an argument\n  let passwordChecked = false;\n  let attempt = 0;\n\n  return checkPassword => {\n    dispatch(actions.setPasswordAttempts(attempt++));\n\n    if (!passwordChecked && typeof password === 'string') {\n      checkPassword(password);\n      passwordChecked = true;\n    } else {\n      if (passwordChecked) {\n        console.error(\n          'Wrong password has been passed as an argument. WebViewer will open password modal.',\n        );\n      }\n\n      setCheckPasswordFunction(checkPassword);\n      dispatch(actions.openElement('passwordModal'));\n    }\n  };\n};\n\nconst extractXodOptions = options => {\n  const xodOptions = options.xodOptions || {};\n\n  if (options.decryptOptions) {\n    xodOptions.decrypt = window.Core.Encryption.decrypt;\n    xodOptions.decryptOptions = options.decryptOptions;\n  }\n\n  if (options.decrypt) {\n    xodOptions.decrypt = options.decrypt;\n  }\n\n  if (options.streaming !== null) {\n    // depending on combination of value in loadDocument and in WV constructor\n    // getHashedParam will either return back a boolean or a stringed boolean value\n    xodOptions.streaming = options.streaming === 'true' || options.streaming === true;\n  }\n\n  if (options.azureWorkaround) {\n    xodOptions.azureWorkaround = options.azureWorkaround;\n  }\n\n  if (options.startOffline) {\n    xodOptions.startOffline = options.startOffline;\n  }\n\n  return xodOptions;\n};\n","import core from 'core';\nimport { workerTypes } from 'constants/types';\nimport loadDocument from 'helpers/loadDocument';\nimport { setLoadingProgress } from 'actions/internalActions';\nimport actions from 'actions';\nimport getHashParameters from 'helpers/getHashParameters';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\nimport { isString } from 'lodash';\n\nexport function prepareMultiTab(initialDoc, store) {\n  const extensions = getHashParameters('extension', null)?.split(',');\n  if (extensions && extensions.length !== 1 && extensions.length !== initialDoc.length) {\n    throw new Error(`'initialDoc' array length doesn't match 'extension' array length.\n          Please add an extension for each document or add one for all documents.\n          ex:\n          Webviewer({ initialDoc: ['pdf_doc', 'word_doc'], extension: ['pdf', 'docx'] })\n          OR\n          Webviewer({ initialDoc: ['pdf_doc1', 'pdf_doc2', 'pdf_doc3'], extension: ['pdf'] })`);\n  }\n  if (extensions && extensions.length === 1) {\n    console.warn(`Extension option '${extensions[0]}' will be applied to all tabs from the constructor.`);\n  }\n  store.dispatch(actions.setMultiTab(true));\n  const tabManager = new TabManager(initialDoc, extensions, store);\n  store.dispatch(actions.setTabManager(tabManager));\n  tabManager.listenForAnnotChanges();\n  fireEvent('onTabManagerReady', { tabManager });\n}\n\nexport default class TabManager {\n  db;\n  store;\n  useDB;\n\n  constructor(docArr, extensionArr, store) {\n    this.store = store;\n    const { tabs } = this.store.getState().viewer;\n    this.useDB = !this.store.getState().advanced.disableIndexedDB;\n    docArr.forEach((doc, index) => {\n      const extension = extensionArr && isString(doc) ? extensionArr[extensionArr.length > 1 ? index : 0] : undefined;\n      let filename = `Document ${tabs.length + 1}`;\n      if (isString(doc)) {\n        filename = doc.substring(doc.lastIndexOf('/') + 1);\n      } else if (doc instanceof window.Core.Document && doc.getFilename && doc.getFilename()) {\n        filename = doc.getFilename();\n      }\n      tabs.push(new Tab(tabs.length, doc, {\n        filename,\n        extension,\n      }, this.useDB));\n    });\n    if (this.useDB) {\n      const req = indexedDB.open('WebViewer Files', 1);\n      req.onerror = TabManager.indexedDBNotSupported;\n      req.onsuccess = async () => {\n        this.db = req.result;\n        this.db.onerror = TabManager.throwError;\n      };\n      req.onupgradeneeded = function(e) {\n        e.target.result.createObjectStore('files');\n      };\n    }\n    this.store.dispatch(actions.setTabs(tabs));\n  }\n\n  async setActiveTab(id, saveCurrentActiveTabState = false) {\n    this.store.dispatch(actions.openElement('progressModal'));\n    this.store.dispatch(setLoadingProgress(0));\n    const { tabs, activeTab } = this.store.getState().viewer;\n    const currentTab = tabs.find(tab => tab.id === activeTab);\n    core.addEventListener('documentUnloaded', () => this.listenForAnnotChanges(), { once: true });\n    if (currentTab) {\n      saveCurrentActiveTabState && await currentTab.saveCurrentActiveTabState(this.db);\n      core.closeDocument();\n    }\n    const newTab = tabs.find(tab => tab.id === id);\n    if (!newTab) {\n      return console.error(`Tab id not found: ${id}`);\n    }\n    fireEvent(Events['BEFORE_TAB_CHANGED'], {\n      currentTab: currentTab ? {\n        src: currentTab.src,\n        options: currentTab.options,\n        annotationsChanged: currentTab.changes.annotations,\n        id: currentTab.id,\n      } : null,\n      nextTab: {\n        src: newTab.src,\n        options: newTab.options,\n        id: newTab.id,\n      },\n    });\n    this.listenForAnnotChanges();\n    this.store.dispatch(actions.setActiveTab(id));\n    await newTab.load(this.store.dispatch, this.db);\n  }\n\n  deleteTab(id) {\n    const { tabs, activeTab } = this.store.getState().viewer;\n    const [deletedTab] = tabs.splice(tabs.findIndex(tab => tab.id === id), 1);\n    deletedTab.delete(this.db);\n    fireEvent(Events['TAB_DELETED'], {\n      src: deletedTab.src,\n      options: deletedTab.options,\n      id: deletedTab.id,\n    });\n    if (id === activeTab && tabs.length) {\n      this.setActiveTab(tabs[0].id);\n    } else if (!tabs.length) {\n      core.closeDocument();\n      this.store.dispatch(actions.setActiveTab(null));\n    }\n    this.store.dispatch(actions.setTabs(tabs));\n  }\n\n  async addTab(src, options = {}) {\n    const saveCurrentTabState = options['saveCurrentActiveTabState'] === false || options['saveCurrent'] === false;\n    const useDB = options['useDB'] === false ? options['useDB'] && this.useDB : this.useDB;\n    const loadOption = options['setActive'] === false || options['load'] === false;\n    const { tabs } = this.store.getState().viewer;\n    const currId = tabs.reduce((highestId, tab) => {\n      return tab.id > highestId ? tab.id : highestId;\n    }, 0);\n    if (!('filename' in options)) {\n      options['filename'] = `Document ${currId + 2}`;\n      if (isString(src)) {\n        options['filename'] = src.substring(src.lastIndexOf('/') + 1);\n      } else if (src instanceof window.Core.Document && src.getFilename && src.getFilename()) {\n        options['filename'] = src.getFilename();\n      }\n    }\n    const tab = new Tab(currId + 1, src, options, useDB);\n    tabs.push(tab);\n    fireEvent(Events['TAB_ADDED'], {\n      src: tab.src,\n      options: tab.options,\n      id: tab.id,\n    });\n    if (!loadOption) {\n      this.moveTab(tabs.length - 1, 0);\n      await this.setActiveTab(tab.id, !saveCurrentTabState);\n    }\n    this.store.dispatch(actions.setTabs(tabs));\n    return tab.id;\n  }\n\n  moveTab(from, to) {\n    const { tabs } = this.store.getState().viewer;\n    const tab = tabs.splice(from, 1)[0];\n    tabs.splice(to, 0, tab);\n    fireEvent(Events['TAB_MOVED'], {\n      src: tab.src,\n      options: tab.options,\n      id: tab.id,\n      prevIndex: from,\n      newIndex: to,\n    });\n    this.store.dispatch(actions.setTabs(tabs));\n  }\n\n  listenForAnnotChanges() {\n    const onAnnotChange = () => {\n      const { tabs, activeTab } = this.store.getState().viewer;\n      const tab = tabs.find(t => t.id === activeTab);\n      tab.changes.annotations = true;\n    };\n    const addAnnotListener = () => {\n      core.addEventListener('annotationChanged', onAnnotChange, { once: true });\n    };\n    core.addEventListener('annotationsLoaded', addAnnotListener, { once: true });\n\n    const removeListeners = () => {\n      core.removeEventListener('annotationChanged', onAnnotChange);\n      core.removeEventListener('annotationsLoaded', addAnnotListener);\n    };\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  // eslint-disable-next-line generator-star-spacing\n  *[Symbol.iterator]() {\n    const { tabs } = this.store.getState().viewer;\n    for (const tab of tabs) {\n      yield tab;\n    }\n  }\n\n  map(cb) {\n    const mapped = [];\n    let index = 0;\n    const { tabs } = this.store.getState().viewer;\n    for (const tab of tabs) {\n      mapped.push(cb(tab, index++));\n    }\n    return mapped;\n  }\n\n  static throwError() {\n    console.warn('File database has encountered an error. File data will not be saved when switching tabs');\n  }\n\n  static indexedDBNotSupported() {\n    console.warn('IndexedDB is not supported, file data will not be saved');\n  }\n\n  static MAX_FILE_SIZE = 2.5e8; // 250MB (in bytes)\n}\n\nexport class Tab {\n  disabled = false;\n  saveData = {\n    annotInDB: false,\n    docInDB: false,\n    scrollTop: null, // Float\n    scrollLeft: null, // Float\n    page: null, // Int\n    annots: null, // XFDF String\n  };\n  changes = {\n    annotations: false,\n  };\n\n  id;\n  src;\n  options;\n  useDB;\n\n  constructor(id, src, options = {}, useDB = true) {\n    this.id = id;\n    this.src = src;\n    this.options = options;\n    this.useDB = useDB;\n  }\n\n  async preLoad(db) {\n    if (!this.useDB) {\n      return console.error('Cant preload tab with useDB = false');\n    }\n    const file = await fetch(this.src);\n    await this.writeToDB(db, await file.arrayBuffer());\n  }\n\n  async load(dispatch, db) {\n    core.addEventListener('documentUnloaded', async () => {\n      this.restorePageDataOnLoad();\n      this.saveData.annotInDB ? await this.restoreAnnotDataFromDBOnLoad(db) : this.restoreAnnotDataOnLoad();\n    }, { once: true });\n    if (this.useDB && this.saveData.docInDB) {\n      const tx = db.transaction('files', 'readonly');\n      const store = tx.objectStore('files');\n      const req = store.get(this.id);\n      req.onsuccess = async () => {\n        const doc = req.result;\n        loadDocument(dispatch, doc, this.options);\n      };\n      tx.commit();\n    } else {\n      loadDocument(dispatch, this.src, this.options);\n    }\n  }\n\n  async saveCurrentActiveTabState(db) {\n    this.disabled = true;\n    this.savePageData();\n    const document = core.getDocument();\n    if (this.useDB && document?.type === workerTypes.PDF && document.arePagesAltered()) {\n      await this.saveFileData(db, document);\n    } else if (this.useDB) {\n      this.changes.annotations && await this.saveAnnotDataInDB(db);\n    } else {\n      this.changes.annotations && await this.saveAnnotData();\n    }\n    this.disabled = false;\n  }\n\n  async saveFileData(db, document) {\n    const xfdfString = await core.exportAnnotations();\n    const data = await document.getFileData({\n      xfdfString,\n      flags: window.Core.SaveOptions.LINEARIZED,\n      finishedWithDocument: true,\n    });\n    await this.writeToDB(db, data);\n  }\n\n  async saveAnnotData() {\n    this.saveData.annotInDB = false;\n    const annotList = core.getAnnotationsList();\n    if (annotList.length > 0) {\n      this.saveData.annots = await core.exportAnnotations({ annotList });\n    }\n  }\n\n  async saveAnnotDataInDB(db) {\n    const annotList = core.getAnnotationsList();\n    if (annotList.length > 0) {\n      const annots = await core.exportAnnotations({ annotList });\n      const tx = db.transaction('files', 'readwrite');\n      const store = tx.objectStore('files');\n      store.put(annots, `${this.id}-annots`);\n      await tx.commit();\n      this.saveData.annotInDB = true;\n    }\n  }\n\n  savePageData() {\n    const docContainer = document.getElementsByClassName('DocumentContainer')[0];\n    this.saveData.scrollTop = docContainer.scrollTop;\n    this.saveData.scrollLeft = docContainer.scrollLeft;\n    this.saveData.page = core.getCurrentPage();\n    const precision = 10000;\n    this.saveData.zoom = Math.floor(core.getZoom() * precision) / precision;\n  }\n\n  restorePageDataOnLoad() {\n    const docContainer = document.getElementsByClassName('DocumentContainer')[0];\n\n    const updateScroll = async () => {\n      await core.getDocument().getDocumentCompletePromise();\n      docContainer.scrollTop = this.saveData.scrollTop;\n      docContainer.scrollLeft = this.saveData.scrollLeft;\n    };\n    const updateZoom = async () => {\n      await core.getDocument().getDocumentCompletePromise();\n      core.zoomTo(this.saveData.zoom);\n    };\n    const updatePage = async () => {\n      await core.getDocument().getDocumentCompletePromise();\n      core.setCurrentPage(this.saveData.page);\n    };\n\n    this.saveData.scrollTop && core.addEventListener('finishedRendering', updateScroll, { once: true });\n    this.saveData.zoom && core.addEventListener('documentLoaded', updateZoom, { once: true });\n    this.saveData.page && core.addEventListener('documentLoaded', updatePage, { once: true });\n\n    const removeListeners = () => {\n      core.removeEventListener('documentLoaded', updatePage);\n      core.removeEventListener('documentLoaded', updateZoom);\n      core.removeEventListener('finishedRendering', updateScroll);\n    };\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  restoreAnnotDataOnLoad() {\n    const updateAnnotations = async () => {\n      await core.getDocument().getDocumentCompletePromise();\n      await core.getAnnotationManager().importAnnotations(this.saveData.annots);\n      core.removeEventListener('annotationsLoaded', updateAnnotations);\n    };\n    this.saveData.annots && core.addEventListener('annotationsLoaded', updateAnnotations);\n\n    const removeListeners = () => {\n      core.removeEventListener('annotationsLoaded', updateAnnotations);\n    };\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  async restoreAnnotDataFromDBOnLoad(db) {\n    if (this.saveData.annotInDB) {\n      const tx = db.transaction('files', 'readwrite');\n      const store = tx.objectStore('files');\n      let annots;\n      const annotReq = store.get(`${this.id}-annots`);\n      annotReq.onsuccess = () => {\n        annots = annotReq.result;\n      };\n      await tx.commit();\n      const updateAnnotations = async () => {\n        await core.getDocument().getDocumentCompletePromise();\n        await core.getAnnotationManager().importAnnotations(annots);\n        core.removeEventListener('annotationsLoaded', updateAnnotations);\n      };\n      core.addEventListener('annotationsLoaded', updateAnnotations);\n\n      const removeListeners = () => {\n        core.removeEventListener('annotationsLoaded', updateAnnotations);\n      };\n      core.addEventListener('documentUnloaded', removeListeners, { once: true });\n    }\n  }\n\n  async writeToDB(db, arrBuff) {\n    const tx = db.transaction('files', 'readwrite');\n    const store = tx.objectStore('files');\n    store.put(arrBuff, this.id);\n    this.saveData.docInDB = true;\n    await tx.commit();\n  }\n\n  async delete(db) {\n    if (this.useDB) {\n      const tx = db.transaction('files', 'readwrite');\n      const store = tx.objectStore('files');\n      store.delete(this.id);\n      store.delete(`${this.id}-annot-states`);\n      store.delete(`${this.id}-annots`);\n      await tx.commit();\n    }\n  }\n}","import core from 'core';\nimport hotkeys from 'src/apis/hotkeys';\nimport localStorageManager from 'helpers/localStorageManager';\nimport touchEventManager from 'helpers/TouchEventManager';\nimport hotkeysManager, { concatKeys, Keys } from 'helpers/hotkeysManager';\nimport Feature from 'constants/feature';\nimport { PRIORITY_TWO } from 'constants/actionPriority';\nimport actions from 'actions';\nimport enableTools from 'src/apis/enableTools';\nimport disableTools from 'src/apis/disableTools';\nimport setToolMode from 'src/apis/setToolMode';\nimport selectors from 'selectors';\nimport TabManager from 'helpers/TabManager';\n\n// a higher order function that creates the enableFeatures and disableFeatures APIs\nexport default (enable, store) => (features, priority = PRIORITY_TWO) => {\n  // map a feature to the dataElements that should be enabled/disabled and the function to run\n  const map = {\n    [Feature.Ribbons]: {\n      dataElements: [\n        'ribbons',\n      ],\n    },\n    [Feature.Annotating]: {\n      dataElements: [\n        'toolsHeader',\n        'toggleToolsButton',\n        'annotationPopup',\n        'linkButton',\n        'noteState',\n      ],\n      fn: () => {\n        if (enable) {\n          store.dispatch(actions.enableRibbons());\n        } else {\n          store.dispatch(actions.setReadOnlyRibbons());\n        }\n      },\n    },\n    [Feature.Measurement]: {\n      dataElements: [\n        'toolbarGroup-Measure',\n        'measurementOverlay',\n        'distanceToolGroupButton',\n        'arcMeasurementToolGroupButton',\n        'perimeterToolGroupButton',\n        'areaToolGroupButton',\n        'rectangleAreaToolGroupButton',\n        'ellipseAreaToolGroupButton',\n        'countToolGroupButton',\n        'cloudyRectangleAreaToolGroupButton',\n      ],\n    },\n    [Feature.Annotations]: {\n      dataElements: [\n        'ribbons',\n        'notesPanel',\n        'toggleNotesButton',\n        'toggleToolsButton',\n        'toolsButton',\n        'linkButton',\n        'toolsHeader',\n        'toolsOverlay',\n      ],\n      fn: () => {\n        if (enable) {\n          core.showAnnotations(core.getAnnotationsList());\n          enableTools(store)();\n        } else {\n          core.hideAnnotations(core.getAnnotationsList());\n          disableTools(store)();\n        }\n      },\n    },\n    [Feature.Download]: {\n      dataElements: ['downloadButton'],\n    },\n    [Feature.FilePicker]: {\n      dataElements: ['filePickerHandler', 'filePickerButton'],\n      fn: () => {\n        const keys = concatKeys(Keys.CTRL_O, Keys.COMMAND_O);\n        if (enable) {\n          hotkeys.on(keys);\n        } else {\n          hotkeys.off(keys);\n        }\n      },\n    },\n    [Feature.LocalStorage]: {\n      fn: () => {\n        if (enable) {\n          localStorageManager.enableLocalStorage();\n        } else {\n          localStorageManager.disableLocalStorage();\n        }\n      },\n    },\n    [Feature.NotesPanel]: {\n      dataElements: [\n        'annotationCommentButton',\n        'notesPanelButton',\n        'notesPanel',\n        'toggleNotesButton',\n      ],\n    },\n    [Feature.Print]: {\n      dataElements: ['printButton', 'printModal'],\n      fn: () => {\n        const keys = concatKeys(Keys.CTRL_P, Keys.COMMAND_P);\n        if (enable) {\n          hotkeys.on(keys);\n        } else {\n          hotkeys.off(keys);\n        }\n      },\n    },\n    [Feature.Redaction]: {\n      dataElements: [\n        'redactionToolGroupButton',\n        'redactionPanel',\n        'redactionPanelToggle',\n        'pageRedactionToolGroupButton',\n      ],\n      fn: () => {\n        if (enable && !core.isFullPDFEnabled()) {\n          console.warn('Full api is not enabled, applying redactions is disabled');\n        } else {\n          core.enableRedaction(enable);\n          const currentToolbarGroup = selectors.getCurrentToolbarGroup(store.getState());\n          if (!enable && currentToolbarGroup === 'toolbarGroup-Redact') {\n            setToolMode('AnnotationEdit');\n          }\n        }\n      }\n    },\n    [Feature.TextSelection]: {\n      dataElements: ['textPopup', 'textSelectButton'],\n      fn: () => {\n        if (!enable) {\n          core.clearSelection();\n          core.setToolMode('AnnotationEdit');\n        }\n        window.Core.Tools.Tool.ENABLE_TEXT_SELECTION = enable;\n      },\n    },\n    [Feature.TouchScrollLock]: {\n      fn: () => {\n        touchEventManager.enableTouchScrollLock = enable;\n      },\n    },\n    [Feature.Copy]: {\n      dataElements: ['copyTextButton'],\n      fn: () => {\n        const keys = concatKeys(Keys.CTRL_C, Keys.COMMAND_C);\n        if (enable) {\n          hotkeys.on(keys);\n        } else {\n          hotkeys.off(keys);\n        }\n      },\n    },\n    [Feature.MultipleViewerMerging]: {\n      fn: () => {\n        store.dispatch(actions.setIsMultipleViewerMerging(enable));\n      },\n    },\n    [Feature.ThumbnailMerging]: {\n      fn: () => {\n        store.dispatch(actions.setThumbnailMerging(enable));\n      },\n    },\n    [Feature.ThumbnailReordering]: {\n      fn: () => {\n        store.dispatch(actions.setThumbnailReordering(enable));\n      },\n    },\n    [Feature.ThumbnailMultiselect]: {\n      fn: () => {\n        store.dispatch(actions.setThumbnailMultiselect(enable));\n      },\n    },\n    [Feature.NotesPanelVirtualizedList]: {\n      fn: () => {\n        store.dispatch(actions.setEnableNotesPanelVirtualizedList(enable));\n      },\n    },\n    [Feature.PageNavigation]: {\n      fn: () => {\n        const {\n          up: arrowUpHandler,\n          down: arrowDownHandler,\n          pageup,\n          pagedown,\n        } = hotkeysManager.keyHandlerMap;\n\n        if (enable) {\n          hotkeysManager.on('up', arrowUpHandler);\n          hotkeysManager.on('down', arrowDownHandler);\n          hotkeysManager.on('pageup', pageup);\n          hotkeysManager.on('pagedown', pagedown);\n        } else {\n          // TODO: doing this will also remove handlers that users registered to 'up' and 'down' and we need to address this issue.\n          // it doesn't seem like we can fix the issue now by doing hotkeysManager.off('down', arrowDownHandler) because hotkeysManager.on will create a new function reference\n          // , register that new function to the hotkey and we don't have a reference to that function.\n          // to fix this issue we may need to breaking the instance.hotkeys.on API.\n          hotkeysManager.off('up');\n          hotkeysManager.off('down');\n          hotkeysManager.off('pageup');\n          hotkeysManager.off('pagedown');\n          core.setDisplayMode('Single');\n        }\n\n        touchEventManager.allowSwipe = enable;\n        store.dispatch(actions.setAllowPageNavigation(enable));\n      },\n    },\n    [Feature.MouseWheelZoom]: {\n      fn: () => {\n        store.dispatch(actions.setMouseWheelZoom(enable));\n      }\n    },\n    [Feature.Search]: {\n      dataElements: ['searchButton'],\n      fn: () => {\n        const keys = concatKeys(Keys.CTRL_F, Keys.COMMAND_F);\n        if (enable) {\n          hotkeys.on(keys);\n        } else {\n          hotkeys.off(keys);\n        }\n      },\n    },\n    [Feature.MathSymbols]: {\n      dataElements: ['mathSymbolsButton', 'richTextPopup'],\n    },\n    [Feature.OutlineEditing]: {\n      dataElements: [\n        'outlineControls',\n        'addNewOutlineButtonContainer',\n        'addNewOutlineButton',\n        'outlineReorderButtonGroup',\n        'editOutlineButton',\n        'outlineEditPopup',\n        'renameOutlineButton',\n        'deleteOutlineButton',\n      ],\n      fn: () => {\n        store.dispatch(actions.setIsOutlineEditing(enable));\n      }\n    },\n    [Feature.NotesShowLastUpdatedDate]: {\n      fn: () => {\n        store.dispatch(actions.setNotesShowLastUpdatedDate(enable));\n      }\n    },\n    [Feature.MultiTab]: {\n      fn: () => {\n        if (enable) {\n          const state = store.getState();\n          // if already in multi-tab mode do not recreate TabManager\n          if (selectors.getIsMultiTab(state) && selectors.getTabManager(state)) {\n            return;\n          }\n          const doc = core.getDocument();\n          const docArr = [];\n          if (doc) {\n            docArr.push(doc);\n          }\n          const tabManager = new TabManager(docArr, [], store);\n          store.dispatch(actions.setMultiTab(true));\n          store.dispatch(actions.setTabManager(tabManager));\n        } else {\n          store.dispatch(actions.setMultiTab(false));\n          store.dispatch(actions.setTabManager(null));\n          store.dispatch(actions.setTabs([]));\n          store.dispatch(actions.setActiveTab(0));\n        }\n      },\n    },\n    [Feature.ChangeView]: {\n      dataElements: [\n        'changeViewToolGroupButton',\n      ]\n    },\n  };\n\n  if (!Array.isArray(features)) {\n    features = [features];\n  }\n\n  features.forEach(feature => {\n    const { dataElements = [], fn = () => {} } = map[feature];\n\n    if (enable) {\n      store.dispatch(actions.enableElements(dataElements, priority));\n    } else {\n      store.dispatch(actions.disableElements(dataElements, priority));\n    }\n\n    fn();\n  });\n};\n","/**\n * Enable certain features in the WebViewer UI.\n * @method UI.enableFeatures\n * @param {Array.<string>} features Array of features to enable.\n * @see UI.Feature\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableFeatures(instance.Feature.Measurement);\n  });\n */\n\nimport createFeatureAPI from 'helpers/createFeatureAPI';\n\nconst enable = true;\nexport default store => createFeatureAPI(enable, store);","/**\n * Disable certain features in the WebViewer UI.\n * @method UI.disableFeatures\n * @param {Array.<string>} features Array of features to disable.\n * @see UI.Feature\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableFeatures(instance.Feature.Measurement);\n  });\n */\n\nimport createFeatureAPI from 'helpers/createFeatureAPI';\n\nconst enable = false;\nexport default store => createFeatureAPI(enable, store);\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport enableFeatures from 'src/apis/enableFeatures';\nimport disableFeatures from 'src/apis/disableFeatures';\nimport Feature from 'constants/feature';\nimport { PRIORITY_ONE } from 'constants/actionPriority';\n\nconst features = [Feature.Download, Feature.Print, Feature.Search, Feature.NotesPanel];\nconst dataElements = [\n  'panToolButton',\n  'selectToolButton',\n  'outlinesPanelButton',\n  'bookmarksPanelButton',\n  'signaturePanelButton',\n  'toolbarGroup-Shapes',\n  'toolbarGroup-Insert',\n  'toolbarGroup-Edit',\n  'toolbarGroup-FillAndSign',\n  'toolbarGroup-Forms',\n  'stickyToolGroupButton',\n  'freeTextToolGroupButton',\n  'shapeToolGroupButton',\n  'freeHandToolGroupButton',\n  'freeHandHighlightToolGroupButton',\n  'undoButton',\n  'redoButton',\n  'eraserToolButton'\n];\n\nexport const enterReaderMode = store => {\n  const state = store.getState();\n  const PDFNet = window.Core.PDFNet;\n  PDFNet.initialize().then(() => {\n    const main = async () => {\n      try {\n        const docViewer = core.getDocumentViewer();\n\n        // Sync text annotations\n        const pdfDoc = await docViewer.getDocument().getPDFDoc();\n        const xfdf = await core.getAnnotationManager().exportAnnotations({\n          widgets: false,\n          fields: false\n        });\n        const fdfDoc = await PDFNet.FDFDoc.createFromXFDF(xfdf);\n        await pdfDoc.fdfUpdate(fdfDoc);\n\n        // Enter Reader Mode\n        core.setDisplayMode('Single');\n        store.dispatch(actions.setReaderMode(true));\n        disableFeatures(store)(features, PRIORITY_ONE);\n        store.dispatch(actions.disableElements(dataElements, PRIORITY_ONE));\n        if (!selectors.isElementDisabled(state, 'toolbarGroup-Annotate')) {\n          store.dispatch(actions.setToolbarGroup('toolbarGroup-Annotate'));\n          store.dispatch(actions.setActiveToolGroup(''));\n        } else {\n          store.dispatch(actions.setToolbarGroup('toolbarGroup-View'));\n        }\n        docViewer.setToolMode(docViewer.getTool(window.Core.Tools.ToolNames.EDIT));\n      } catch (err) {\n        console.warn(err);\n      }\n    };\n    PDFNet.runWithCleanup(main);\n  });\n};\n\nexport const exitReaderMode = async store => {\n  const PDFNet = window.Core.PDFNet;\n\n  // Exit Reader Mode\n  store.dispatch(actions.setReaderMode(false));\n  enableFeatures(store)(features, PRIORITY_ONE);\n  store.dispatch(actions.enableElements(dataElements, PRIORITY_ONE));\n\n  // Sync text annotations\n  const pdfDoc = await core.getDocumentViewer().getDocument().getPDFDoc();\n  const fdfDoc = await pdfDoc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_both);\n  const xfdf = await fdfDoc.saveAsXFDFAsString();\n  const annotManager = core.getAnnotationManager();\n  await annotManager.importAnnotations(xfdf, { replace: [Annotations.TextMarkupAnnotation] });\n};\n","import classNames from 'classnames';\nimport ActionButton from 'components/ActionButton';\nimport Button from 'components/Button';\nimport displayModeObjects from 'constants/displayModeObjects';\nimport core from 'core';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useStore } from 'react-redux';\nimport selectors from 'selectors';\nimport FlyoutMenu from '../FlyoutMenu/FlyoutMenu';\nimport DataElementWrapper from \"components/DataElementWrapper\";\nimport { enterReaderMode, exitReaderMode } from 'helpers/readerMode';\n\nfunction ViewControlsOverlay() {\n  const [t] = useTranslation();\n  const store = useStore();\n\n  const totalPages = useSelector(selectors.getTotalPages);\n  const displayMode = useSelector(selectors.getDisplayMode);\n  const isDisabled = useSelector(state => selectors.isElementDisabled(state, 'viewControlsOverlay'));\n  const isReaderMode = useSelector(selectors.isReaderMode);\n\n  const totalPageThreshold = 1000;\n  let isPageTransitionEnabled = totalPages < totalPageThreshold;\n\n  const displayModeManager = window.documentViewer?.getDisplayModeManager();\n  if (displayModeManager && displayModeManager.isVirtualDisplayEnabled()) {\n    isPageTransitionEnabled = true\n  }\n  const handleClick = (pageTransition, layout) => {\n    const setDisplayMode = () => {\n      const displayModeObject = displayModeObjects.find(\n        obj => obj.pageTransition === pageTransition && obj.layout === layout,\n      );\n      core.setDisplayMode(displayModeObject.displayMode);\n    };\n\n    if (isReaderMode) {\n      exitReaderMode(store);\n      setTimeout(() => {\n        setDisplayMode();\n      });\n    } else {\n      setDisplayMode();\n    }\n  };\n\n  const handleReaderModeClick = () => {\n    if (isReaderMode) return;\n    enterReaderMode(store);\n  };\n\n  if (isDisabled) {\n    return null;\n  }\n\n  let pageTransition;\n  let layout;\n\n  const displayModeObject = displayModeObjects.find(obj => obj.displayMode === displayMode);\n  if (displayModeObject) {\n    pageTransition = displayModeObject.pageTransition;\n    layout = displayModeObject.layout;\n  }\n\n  const showReaderButton = core.isFullPDFEnabled() && window.documentViewer?.getDocument()?.getType() === 'pdf';\n\n  return (\n    <FlyoutMenu menu=\"viewControlsOverlay\" trigger=\"viewControlsButton\" onClose={undefined} ariaLabel={t('component.viewControlsOverlay')}>\n      {isPageTransitionEnabled && (\n        <>\n          <DataElementWrapper\n            dataElement=\"pageTransitionHeader\"\n            className=\"type\"\n          >\n            {t('option.displayMode.pageTransition')}\n          </DataElementWrapper>\n          <DataElementWrapper\n            className={classNames({ row: true, active: (pageTransition === 'continuous' && !isReaderMode) })}\n            onClick={() => handleClick('continuous', layout)}\n            dataElement=\"continuousPageTransitionButton\"\n          >\n            <Button\n              title=\"option.pageTransition.continuous\"\n              img=\"icon-header-page-manipulation-page-transition-continuous-page-line\"\n              isActive={pageTransition === 'continuous' && !isReaderMode}\n              role=\"option\"\n            />\n            <div className=\"title\">{t('option.pageTransition.continuous')}</div>\n          </DataElementWrapper>\n          <DataElementWrapper\n            className={classNames({ row: true, active: (pageTransition === 'default' && !isReaderMode) })}\n            onClick={() => handleClick('default', layout)}\n            dataElement=\"defaultPageTransitionButton\"\n          >\n            <Button\n              title=\"option.pageTransition.default\"\n              img=\"icon-header-page-manipulation-page-transition-page-by-page-line\"\n              isActive={pageTransition === 'default' && !isReaderMode}\n              role=\"option\"\n            />\n            <div className=\"title\">{t('option.pageTransition.default')}</div>\n          </DataElementWrapper>\n          {showReaderButton && (\n            <DataElementWrapper\n              className={classNames({ row: true, active: isReaderMode })}\n              onClick={() => handleReaderModeClick()}\n              dataElement=\"readerPageTransitionButton\"\n            >\n              <Button\n                title=\"option.pageTransition.reader\"\n                img=\"icon-header-page-manipulation-page-transition-reader\"\n                isActive={isReaderMode}\n                role=\"option\"\n              />\n              <div className=\"title\">{t('option.pageTransition.reader')}</div>\n            </DataElementWrapper>\n          )}\n          {!isReaderMode && (\n            <DataElementWrapper\n              dataElement=\"viewControlsDivider1\"\n              className=\"divider\"\n            />\n          )}\n        </>\n      )}\n      {!isReaderMode && (\n        <>\n          <DataElementWrapper\n            dataElement=\"rotateHeader\"\n            className=\"type\"\n          >\n            {t('action.rotate')}\n          </DataElementWrapper>\n          <DataElementWrapper className=\"row\" onClick={core.rotateClockwise} dataElement=\"rotateClockwiseButton\">\n            <ActionButton\n              title=\"action.rotateClockwise\"\n              img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n              role=\"option\"\n            />\n            <div className=\"title\">{t('action.rotateClockwise')}</div>\n          </DataElementWrapper>\n          <DataElementWrapper className=\"row\" onClick={core.rotateCounterClockwise} dataElement=\"rotateCounterClockwiseButton\">\n            <ActionButton\n              title=\"action.rotateCounterClockwise\"\n              img=\"icon-header-page-manipulation-page-rotation-counterclockwise-line\"\n              role=\"option\"\n            />\n            <div className=\"title\">{t('action.rotateCounterClockwise')}</div>\n          </DataElementWrapper>\n          <DataElementWrapper\n            dataElement=\"viewControlsDivider2\"\n            className=\"divider\"\n          />\n          <DataElementWrapper\n            dataElement=\"layoutHeader\"\n            className=\"type\"\n          >\n            {t('option.displayMode.layout')}\n          </DataElementWrapper>\n          <DataElementWrapper\n            className={classNames({ row: true, active: layout === 'single' })}\n            onClick={() => handleClick(pageTransition, 'single')}\n            dataElement=\"singleLayoutButton\"\n          >\n            <Button\n              title=\"option.layout.single\"\n              img=\"icon-header-page-manipulation-page-layout-single-page-line\"\n              isActive={layout === 'single'}\n              role=\"option\"\n            />\n            <div className=\"title\">{t('option.layout.single')}</div>\n          </DataElementWrapper>\n          <DataElementWrapper\n            className={classNames({ row: true, active: layout === 'double' })}\n            onClick={() => handleClick(pageTransition, 'double')}\n            dataElement=\"doubleLayoutButton\"\n          >\n            <Button\n              title=\"option.layout.double\"\n              img=\"icon-header-page-manipulation-page-layout-double-page-line\"\n              isActive={layout === 'double'}\n              role=\"option\"\n            />\n            <div className=\"title\">{t('option.layout.double')}</div>\n          </DataElementWrapper>\n          <DataElementWrapper\n            className={classNames({ row: true, active: layout === 'cover' })}\n            onClick={() => handleClick(pageTransition, 'cover')}\n            dataElement=\"coverLayoutButton\"\n          >\n            <Button\n              title=\"option.layout.cover\"\n              img=\"icon-header-page-manipulation-page-layout-cover-line\"\n              isActive={layout === 'cover'}\n              role=\"option\"\n            />\n            <div className=\"title\">{t('option.layout.cover')}</div>\n          </DataElementWrapper>\n        </>\n      )}\n    </FlyoutMenu>\n  );\n}\n\nexport default ViewControlsOverlay;\n","import ViewControlsOverlay from './ViewControlsOverlay';\n\nexport default ViewControlsOverlay;","import { saveAs } from 'file-saver';\n\nimport core from 'core';\nimport { isIE } from 'helpers/device';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\nimport actions from 'actions';\n\nexport default async (dispatch, options = {}) => {\n  const {\n    filename = core.getDocument()?.getFilename() || 'document',\n    includeAnnotations = true,\n    externalURL,\n    useDisplayAuthor = false,\n  } = options;\n\n  if (!options.downloadType) {\n    options.downloadType = 'pdf';\n  }\n\n  dispatch(actions.openElement('loadingModal'));\n\n  let annotationsPromise = Promise.resolve();\n  if (includeAnnotations && !options.xfdfString) {\n    if (options.documentToBeDownloaded) {\n      annotationsPromise = Promise.resolve((await options.documentToBeDownloaded.extractXFDF()).xfdfString);\n    } else {\n      annotationsPromise = core.exportAnnotations({ useDisplayAuthor });\n    }\n  }\n\n  return annotationsPromise.then(xfdfString => {\n    options.xfdfString = options.xfdfString || xfdfString;\n    if (!includeAnnotations) {\n      options.includeAnnotations = false;\n    }\n\n    const getDownloadFilename = (name, extension) => {\n      if (name.slice(-extension.length).toLowerCase() !== extension) {\n        name += extension;\n      }\n      return name;\n    };\n\n    const downloadName =\n      (core.getDocument()?.getType() === 'video' || core.getDocument()?.getType() === 'audio')\n        ? filename\n        : getDownloadFilename(filename, '.pdf');\n    let doc = core.getDocument();\n\n    // Cloning the options object to be able to delete the customDocument property if needed.\n    // doc.getFileData(options) will throw an error if this customDocument property is passed in\n    const clonedOptions = Object.assign({}, options);\n    if (clonedOptions.documentToBeDownloaded) {\n      doc = clonedOptions.documentToBeDownloaded;\n      delete clonedOptions.documentToBeDownloaded;\n    }\n\n    if (externalURL) {\n      const downloadIframe =\n        document.getElementById('download-iframe') ||\n        document.createElement('iframe');\n      downloadIframe.width = 0;\n      downloadIframe.height = 0;\n      downloadIframe.id = 'download-iframe';\n      downloadIframe.src = null;\n      document.body.appendChild(downloadIframe);\n      downloadIframe.src = externalURL;\n      dispatch(actions.closeElement('loadingModal'));\n      fireEvent(Events.FINISHED_SAVING_PDF);\n      fireEvent(Events.FILE_DOWNLOADED);\n    } else {\n      return doc.getFileData(clonedOptions).then(\n        data => {\n          const arr = new Uint8Array(data);\n          let file;\n\n          if (isIE) {\n            file = new Blob([arr], { type: 'application/pdf' });\n          } else {\n            file = new File([arr], downloadName, { type: 'application/pdf' });\n          }\n\n          saveAs(file, downloadName);\n          dispatch(actions.closeElement('loadingModal'));\n          fireEvent(Events.FINISHED_SAVING_PDF);\n          fireEvent(Events.FILE_DOWNLOADED);\n        },\n        error => {\n          dispatch(actions.closeElement('loadingModal'));\n          throw new Error(error.message);\n        },\n      );\n    }\n  }).catch(error => {\n    console.warn(error);\n    dispatch(actions.closeElement('loadingModal'));\n  });\n};\n","export default () => {\n  return !!(document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement);\n};\n","import fireEvent from './fireEvent';\nimport Events from 'constants/events';\nimport isFullscreen from './isFullscreen';\n\nexport default () => {\n  if (isFullscreen()) {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n    } else if (document.msExitFullscreen) {\n      document.msExitFullscreen();\n    } else if (document.mozCancelFullScreen) {\n      document.mozCancelFullScreen();\n    } else if (document.webkitExitFullscreen) {\n      document.webkitExitFullscreen();\n    }\n    fireEvent(Events.FULLSCREEN_MODE_TOGGLED, { isInFullscreen: false });\n  } else {\n    const docElm = document.documentElement;\n    if (docElm.requestFullscreen) {\n      docElm.requestFullscreen();\n    } else if (docElm.msRequestFullscreen) {\n      docElm.msRequestFullscreen();\n    } else if (docElm.mozRequestFullScreen) {\n      docElm.mozRequestFullScreen();\n    } else if (docElm.webkitRequestFullScreen) {\n      docElm.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);\n      setTimeout(() => {\n        if (!document.webkitCurrentFullScreenElement) {\n          docElm.webkitRequestFullScreen();\n        }\n      }, 200);\n    }\n    fireEvent(Events.FULLSCREEN_MODE_TOGGLED, { isInFullscreen: true });\n  }\n};\n","// TODO - Add more here\nconst DataElements = {\n  COLOR_PALETTE: 'colorPalette',\n  OPACITY_SLIDER: 'opacitySlider',\n  STROKE_THICKNESS_SLIDER: 'strokeThicknessSlider',\n  FONT_SIZE_SLIDER: 'fontSizeSlider',\n  STYLE_OPTION: 'styleOption',\n  STYLE_POPUP: 'stylePopup',\n  SCALE_INPUT_CONTAINER: 'scaleInputContainer',\n  PRECISION_INPUT_CONTAINER: 'precisionInputContainer',\n  STYLE_POPUP_TEXT_STYLE_CONTAINER: 'stylePopupTextStyleContainer',\n  STYLE_POPUP_COLORS_CONTAINER: 'stylePopupColorsContainer',\n  STYLE_POPUP_LABEL_TEXT_CONTAINER: 'stylePopupLabelTextContainer',\n  REDACTION_PANEL: 'redactionPanel',\n  REDACTION_PANEL_TOGGLE: 'redactionPanelToggle',\n  WV3D_PROPERTIES_PANEL: 'wv3dPropertiesPanel',\n  WV3D_PROPERTIES_PANEL_TOGGLE: 'wv3dPropertiesPanelToggle',\n  OUTLINE_PANEL: 'outlinesPanel',\n  OUTLINE_CONTROLS: 'outlineControls',\n  BOOKMARK_PANEL: 'bookmarksPanel',\n  BOOKMARK_SHORTCUT_OPTION: 'bookmarkShortcutOption',\n\n  // Modals\n  PAGE_REDACT_MODAL: 'pageRedactionModal',\n  LINK_MODAL: 'linkModal',\n  LANGUAGE_MODAL: 'languageModal',\n  FILTER_MODAL: 'filterModal',\n\n  // Filter modal\n  ANNOTATION_USER_FILTER_PANEL_BUTTON: 'annotationUserFilterPanelButton',\n  ANNOTATION_COLOR_FILTER_PANEL_BUTTON: 'annotationColorFilterPanelButton',\n  ANNOTATION_TYPE_FILTER_PANEL_BUTTON: 'annotationTypeFilterPanelButton',\n  ANNOTATION_STATUS_FILTER_PANEL_BUTTON: 'annotationStatusFilterPanelButton',\n};\n\nexport default DataElements;\n","import actions from 'actions';\nimport ActionButton from 'components/ActionButton';\nimport CustomElement from 'components/CustomElement';\nimport { workerTypes } from 'constants/types';\nimport core from 'core';\nimport { isIE } from 'helpers/device';\nimport downloadPdf from 'helpers/downloadPdf';\nimport openFilePicker from 'helpers/openFilePicker';\nimport { print } from 'helpers/print';\nimport toggleFullscreen from 'helpers/toggleFullscreen';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport FlyoutMenu from '../FlyoutMenu/FlyoutMenu';\nimport DataElements from \"constants/dataElement\";\n\nimport './MenuOverlay.scss';\n\nconst InitialMenuOverLayItem = ({ dataElement, children }) => {\n  const items = useSelector(state => selectors.getMenuOverlayItems(state, dataElement), shallowEqual);\n\n  const childrenArray = React.Children.toArray(children);\n\n  return items.map((item, i) => {\n    const { dataElement, type, hidden } = item;\n    const key = `${type}-${dataElement || i}`;\n    const mediaQueryClassName = hidden?.map(screen => `hide-in-${screen}`).join(' ');\n    let component = childrenArray.find(child => child.props.dataElement === dataElement);\n\n    if (!component) {\n      const props = { ...item, mediaQueryClassName };\n\n      switch (type) {\n        case 'actionButton':\n          component = <ActionButton {...props} />;\n          break;\n        case 'customElement':\n          component = <CustomElement {...props} />;\n          break;\n      }\n    }\n\n    return component\n      ? React.cloneElement(component, {\n          key,\n        })\n      : null;\n  });\n};\n\nfunction MenuOverlay() {\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n\n  const [documentType, setDocumentType] = useState(null);\n\n  const activeTheme = useSelector(selectors.getActiveTheme);\n  const isEmbedPrintSupported = useSelector(selectors.isEmbedPrintSupported);\n  const colorMap = useSelector(selectors.getColorMap);\n  const sortStrategy = useSelector(selectors.getSortStrategy);\n  const isFullScreen = useSelector(selectors.isFullScreen);\n\n  const closeMenuOverlay = useCallback(() => dispatch(actions.closeElements(['menuOverlay'])), [dispatch]);\n  const setActiveLightTheme = useCallback(() => dispatch(actions.setActiveTheme('light')), [dispatch]);\n  const setActiveDarkTheme = useCallback(() => dispatch(actions.setActiveTheme('dark')), [dispatch]);\n\n  useEffect(() => {\n    const onDocumentLoaded = () => setDocumentType(core.getDocument().getType());\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n    };\n  }, []);\n\n  const handlePrintButtonClick = () => {\n    closeMenuOverlay();\n    print(dispatch, isEmbedPrintSupported, sortStrategy, colorMap);\n  };\n\n  const downloadDocument = () => {\n    downloadPdf(dispatch);\n  };\n\n  const handleLanguageButtonClick = () => {\n    closeMenuOverlay();\n    dispatch(actions.openElement(DataElements.LANGUAGE_MODAL));\n  };\n\n  return (\n    <FlyoutMenu menu=\"menuOverlay\" trigger=\"menuButton\" onClose={undefined} ariaLabel={t('component.menuOverlay')}>\n      <InitialMenuOverLayItem>\n        <ActionButton\n          dataElement=\"filePickerButton\"\n          className=\"row\"\n          img=\"icon-header-file-picker-line\"\n          label={t('action.openFile')}\n          ariaLabel={t('action.openFile')}\n          role=\"option\"\n          onClick={openFilePicker}\n        />\n        <ActionButton\n          dataElement=\"fullscreenButton\"\n          className=\"row\"\n          img={isFullScreen ? 'icon-header-full-screen-exit' : 'icon-header-full-screen'}\n          label={isFullScreen ? t('action.exitFullscreen') : t('action.enterFullscreen')}\n          ariaLabel={isFullScreen ? t('action.exitFullscreen') : t('action.enterFullscreen')}\n          role=\"option\"\n          onClick={toggleFullscreen}\n        />\n        {documentType !== workerTypes.XOD && (\n          <ActionButton\n            dataElement=\"downloadButton\"\n            className=\"row\"\n            img=\"icon-header-download\"\n            label={t('action.download')}\n            ariaLabel={t('action.download')}\n            role=\"option\"\n            onClick={downloadDocument}\n          />\n        )}\n        <ActionButton\n          dataElement=\"printButton\"\n          className=\"row\"\n          img=\"icon-header-print-line\"\n          label={t('action.print')}\n          ariaLabel={t('action.print')}\n          role=\"option\"\n          onClick={handlePrintButtonClick}\n        />\n        {!isIE && (\n          <ActionButton\n            dataElement=\"themeChangeButton\"\n            className=\"row\"\n            img={`icon - header - mode - ${activeTheme === 'dark' ? 'day' : 'night'}`}\n            label={activeTheme === 'dark' ? t('action.lightMode') : t('action.darkMode')}\n            ariaLabel={activeTheme === 'dark' ? t('action.lightMode') : t('action.darkMode')}\n            role=\"option\"\n            onClick={activeTheme === 'dark' ? setActiveLightTheme : setActiveDarkTheme}\n          />\n        )}\n        <ActionButton\n          dataElement=\"languageButton\"\n          className=\"row\"\n          img=\"icon-header-language\"\n          label={t('action.switchLanguage')}\n          ariaLabel={t('action.switchLanguage')}\n          role=\"option\"\n          onClick={handleLanguageButtonClick}\n        />\n      </InitialMenuOverLayItem>\n    </FlyoutMenu>\n  );\n}\n\nexport default MenuOverlay;\n","import MenuOverlay from './MenuOverlay';\n\nexport default MenuOverlay;","\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport core from 'core';\n\nconst FormFieldPlaceHolderOverlay = ({ annotation, overlayPosition, overlayRef }) => {\n  const [t] = useTranslation();\n\n  const formFieldCreationManager = core.getFormFieldCreationManager();\n  const formFieldPlaceHolderName = formFieldCreationManager.getFieldName(annotation);\n  const formFieldPlaceHolderType = annotation.getFormFieldPlaceHolderType();\n\n  const mapPlaceHolderTypeToTranslation = (formFieldPlaceHolderType) => {\n    switch (formFieldPlaceHolderType) {\n      case 'TextFormField':\n        return 'formField.types.text';\n      case 'SignatureFormField':\n        return 'formField.types.signature';\n      case 'CheckBoxFormField':\n        return 'formField.types.checkbox';\n      case 'ListBoxFormField':\n        return 'formField.types.listbox';\n      case 'ComboBoxFormField':\n        return 'formField.types.combobox';\n      case 'RadioButtonFormField':\n        return 'formField.types.radio';\n    }\n  };\n\n  return (\n    <div\n      className=\"Overlay AnnotationContentOverlay\"\n      data-element=\"annotationContentOverlay\"\n      style={{ ...overlayPosition }}\n      ref={overlayRef}\n    >\n      <div>\n        <span style={{ 'fontWeight': 'bold' }}>{t('formField.type')}: </span>\n        {t(mapPlaceHolderTypeToTranslation(formFieldPlaceHolderType))}\n      </div>\n      <div>\n        <span style={{ 'fontWeight': 'bold' }}>{t('formField.formFieldPopup.fieldName')}: </span>\n        {formFieldPlaceHolderName}\n      </div>\n    </div>\n  )\n}\n\nexport default FormFieldPlaceHolderOverlay;","/* eslint-disable react/prop-types */\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport core from 'core';\nimport { isMobileDevice } from 'helpers/device';\nimport selectors from 'selectors';\n\nimport './AnnotationContentOverlay.scss';\nimport actions from 'actions';\n\nimport CustomElement from '../CustomElement';\nimport FormFieldPlaceHolderOverlay from './FormFieldPlaceHolderOverlay';\n\nconst MAX_CHARACTERS = 100;\n\nconst AnnotationContentOverlay = () => {\n  const [isDisabled, isOverlayOpen] = useSelector(state =>\n    [\n      selectors.isElementDisabled(state, 'annotationContentOverlay'),\n      selectors.isElementOpen(state, 'annotationContentOverlay'),\n    ]\n\n  );\n  const [t] = useTranslation();\n  const [annotation, setAnnotation] = useState();\n  const [overlayPosition, setOverlayPosition] = useState({\n    left: 0,\n    top: 0,\n  });\n  const dispatch = useDispatch();\n\n  // Clients have the option to customize how the tooltip is rendered\n  // by passing a handler\n  const customHandler = useSelector(state =>\n    selectors.getAnnotationContentOverlayHandler(state),\n  );\n  const isUsingCustomHandler = customHandler !== null;\n  const overlayRef = useRef(null);\n  const contents = annotation?.getContents();\n  // the gap between the component and the mouse, to make sure that the mouse won't be on component element\n  // so that the underlying annotation will always be hovered\n  const gap = 20;\n\n  useEffect(() => {\n    const fitWindowSize = (e, left, top) => {\n      const overlayRect = overlayRef.current.getBoundingClientRect();\n\n      if (left + overlayRect.width > window.innerWidth) {\n        left = e.clientX - overlayRect.width - gap;\n      }\n\n      if (top + overlayRect.height > window.innerHeight) {\n        top = e.clientY - overlayRect.height - gap;\n      }\n\n      if (top <= 0) {\n        top = 0\n      }\n\n      return { left, top };\n    }\n\n    const onMouseHover = e => {\n      const viewElement = core.getViewerElement();\n      let annotation = core\n        .getAnnotationManager()\n        .getAnnotationByMouseEvent(e);\n\n      if (annotation && viewElement.contains(e.target)) {\n        // if hovered annot is grouped, pick the \"primary\" annot to match Adobe's behavior\n        const groupedAnnots = core.getAnnotationManager().getGroupAnnotations(annotation);\n        const ungroupedAnnots = groupedAnnots.filter(annot => !annot.isGrouped());\n        annotation = ungroupedAnnots.length > 0 ? ungroupedAnnots[0] : annotation;\n\n        if (isUsingCustomHandler || !(annotation instanceof Annotations.FreeTextAnnotation)) {\n          setAnnotation(annotation);\n          if (overlayRef.current) {\n            const { left, top } = fitWindowSize(e, e.clientX + gap, e.clientY + gap);\n            setOverlayPosition({ left, top });\n          }\n        }\n        dispatch(actions.openElement('annotationContentOverlay'));\n      } else {\n        setAnnotation(null);\n        dispatch(actions.closeElement('annotationContentOverlay'));\n      }\n    };\n\n    core.addEventListener('mouseMove', onMouseHover);\n    return () => {\n      core.removeEventListener('mouseMove', onMouseHover);\n    };\n  }, [annotation, dispatch, isUsingCustomHandler]);\n\n  const numberOfReplies = annotation?.getReplies().length;\n\n  const preRenderedElements = isUsingCustomHandler && annotation ? customHandler(annotation) : null;\n\n  const customRender = useCallback(() => preRenderedElements, [preRenderedElements]);\n\n  const renderContents = () => (\n    <div\n      className=\"Overlay AnnotationContentOverlay\"\n      data-element=\"annotationContentOverlay\"\n      style={{ ...overlayPosition }}\n      ref={overlayRef}\n    >\n      <div className=\"author\">{core.getDisplayAuthor(annotation['Author'])}</div>\n      <div className=\"contents\">\n        {contents.length > MAX_CHARACTERS\n          ? `${contents.slice(0, MAX_CHARACTERS)}...`\n          : contents}\n      </div>\n      {numberOfReplies > 0 && (\n        <div className=\"replies\">\n          {t('message.annotationReplyCount', { count: numberOfReplies })}\n        </div>\n      )}\n    </div>\n  );\n\n  if (isDisabled || isMobileDevice || !annotation) {\n    return null;\n  }\n\n  if (isUsingCustomHandler && isOverlayOpen && preRenderedElements !== undefined) {\n    if (preRenderedElements) {\n      return (\n        <div\n          className=\"Overlay AnnotationContentOverlay\"\n          data-element=\"annotationContentOverlay\"\n          style={{ ...overlayPosition }}\n          ref={overlayRef}\n        >\n          <CustomElement render={customRender} />\n        </div>\n      );\n    }\n    return null;\n  }\n\n  if (annotation.isFormFieldPlaceholder() && isOverlayOpen) {\n    return (\n      <FormFieldPlaceHolderOverlay\n        annotation={annotation}\n        overlayPosition={overlayPosition}\n        overlayRef={overlayRef} />\n    )\n  }\n\n  if (contents && isOverlayOpen) {\n    return renderContents();\n  }\n\n  return null;\n};\n\nexport default AnnotationContentOverlay;\n","import AnnotationContentOverlay from './AnnotationContentOverlay';\n\nexport default AnnotationContentOverlay;","import { isIEEdge, isIE11 } from 'helpers/device';\n\n// When a panel opens/closes, we want to shift the container accordingly\n// The normal way to do this is through css\n// For example, when left panel opens, we add 'left-panel' to the className, make the container width become calc(100%-#{$left-panel-width})\n// and use css transition to achieve a smooth panel opening animation\n// However, IE11 and Edge haven't supported using transition and calc(...) together,\n// So we have to calculate the width manually.\nexport const updateContainerWidth = (prevProps, props, container) => {\n  const { leftPanelWidth = 300 } = props;\n  const rightPanelWidth = 300;\n\n  const leftPanelClosed = prevProps.isLeftPanelOpen && !props.isLeftPanelOpen;\n  if (leftPanelClosed) {\n    expandContainerWidthBy(leftPanelWidth, container);\n    container.style.marginLeft = '0px';\n  }\n\n  const rightPanelClosed = prevProps.isRightPanelOpen && !props.isRightPanelOpen;\n  if (rightPanelClosed) {\n    expandContainerWidthBy(rightPanelWidth, container);\n  }\n\n  const leftPanelOpened = !prevProps.isLeftPanelOpen && props.isLeftPanelOpen;\n  if (leftPanelOpened) {\n    shrinkContainerWidthBy(leftPanelWidth, container);\n    container.style.marginLeft = `${leftPanelWidth}px`;\n  }\n\n  const leftPanelResized = props.isLeftPanelOpen && prevProps.leftPanelWidth !== props.leftPanelWidth;\n  if (leftPanelResized) {\n    container.style.width = `${window.innerWidth - leftPanelWidth}px`;\n    container.style.marginLeft = `${leftPanelWidth}px`;\n  }\n\n  const rightPanelOpened = !prevProps.isRightPanelOpen && props.isRightPanelOpen;\n  if (rightPanelOpened) {\n    shrinkContainerWidthBy(rightPanelWidth, container);\n  }\n};\n\nconst getWidthAfterTransition = container => {\n  const oldTransition = container.style.transition;\n  container.style.transition = 'none';\n  const containerWidth = parseInt(window.getComputedStyle(container).width, 10);\n  container.style.transition = oldTransition;\n\n  return containerWidth;\n};\n\nconst expandContainerWidthBy = (panelWidth, container) => {\n  const containerWidth = getWidthAfterTransition(container);\n\n  if (isIEEdge) {\n    container.style.width = `${containerWidth + panelWidth}px`;\n  }\n\n  if (isIE11) {\n    // need to add 'scrollBarWidth' or it breaks after \"npm run build\", this isn't needed for npm run start\n    const scrollBarWidth = 17;\n    container.style.width = `${containerWidth + panelWidth + scrollBarWidth}px`;\n  }\n};\n\nconst shrinkContainerWidthBy = (panelWidth, container) => {\n  const containerWidth = getWidthAfterTransition(container);\n\n  if (isIEEdge) {\n    container.style.width = `${containerWidth - panelWidth}px`;\n  }\n\n  if (isIE11) {\n    const scrollBarWidth = 17;\n    container.style.width = `${containerWidth - panelWidth + scrollBarWidth}px`;\n  }\n};\n\nexport const getClassNameInIE = ({ isHeaderOpen, isSearchOverlayOpen }) => [\n  'DocumentContainer',\n  isHeaderOpen ? '' : 'no-header',\n  isSearchOverlayOpen ? 'search-overlay' : '',\n].join(' ').trim();\n\nexport const handleWindowResize = ({ isLeftPanelOpen, isRightPanelOpen, leftPanelWidth = 300 }, container) => {\n  const rightPanelWidth = 300;\n  let width = window.innerWidth;\n\n  if (isLeftPanelOpen) {\n    width -= leftPanelWidth;\n  }\n\n  if (isRightPanelOpen) {\n    width -= rightPanelWidth;\n  }\n\n  container.style.width = `${width}px`;\n};\n","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"forwardedRef\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport { useTranslation } from './useTranslation';\nimport { getDisplayName } from './utils';\nexport function withTranslation(ns) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return function Extend(WrappedComponent) {\n    function I18nextWithTranslation(_ref) {\n      var forwardedRef = _ref.forwardedRef,\n          rest = _objectWithoutProperties(_ref, _excluded);\n\n      var _useTranslation = useTranslation(ns, rest),\n          _useTranslation2 = _slicedToArray(_useTranslation, 3),\n          t = _useTranslation2[0],\n          i18n = _useTranslation2[1],\n          ready = _useTranslation2[2];\n\n      var passDownProps = _objectSpread(_objectSpread({}, rest), {}, {\n        t: t,\n        i18n: i18n,\n        tReady: ready\n      });\n\n      if (options.withRef && forwardedRef) {\n        passDownProps.ref = forwardedRef;\n      } else if (!options.withRef && forwardedRef) {\n        passDownProps.forwardedRef = forwardedRef;\n      }\n\n      return React.createElement(WrappedComponent, passDownProps);\n    }\n\n    I18nextWithTranslation.displayName = \"withI18nextTranslation(\".concat(getDisplayName(WrappedComponent), \")\");\n    I18nextWithTranslation.WrappedComponent = WrappedComponent;\n\n    var forwardRef = function forwardRef(props, ref) {\n      return React.createElement(I18nextWithTranslation, Object.assign({}, props, {\n        forwardedRef: ref\n      }));\n    };\n\n    return options.withRef ? React.forwardRef(forwardRef) : I18nextWithTranslation;\n  };\n}","const commaRegex = /,/g;\n\nexport default content => {\n  content = content?.replace(commaRegex, '');\n\n  return content ? parseFloat(content) : undefined;\n};","export default unit => {\n  switch (unit) {\n    case 'ft\\'':\n      return 'ft';\n    case 'in\"':\n      return 'in';\n    case 'ft-in':\n      return 'ft';\n    default:\n      return unit;\n  }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport core from 'core';\nimport { mapAnnotationToKey, getDataWithKey } from '../../constants/map';\n\nfunction CustomMeasurementOverlay(props) {\n  const renderAppropriateOverlay = type => {\n    const annotationType = mapAnnotationToKey(props.annotation);\n    switch (annotationType) {\n      case 'ellipse':\n        return <CustomEllipseMeasurementOverlay {...props}/>;\n      default:\n        console.error(`Custom overlay for annotation type: ${type} not supported`);\n    }\n  };\n  return (renderAppropriateOverlay(props.type));\n}\n\nCustomMeasurementOverlay.propTypes = {\n  annotation: PropTypes.object.isRequired,\n  value: PropTypes.func.isRequired,\n  onChange: PropTypes.func.isRequired,\n  label: PropTypes.string.isRequired,\n  t: PropTypes.func.isRequired,\n  title: PropTypes.string.isRequired,\n};\n\nfunction CustomEllipseMeasurementOverlay(props) {\n  const annotationKey = mapAnnotationToKey(props.annotation);\n  const { icon } = getDataWithKey(annotationKey);\n  const { t } = props;\n\n  // Get the Scale, Precision and Units from\n  // the AnnotationCreateDistanceMeasurement tool as these do not exist\n  // in the Ellipse annotation\n  const distanceMeasurementTool = core.getTool('AnnotationCreateDistanceMeasurement');\n  const precision = distanceMeasurementTool.defaults.Precision;\n  const scale = distanceMeasurementTool.defaults.Scale;\n  const measure = distanceMeasurementTool.Measure;\n  const unit = scale[1][1];\n\n\n  const renderScaleRatio = () => `${scale[0][0]} ${scale[0][1]} = ${scale[1][0]} ${scale[1][1]}`;\n\n  const computeRadius = () => {\n    const decimalPlaces = 2;\n    const factor = measure.axis[0].factor;\n    const radiusInPts = props.value(props.annotation).toFixed(decimalPlaces);\n    return (radiusInPts * factor).toFixed(decimalPlaces);\n  };\n\n  return (\n    <>\n      <div className=\"measurement__title\">\n        {icon && <Icon className=\"measurement__icon\" glyph={icon} />}\n        {props.title}\n      </div>\n      <div className=\"measurement__scale\">\n        {t('option.measurementOverlay.scale')}: {renderScaleRatio()}\n      </div>\n      <div className=\"measurement__precision\">\n        {t('option.shared.precision')}: {precision}\n      </div>\n      <div className=\"measurement__value\">\n        {props.label}: <input className=\"lineMeasurementInput\" type=\"number\" min=\"0\" value={computeRadius()} onChange={event => props.onChange(event, props.annotation)}/> {unit}\n      </div>\n    </>\n  );\n}\n\nCustomEllipseMeasurementOverlay.propTypes = CustomMeasurementOverlay.propTypes;\n\nexport default withTranslation()(CustomMeasurementOverlay);","import React, { useState, useEffect, useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\nimport Icon from 'components/Icon';\n\nimport core from 'core';\nimport selectors from 'selectors';\nimport { mapAnnotationToKey, getDataWithKey } from '../../constants/map';\nimport { isMobileDevice } from 'src/helpers/device';\nimport getFormattedUnit from 'src/helpers/getFormattedUnit';\n\nfunction EllipseMeasurementOverlay(props) {\n  const { t, annotation, isOpen } = props;\n  const isReadOnly = useSelector(state => selectors.isDocumentReadOnly(state));\n  const annotationKey = mapAnnotationToKey(annotation);\n  const { icon } = getDataWithKey(annotationKey);\n  const scale = annotation.Scale;\n  const precision = annotation.Precision;\n  const unit = getFormattedUnit(annotation.Scale[1][1]);\n  const renderScaleRatio = () => `${scale[0][0]} ${scale[0][1]} = ${scale[1][0]} ${unit}`;\n\n  useEffect(() => {\n    const onAnnotationChanged = () => {\n      setRadius(computeRadius());\n    };\n    core.addEventListener('mouseMove', onAnnotationChanged);\n    return () => {\n      core.removeEventListener('mouseMove', onAnnotationChanged);\n    };\n  });\n\n  const computeRadius = () => {\n    const decimalPlaces = getNumberOfDecimalPlaces(annotation);\n    const factor = annotation.Measure.axis[0].factor;\n    const radiusInPts = (annotation.Width / 2).toFixed(decimalPlaces);\n    return (radiusInPts * factor).toFixed(decimalPlaces);\n  };\n\n  const getNumberOfDecimalPlaces = annotation =>\n    (annotation.Precision === 1\n      ? 0\n      : annotation.Precision.toString().split('.')[1].length);\n\n  const finishAnnotation = () => {\n    const tool = core.getTool('AnnotationCreateEllipseMeasurement');\n    tool.finish();\n  };\n\n  const selectAnnotation = () => {\n    const annotationManager = core.getAnnotationManager();\n    annotationManager.selectAnnotation(annotation);\n  };\n\n  const deselectAnnot = () => {\n    const annotationManager = core.getAnnotationManager();\n    annotationManager.deselectAnnotation(annotation);\n  };\n\n  const onChangeRadiusLength = event => {\n    const radius = Math.abs(event.target.value);\n    const factor = annotation.Measure.axis[0].factor;\n    const radiusInPts = radius / factor;\n    const diameterInPts = radiusInPts * 2;\n    const rect = annotation.getRect();\n    let {X1, X2, Y1, Y2} = 0;\n    X1 = rect['x1'];\n    Y1 = rect['y1'];\n    X2 = rect['x1'] + diameterInPts;\n    Y2 = rect['y1'] + diameterInPts;\n    const newRect = {x1:X1, y1:Y1, x2:X2, y2:Y2};\n\n    annotation.setHeight(diameterInPts);\n    annotation.setWidth(diameterInPts);\n    annotation.resize(newRect);\n    setRadius(radius);\n    forceEllipseRedraw();\n    finishAnnotation();\n  };\n\n  const forceEllipseRedraw = useCallback(() => {\n    const annotationManager = core.getAnnotationManager();\n    annotationManager.redrawAnnotation(annotation);\n    annotationManager.trigger('annotationChanged', [[annotation], 'modify', []]);\n  }, [annotation]);\n\n  const getMaxDiameterInPts = useCallback(() => {\n    const currentPageNumber = core.getCurrentPage();\n    const documentWidth = window.documentViewer.getPageWidth(currentPageNumber);\n    const documentHeight = window.documentViewer.getPageHeight(currentPageNumber);\n    const startX = annotation['X'];\n    const startY = annotation['Y'];\n\n    const maxX = documentWidth - startX;\n    const maxY = documentHeight - startY;\n\n    return Math.min(maxX, maxY);\n  }, [annotation]);\n\n  const validateDiameter = event => {\n    const radius = Math.abs(event.target.value);\n    const factor = annotation.Measure.axis[0].factor;\n    const radiusInPts = radius / factor;\n    const diameterInPts = radiusInPts * 2;\n    ensureDiameterIsWithinBounds(diameterInPts);\n  };\n\n  const ensureDiameterIsWithinBounds = useCallback(diameterInPts => {\n    const maxDiameterInPts = getMaxDiameterInPts();\n\n    if (diameterInPts > maxDiameterInPts) {\n      const boundingRect = annotation.getRect();\n      const {x1, x2, y1, y2} = boundingRect;\n      let width = annotation.Width;\n      let height = annotation.Height;\n      const currentPageNumber = core.getCurrentPage();\n      const documentWidth = window.documentViewer.getPageWidth(currentPageNumber);\n      const documentHeight = window.documentViewer.getPageHeight(currentPageNumber);\n\n      if (x2 > documentWidth) {\n        boundingRect['x2'] = documentWidth;\n        width = documentWidth - x1;\n      }\n      if (y2 > documentHeight) {\n        boundingRect['y2'] = documentHeight;\n        height = documentHeight - y1;\n      }\n\n      if (width < documentWidth) {\n        annotation.setWidth(width);\n      } else {\n        annotation.setWidth(documentWidth);\n      }\n      if (height < documentHeight){\n        annotation.setHeight(height);\n      } else {\n        annotation.setHeight(documentHeight);\n      }\n      annotation.resize(boundingRect);\n      forceEllipseRedraw();\n    }\n  }, [annotation, forceEllipseRedraw, getMaxDiameterInPts]);\n\n\n  useEffect(() => {\n    if (!isOpen) {\n      ensureDiameterIsWithinBounds(annotation.getWidth());\n    }\n  }, [annotation, ensureDiameterIsWithinBounds, isOpen]);\n\n  const [radius, setRadius] = useState(computeRadius());\n\n  return (\n    <>\n      <div className=\"measurement__title\">\n        {icon && <Icon className=\"measurement__icon\" glyph={icon}/>}\n        {t('option.measurementOverlay.areaMeasurement')}\n      </div>\n      <div className=\"measurement__scale\">\n        {t('option.measurementOverlay.scale')}: {renderScaleRatio()}\n      </div>\n      <div className=\"measurement__precision\">\n        {t('option.shared.precision')}: {precision}\n      </div>\n      <div className=\"measurement__value\">\n        {t('option.measurementOverlay.area')}: {annotation.getContents()}\n      </div>\n      <div className=\"measurement__value\">\n        {t('option.measurementOverlay.radius')}:\n        <input\n          autoFocus={!isMobileDevice}\n          className=\"lineMeasurementInput\"\n          type=\"number\"\n          min=\"0\"\n          disabled={isReadOnly}\n          value={radius}\n          onChange={event => {\n            onChangeRadiusLength(event);\n            selectAnnotation();\n          }}\n          onBlur={event => validateDiameter(event)}\n          onKeyDown={event => {\n            if (event.key === 'Enter') {\n              onChangeRadiusLength(event);\n              deselectAnnot();\n            }\n          }}\n        /> {unit}\n      </div>\n    </>\n  );\n}\n\nEllipseMeasurementOverlay.propTypes = {\n  annotation: PropTypes.object.isRequired,\n  t: PropTypes.func.isRequired,\n  isOpen: PropTypes.bool.isRequired,\n};\n\nexport default withTranslation()(EllipseMeasurementOverlay);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport { mapAnnotationToKey, getDataWithKey } from '../../constants/map';\n\nArcMeasurementOverlay.propTypes = {\n  annotation: PropTypes.object.isRequired,\n  translate: PropTypes.func.isRequired,\n};\n\nfunction ArcMeasurementOverlay(props) {\n  const annotationKey = mapAnnotationToKey(props.annotation);\n  const { translate, annotation } = props;\n  const { icon } = getDataWithKey(annotationKey);\n  const scale = annotation.Scale;\n  const precision = annotation.Precision;\n\n  const renderScaleRatio = () => `${scale[0][0]} ${scale[0][1]} = ${scale[1][0]} ${scale[1][1]}`;\n\n  return (\n    <>\n      <div className=\"measurement__title\">\n        {icon && <Icon className=\"measurement__icon\" glyph={icon} />}\n        {translate('option.measurementOverlay.arcMeasurement')}\n      </div>\n      <div className=\"measurement__scale\">\n        {translate('option.measurementOverlay.scale')}: {renderScaleRatio()}\n      </div>\n      <div className=\"measurement__precision\">\n        {translate('option.shared.precision')}: {precision}\n      </div>\n      <div className=\"measurement__circumference\">\n        {translate('option.measurementOverlay.length')}: {annotation.Length}\n      </div>\n      <div className=\"measurement__radius\">\n        {translate('option.measurementOverlay.radius')}: {annotation.Radius}\n      </div>\n      <div className=\"measurement__radius\">\n        {translate('option.measurementOverlay.angle')}: {`${annotation.Angle.toFixed(2)}\\xB0`}\n      </div>\n    </>\n  );\n}\n\nexport default withTranslation()(ArcMeasurementOverlay);\n","import React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport core from 'core';\nimport { isMobileDevice } from 'helpers/device';\nimport selectors from 'selectors';\nimport useOnClickOutside from 'src/hooks/useOnClickOutside';\nimport getFormattedUnit from 'src/helpers/getFormattedUnit';\n\n\nfunction LineMeasurementInput(props) {\n  const { t, annotation, isOpen } = props;\n  const isReadOnly = useSelector(state => selectors.isDocumentReadOnly(state));\n  const factor = annotation.Measure.axis[0].factor;\n  const unit = getFormattedUnit(annotation.DisplayUnits[annotation.DisplayUnits.length - 1]);\n  const [length, setLength] = useState((annotation.getLineLength() * factor).toFixed(2));\n  const [showQuotMark, setShowQuotMark] = useState(true);\n  const inputRef = useRef();\n\n  useOnClickOutside(inputRef, () => setShowQuotMark(true));\n\n  useEffect(() => {\n    const onAnnotationChanged = () => {\n      setLength((annotation.getLineLength() * factor).toFixed(2));\n      setAngle(computeAngle());\n    };\n    core.addEventListener('mouseMove', onAnnotationChanged);\n    return () => {\n      core.removeEventListener('mouseMove', onAnnotationChanged);\n    };\n  }, [annotation, computeAngle, factor]);\n\n  const onInputChanged = event => {\n    setLength(event.target.value);\n    validateLineLength(event);\n    finishAnnotation();\n  };\n\n  const finishAnnotation = () => {\n    const tool = core.getTool('AnnotationCreateDistanceMeasurement');\n    tool.finish();\n  };\n\n  const selectAnnotation = () => {\n    const annotationManager = core.getAnnotationManager();\n    annotationManager.selectAnnotation(annotation);\n  };\n\n  const deselectAnnotation = () => {\n    const annotationManager = core.getAnnotationManager();\n    annotationManager.deselectAnnotation(annotation);\n  };\n\n  const validateLineLength = event => {\n    const length = Math.abs(event.target.value);\n    const factor = annotation.Measure.axis[0].factor;\n    const lengthInPts = length / factor;\n    ensureLineIsWithinBounds(lengthInPts);\n  };\n\n  const isApproximatelyEqual = (value1, value2) => {\n    return Math.abs(value1 - value2) < 0.1;\n  };\n\n  const ensureLineIsWithinBounds = useCallback(lengthInPts => {\n    if (!isApproximatelyEqual(annotation.getLineLength(), lengthInPts)) {\n      const maxLengthInPts = getMaxLineLengthInPts();\n      annotation.setLineLength(Math.min(maxLengthInPts, lengthInPts));\n      forceLineRedraw();\n    }\n  }, [annotation, forceLineRedraw, getMaxLineLengthInPts]);\n\n  const forceLineRedraw = useCallback(() => {\n    const annotationManager = core.getAnnotationManager();\n    annotationManager.drawAnnotations(annotation.PageNumber);\n    annotationManager.trigger('annotationChanged', [[annotation], 'modify', {}]);\n  }, [annotation]);\n\n  const getMaxLineLengthInPts = useCallback(() => {\n    const currentPageNumber = core.getCurrentPage();\n    const documentWidth = window.documentViewer.getPageWidth(currentPageNumber);\n    const documentHeight = window.documentViewer.getPageHeight(currentPageNumber);\n    const angleInDegrees = annotation.getAngle() * (180 / Math.PI).toFixed(2);\n    const startPoint = annotation.getStartPoint();\n    const startX = startPoint.x;\n    const startY = startPoint.y;\n\n    let maxX;\n    let maxY;\n    if (Math.abs(angleInDegrees) < 90) {\n      maxX = documentWidth;\n    } else {\n      maxX = 0;\n    }\n\n    if (angleInDegrees > 0) {\n      maxY = documentHeight;\n    } else {\n      maxY = 0;\n    }\n\n    const maxLenX = Math.abs((maxX - startX) / Math.cos(annotation.getAngle()));\n    const maxLenY = Math.abs((maxY - startY) / Math.sin(annotation.getAngle()));\n\n    return Math.min(maxLenX, maxLenY);\n  }, [annotation]);\n\n  const setLineAngle = event => {\n    const angle = event.target.value;\n    const angleInRadians = angle * (Math.PI / 180) * -1;\n    const lengthInPts = annotation.getLineLength();\n    const start = annotation.Start;\n    const endX = Math.cos(angleInRadians) * lengthInPts + start.x;\n    const endY = Math.sin(angleInRadians) * lengthInPts + start.y;\n    annotation.setEndPoint(endX, endY);\n    annotation.adjustRect();\n    forceLineRedraw();\n  };\n\n  const onAngleChange = event => {\n    setAngle(event.target.value);\n    setLineAngle(event);\n    finishAnnotation();\n  };\n\n  const computeAngle = useCallback(() => {\n    let angleInRadians = annotation.getAngle();\n    // Multiply by -1 to achieve 0-360 degrees counterclockwise\n    angleInRadians *= -1;\n    angleInRadians = angleInRadians < 0 ? angleInRadians + 2 * Math.PI : angleInRadians;\n    return ((angleInRadians / Math.PI) * 180).toFixed(2);\n  }, [annotation]);\n\n  const [angle, setAngle] = useState(computeAngle());\n\n\n  useEffect(() => {\n    if (!isOpen) {\n      ensureLineIsWithinBounds(annotation.getLineLength());\n    }\n  }, [annotation, ensureLineIsWithinBounds, isOpen]);\n\n  return (\n    <div>\n      <div className=\"measurement__value\">\n        {t('option.measurementOverlay.distance')}: {' '}\n        {showQuotMark && annotation.DisplayUnits.length > 1 ? (\n          <div onClick={() => setShowQuotMark(false)} className=\"distance-show\" >{annotation.getContents()}</div>\n        ) : (\n          <>\n            <input\n              className=\"lineMeasurementInput\"\n              type=\"number\"\n              min=\"0\"\n              disabled={isReadOnly}\n              value={length}\n              ref={inputRef}\n              autoFocus={!isMobileDevice}\n              onChange={event => {\n                onInputChanged(event);\n                selectAnnotation();\n              }}\n              onBlur={event => validateLineLength(event)}\n              onKeyDown={event => {\n                if (event.key === 'Enter') {\n                  onInputChanged(event);\n                  deselectAnnotation();\n                }\n              }}\n            /> {unit}\n          </>\n        )}\n      </div>\n      <div className=\"angle_input\">\n        {t('option.measurementOverlay.angle')}: {' '}\n        <input\n          className=\"lineMeasurementInput\"\n          type=\"number\"\n          min=\"0\"\n          max=\"360\"\n          disabled={isReadOnly}\n          value={angle}\n          onChange={event => {\n            onAngleChange(event);\n            selectAnnotation();\n          }}\n          onKeyDown={event => {\n            if (event.key === 'Enter') {\n              onAngleChange(event);\n              deselectAnnotation();\n            }\n          }}\n        /> &deg;\n      </div>\n    </div>\n  );\n}\n\nLineMeasurementInput.propTypes = {\n  annotation: PropTypes.object.isRequired,\n  isOpen: PropTypes.bool.isRequired,\n  t: PropTypes.func.isRequired,\n};\n\nexport default LineMeasurementInput;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport core from 'core';\nimport { mapAnnotationToKey, getDataWithKey } from '../../constants/map';\n\nCountMeasurementOverlay.propTypes = {\n  annotation: PropTypes.object.isRequired,\n  t: PropTypes.func.isRequired,\n};\n\nfunction CountMeasurementOverlay(props) {\n  const annotationKey = mapAnnotationToKey(props.annotation);\n  const { icon } = getDataWithKey(annotationKey);\n  const { t } = props;\n  const annotationList = core.getAnnotationsList();\n\n  const measurementAnnotationsList = annotationList.filter(annotation => {\n    return annotation.getCustomData('trn-is-count');\n  });\n  const annotationCount = measurementAnnotationsList.length;\n\n  return (\n    <>\n      <div className=\"measurement__title\">\n        {icon && <Icon className=\"measurement__icon\" glyph={icon} />}\n        {t('option.measurementOverlay.countMeasurement')}\n      </div>\n      <div className=\"measurement__count\">\n        {t('option.measurementOverlay.count')}: {annotationCount}\n      </div>\n    </>\n  );\n}\n\nexport default withTranslation()(CountMeasurementOverlay);","import React from 'react';\nimport classNames from 'classnames';\nimport Draggable from 'react-draggable';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\n\nimport Icon from 'components/Icon';\n\nimport core from 'core';\nimport { mapAnnotationToKey, mapToolNameToKey, getDataWithKey } from 'constants/map';\nimport parseMeasurementContents from 'helpers/parseMeasurementContents';\nimport getFormattedUnit from 'src/helpers/getFormattedUnit';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './MeasurementOverlay.scss';\nimport CustomMeasurementOverlay from './CustomMeasurementOverlay';\nimport EllipseMeasurementOverlay from './EllipseMeasurementOverlay';\nimport ArcMeasurementOverlay from './ArcMeasurementOverlay';\nimport LineMeasurementInput from './LineMeasurementInput';\nimport CountMeasurementOverlay from './CountMeasurementOverlay';\n\nconst showFraction = precision => [1/8, 1/16, 1/32, 1/64].includes(precision);\n\nconst greatestCommonDivisor = (firstNum, secondNum) => {\n  if (secondNum === 0) {\n    return firstNum;\n  }\n  return greatestCommonDivisor(secondNum, firstNum % secondNum);\n};\n\nconst convertDecimalToFraction = (value, precision) => {\n  const denominator = precision;\n  const numerator = Math.round(value * denominator);\n  if (numerator === denominator) {\n    return '1';\n  }\n  const gcd = greatestCommonDivisor(numerator, denominator);\n  return numerator ? `${numerator/gcd}/${denominator/gcd}` : '';\n};\n\nconst getFraction = (value, precision) => {\n  let integerPart = Math.floor(value);\n  let fractionPart = convertDecimalToFraction(value - integerPart, precision);\n  if (fractionPart === '1') {\n    fractionPart = '0';\n    integerPart++;\n  }\n\n  if (integerPart) {\n    return fractionPart !== '0' ? `${integerPart} ${fractionPart}` : integerPart;\n  } else if (fractionPart && fractionPart !== '0') {\n    return fractionPart;\n  }\n  return 0;\n};\n\nclass MeasurementOverlay extends React.PureComponent {\n  static propTypes = {\n    isOpen: PropTypes.bool,\n    isDisabled: PropTypes.bool,\n    openElement: PropTypes.func.isRequired,\n    closeElement: PropTypes.func.isRequired,\n    activeToolName: PropTypes.string.isRequired,\n    t: PropTypes.func.isRequired,\n    customMeasurementOverlay: PropTypes.array,\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      annotation: null,\n      transparentBackground: false,\n      position: {\n        x: 0,\n        y: 0,\n      },\n    };\n    this.overlayRef = React.createRef();\n    this.isCreatingAnnotation = false;\n  }\n\n  componentDidMount() {\n    core.addEventListener('mouseMove', this.onMouseMove);\n    core.addEventListener('annotationSelected', this.onAnnotationSelected);\n    core.addEventListener('annotationChanged', this.onAnnotationChanged);\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.activeToolName !== this.props.activeToolName) {\n      const { openElement, closeElement } = this.props;\n      if (this.isMeasurementTool(this.props.activeToolName)) {\n        openElement('measurementOverlay');\n      } else {\n        closeElement('measurementOverlay');\n      }\n    }\n\n    if (prevProps.isOpen && !this.props.isOpen) {\n      this.setState({\n        annotation: null,\n        transparentBackground: false,\n      });\n      this.isCreatingAnnotation = false;\n    }\n  }\n\n  componentWillUnmount() {\n    core.removeEventListener('mouseMove', this.onMouseMove);\n    core.removeEventListener('annotationSelected', this.onAnnotationSelected);\n    core.removeEventListener('annotationChanged', this.onAnnotationChanged);\n  }\n\n  onMouseMove = e => {\n    const { activeToolName, openElement } = this.props;\n    const tool = core.getTool(activeToolName);\n\n    if (this.state.annotation) {\n      const insideRect = this.isMouseInsideRect(e, this.overlayRef.current);\n      let useTransparentBackground;\n\n      if (this.isCreatingAnnotation) {\n        const drawMode = core.getToolMode().getDrawMode?.();\n        useTransparentBackground = insideRect && drawMode !== 'twoClicks';\n      } else {\n        const annotUnderMouse = core.getAnnotationByMouseEvent(e);\n        useTransparentBackground = insideRect && annotUnderMouse === this.state.annotation;\n      }\n\n      this.setState({\n        transparentBackground: useTransparentBackground,\n      });\n      this.forceUpdate();\n    } else if (\n      (this.isMeasurementToolWithInfo(tool) && !this.isSmallAnnotation(tool.annotation)) ||\n      this.shouldShowCustomOverlay(tool.annotation)\n    ) {\n      openElement('measurementOverlay');\n      this.setState({ annotation: tool.annotation });\n      // we know we are creating an annotation at this point because tool.annotation is truthy\n      this.isCreatingAnnotation = true;\n    }\n  };\n\n  isMouseInsideRect = (e, overlayElement) => {\n    if (overlayElement === null) {\n      return false;\n    }\n\n    const overlayRect = overlayElement.getBoundingClientRect();\n    let x,y;\n    if (e.touches && e instanceof TouchEvent) {\n      x = e.touches[0].clientX;\n      y = e.touches[0].clientY;\n    } else {\n      x = e.clientX;\n      y = e.clientY;\n    }\n    return (\n      x >= overlayRect.left &&\n      x <= overlayRect.right &&\n      y >= overlayRect.top &&\n      y <= overlayRect.bottom\n    );\n  };\n\n  isMeasurementToolWithInfo(tool) {\n    const { activeToolName } = this.props;\n    return (\n      this.isMeasurementTool(activeToolName) &&\n      tool.annotation &&\n      this.shouldShowInfo(tool.annotation)\n    );\n  }\n\n  // This helps ensure we don't show an overlay for small annotations\n  isSmallAnnotation = annotation => {\n    const w = annotation.getWidth();\n    const h = annotation.getHeight();\n    const minSize = (annotation.getRectPadding() + 1) * 2;\n\n    return w <= minSize && h <= minSize;\n  };\n\n  onAnnotationSelected = (annotations, action) => {\n    const { openElement, closeElement } = this.props;\n\n    if (\n      action === 'selected' &&\n      annotations.length === 1 &&\n      (this.isMeasurementAnnotation(annotations[0]) || this.shouldShowCustomOverlay(annotations[0]))\n    ) {\n      this.setState({ annotation: annotations[0] });\n      openElement('measurementOverlay');\n    } else if (\n      action === 'deselected' &&\n      !core.isAnnotationSelected(this.state.annotation)\n    ) {\n      closeElement('measurementOverlay');\n    }\n  };\n\n  onAnnotationChanged = (annotations, action) => {\n    // measurement overlay will open and show the annotation information when we are creating an annotation using measurement tools\n    // since by default we don't auto select an annotation after it's created, we close the overlay here to avoid the confusion\n    // where no annotation is selected but measurement overlay shows the information about the annotation we were creating\n    if (\n      action === 'add' &&\n      annotations.length === 1 &&\n      annotations[0] === this.state.annotation\n    ) {\n      this.props.closeElement('measurementOverlay');\n    }\n\n    if (\n      action === 'modify' &&\n      annotations.length === 1 &&\n      annotations[0] === this.state.annotation\n    ) {\n      this.forceUpdate();\n    }\n  };\n\n  isMeasurementAnnotation = annotation =>\n    [\n      'distanceMeasurement',\n      'perimeterMeasurement',\n      'arcMeasurement',\n      'areaMeasurement',\n      'rectangularAreaMeasurement',\n      'cloudyRectangularAreaMeasurement',\n      'ellipseMeasurement',\n      'countMeasurement'\n    ].includes(mapAnnotationToKey(annotation));\n\n  isMeasurementTool = toolName =>\n    [\n      'distanceMeasurement',\n      'perimeterMeasurement',\n      'arcMeasurement',\n      'areaMeasurement',\n      'rectangularAreaMeasurement',\n      'cloudyRectangularAreaMeasurement',\n      'ellipseMeasurement',\n      'countMeasurement'\n    ].includes(mapToolNameToKey(toolName));\n\n  shouldShowCustomOverlay = annotation =>\n    (!this.isMeasurementAnnotation(annotation) &&\n    this.props.customMeasurementOverlay.some(overlay => overlay.validate(annotation)))\n\n  shouldShowInfo = annotation => {\n    const key = mapAnnotationToKey(annotation);\n\n    let showInfo;\n    if (\n      key === 'perimeterMeasurement' ||\n      key === 'arcMeasurement' ||\n      key === 'areaMeasurement' ||\n      key === 'rectangularAreaMeasurement',\n      key === 'cloudyRectangularAreaMeasurement'\n    ) {\n      // for polyline and polygon, there's no useful information we can show if it has no vertices or only one vertex.\n      showInfo = annotation.getPath().length > 1;\n    } else if (key === 'distanceMeasurement' || key === 'ellipseMeasurement') {\n      showInfo = true;\n    }\n\n    return showInfo;\n  };\n\n  getAngleInRadians = (pt1, pt2, pt3) => {\n    let angle;\n\n    if (pt1 && pt2) {\n      if (pt3) {\n        // calculate the angle using Law of cosines\n        const AB = Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n        const BC = Math.sqrt(Math.pow(pt2.x - pt3.x, 2) + Math.pow(pt2.y - pt3.y, 2));\n        const AC = Math.sqrt(Math.pow(pt3.x - pt1.x, 2) + Math.pow(pt3.y - pt1.y, 2));\n        angle = Math.acos((BC * BC + AB * AB - AC * AC) / (2 * BC * AB));\n      } else {\n        // if there are only two points returns the angle in the plane (in radians) between the positive x-axis and the ray from (0,0) to the point (x,y)\n        angle = Math.atan2(pt2.y - pt1.y, pt2.x - pt1.x);\n        // keep the angle range between 0 and Math.PI / 2\n        angle = Math.abs(angle);\n        angle = angle > Math.PI / 2 ? Math.PI - angle : angle;\n      }\n    }\n\n    return angle;\n  };\n\n  getNumberOfDecimalPlaces = annotation =>\n    annotation.Precision === 1 ? 0 : annotation.Precision.toString().split('.')[1].length;\n\n  syncDraggablePosition = (e, { x, y }) => {\n    this.setState({\n      position: { x, y },\n    });\n  };\n\n  renderTitle = () => {\n    const { t } = this.props;\n    const key = mapAnnotationToKey(this.state.annotation);\n    const { icon } = getDataWithKey(key);\n\n    const keyTitleMap = {\n      distanceMeasurement: t('option.measurementOverlay.distanceMeasurement'),\n      perimeterMeasurement: t('option.measurementOverlay.perimeterMeasurement'),\n      arcMeasurement: t('option.measurementOverlay.arcMeasurement'),\n      areaMeasurement: t('option.measurementOverlay.areaMeasurement'),\n      rectangularAreaMeasurement: t('option.measurementOverlay.areaMeasurement'),\n      cloudyRectangularAreaMeasurement: t('option.measurementOverlay.areaMeasurement'),\n    };\n\n    return (\n      <div className=\"measurement__title\">\n        {icon && <Icon className=\"measurement__icon\" glyph={icon} />}\n        {keyTitleMap[key]}\n      </div>\n    );\n  };\n\n  renderScaleRatio = () => {\n    const { annotation } = this.state;\n    const isImperialMarksEnabled = showFraction(annotation.Precision);\n    const unit = getFormattedUnit(annotation.DisplayUnits[0]);\n    const scale = annotation.Scale;\n    const decimalPlaces = this.getNumberOfDecimalPlaces(annotation);\n    const scaleFrom = isImperialMarksEnabled ? getFraction(scale[0][0], 1 / annotation.Precision) : scale[0][0];\n    const scaleTo = isImperialMarksEnabled ? getFraction(scale[1][0], 1 / annotation.Precision) : scale[1][0].toFixed(decimalPlaces);\n    return `${scaleFrom} ${scale[0][1]} = ${scaleTo} ${unit}`;\n  };\n\n  renderValue = () => {\n    const { annotation } = this.state;\n    const { t } = this.props;\n    const key = mapAnnotationToKey(annotation);\n\n    const keyDisplayNameMap = {\n      distanceMeasurement: t('option.measurementOverlay.distance'),\n      perimeterMeasurement: t('option.measurementOverlay.perimeter'),\n      arcMeasurement: t('option.measurementOverlay.arc'),\n      areaMeasurement: t('option.measurementOverlay.area'),\n      rectangularAreaMeasurement: t('option.measurementOverlay.area'),\n      cloudyRectangularAreaMeasurement: t('option.measurementOverlay.area'),\n    };\n\n    return (\n      <div className=\"measurement__value\">\n        {keyDisplayNameMap[key]}: {annotation.getContents()}\n      </div>\n    );\n  };\n\n  renderDeltas = () => {\n    const { annotation } = this.state;\n    const isImperialMarksEnabled = showFraction(annotation.Precision);\n    const angle = this.getAngleInRadians(annotation.Start, annotation.End);\n    const unit = getFormattedUnit(annotation.DisplayUnits[0]);\n    const decimalPlaces = this.getNumberOfDecimalPlaces(annotation);\n    const distance = parseMeasurementContents(annotation.getContents());\n    const horizontalDistance = Math.abs(distance * Math.cos(angle));\n    const verticalDistance = Math.abs(distance * Math.sin(angle));\n    const deltaX = !isNaN(horizontalDistance) ? isImperialMarksEnabled ? getFraction(horizontalDistance, 1 / annotation.Precision) : horizontalDistance.toFixed(decimalPlaces) : 0;\n    const deltaY = !isNaN(verticalDistance) ? isImperialMarksEnabled ? getFraction(verticalDistance, 1 / annotation.Precision) : verticalDistance.toFixed(decimalPlaces) : 0;\n\n    return (\n      <div className=\"measurement__deltas\">\n        <div className=\"measurement__deltas--X\">\n          &Delta;X: {deltaX} {unit}\n        </div>\n        <div className=\"measurement__deltas--Y\">\n          &Delta;Y: {deltaY} {unit}\n        </div>\n      </div>\n    );\n  };\n\n  renderAngle = () => {\n    const { annotation } = this.state;\n    const key = mapAnnotationToKey(annotation);\n    const getIPathAnnotationPts = annotation => {\n      const path = annotation.getPath();\n      const length = path.length;\n      return [path[length - 3], path[length - 2], path[length - 1]];\n    };\n    const keyPtMap = {\n      distanceMeasurement: ({ Start, End }) => [Start, End],\n      perimeterMeasurement: getIPathAnnotationPts,\n      arcMeasurement: getIPathAnnotationPts,\n      areaMeasurement: getIPathAnnotationPts,\n      rectangularAreaMeasurement: getIPathAnnotationPts,\n      cloudyRectangularAreaMeasurement: getIPathAnnotationPts,\n    };\n    const pts = keyPtMap[key](annotation).filter(pt => !!pt);\n\n    let angle = this.getAngleInRadians(...pts);\n    if (angle) {\n      const decimalPlaces = this.getNumberOfDecimalPlaces(annotation);\n      angle = ((angle / Math.PI) * 180).toFixed(decimalPlaces);\n    }\n\n    return (\n      angle !== undefined && (\n        <div className=\"measurement__angle\">\n          {this.props.t('option.measurementOverlay.angle')}: {angle}&deg;\n        </div>\n      )\n    );\n  };\n\n  renderOverlay = (annotation, t, isOpen, key) => {\n    if (this.shouldShowCustomOverlay(annotation)) {\n      return (\n        <CustomMeasurementOverlay\n          annotation={annotation}\n          {...this.props.customMeasurementOverlay.filter(customOverlay =>\n            customOverlay.validate(annotation)\n          )[0]}\n        />\n      );\n    } else if (key === 'ellipseMeasurement') {\n      return <EllipseMeasurementOverlay annotation={annotation} isOpen={isOpen} />;\n    } else if (key === 'countMeasurement') {\n      return <CountMeasurementOverlay annotation={annotation} t={t} />;\n    } else if (key === 'arcMeasurement') {\n      return (<ArcMeasurementOverlay annotation={annotation} translate={t} />);\n    } else {\n      const isImperialMarksEnabled = showFraction(annotation.Precision);\n      return (\n        <>\n          {this.renderTitle()}\n          <div className=\"measurement__scale\">\n            {t('option.measurementOverlay.scale')}: {this.renderScaleRatio()}\n          </div>\n          <div className=\"measurement__precision\">\n            {t('option.shared.precision')}: {isImperialMarksEnabled ? convertDecimalToFraction(annotation.Precision, 1 / annotation.Precision) : annotation.Precision}\n          </div>\n          {key === 'distanceMeasurement' ? (\n            <LineMeasurementInput annotation={annotation} isOpen={isOpen} t={t} />\n          ) : (\n            this.renderValue()\n          )}\n          {key === 'distanceMeasurement' && this.renderDeltas()}\n          {key !== 'rectangularAreaMeasurement' &&\n            key !== 'distanceMeasurement' &&\n            key !== 'cloudyRectangularAreaMeasurement' &&\n            this.renderAngle()}\n        </>\n      );\n    }\n  }\n  render() {\n    const { annotation, position, transparentBackground } = this.state;\n    const { isDisabled, t, isOpen } = this.props;\n    const key = mapAnnotationToKey(annotation);\n\n    if (isDisabled || !annotation) {\n      return null;\n    }\n\n    return (\n      <Draggable\n        cancel=\"input\"\n        position={position}\n        onDrag={this.syncDraggablePosition}\n        onStop={this.syncDraggablePosition}\n      >\n        <div\n          className={classNames({\n            Overlay: true,\n            MeasurementOverlay: true,\n            open: isOpen,\n            closed: !isOpen,\n            transparent: transparentBackground,\n          })}\n          ref={this.overlayRef}\n          data-element=\"measurementOverlay\"\n        >\n          {this.renderOverlay(annotation, t, isOpen, key)}\n        </div>\n      </Draggable>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  isOpen: selectors.isElementOpen(state, 'measurementOverlay'),\n  isDisabled: selectors.isElementDisabled(state, 'measurementOverlay'),\n  activeToolName: selectors.getActiveToolName(state),\n  customMeasurementOverlay: selectors.getCustomMeasurementOverlay(state),\n});\n\nconst mapDispatchToProps = {\n  openElement: actions.openElement,\n  closeElement: actions.closeElement,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTranslation()(MeasurementOverlay));\n","import MeasurementOverlay from './MeasurementOverlay';\n\nexport default MeasurementOverlay;","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { withTranslation } from 'react-i18next';\n\nimport core from \"core\";\nimport classNames from 'classnames';\nimport selectors from \"selectors\";\nimport { isIOS } from \"helpers/device\";\nimport useMedia from 'hooks/useMedia';\n\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport Button from 'components/Button';\n\nimport \"./PageNavOverlay.scss\";\n\nclass PageNavOverlay extends React.PureComponent {\n  static propTypes = {\n    isLeftPanelDisabled: PropTypes.bool,\n    isLeftPanelOpen: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    currentPage: PropTypes.number,\n    totalPages: PropTypes.number,\n    pageLabels: PropTypes.array.isRequired,\n    allowPageNavigation: PropTypes.bool.isRequired,\n    enableFadePageNavigation: PropTypes.bool.isRequired,\n  };\n\n  constructor(props) {\n    super(props);\n    this.textInput = React.createRef();\n    this.state = {\n      input: '',\n      isCustomPageLabels: false,\n      isFocused: false,\n    };\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.pageLabels !== this.props.pageLabels) {\n      const isCustomPageLabels = this.props.pageLabels.some(\n        (label, index) => label !== `${index + 1}`\n      );\n      this.setState({ isCustomPageLabels });\n    }\n\n    if (\n      prevProps.currentPage !== this.props.currentPage ||\n      prevProps.pageLabels !== this.props.pageLabels\n    ) {\n      this.setState({\n        input: this.props.pageLabels[this.props.currentPage - 1],\n      });\n    }\n  }\n\n  onClick = () => {\n    if (isIOS) {\n      setTimeout(() => {\n        this.textInput.current.setSelectionRange(0, 9999);\n      }, 0);\n    } else {\n      this.textInput.current.select();\n    }\n  };\n\n  onChange = e => {\n    if (!this.props.pageLabels?.some(p => p.startsWith(e.target.value))) {\n      return;\n    }\n\n    this.setState({ input: e.target.value });\n  };\n\n  onSubmit = e => {\n    e.preventDefault();\n\n    const { input } = this.state;\n    const isValidInput = input === \"\" || this.props.pageLabels.includes(input);\n\n    if (isValidInput) {\n      const pageToGo = this.props.pageLabels.indexOf(input) + 1;\n      core.setCurrentPage(pageToGo);\n    } else {\n      this.textInput.current.blur();\n    }\n  };\n\n  onBlur = () => {\n    const { currentPage, pageLabels } = this.props;\n\n    this.setState({ input: pageLabels[currentPage - 1], isFocused: false });\n  };\n\n  onFocus = () => {\n    this.setState({ isFocused: true });\n  }\n\n  goToPrevPage = () => {\n    if (window.documentViewer.getCurrentPage() - 1 > 0) {\n      window.documentViewer.setCurrentPage(\n        Math.max(window.documentViewer.getCurrentPage() - 1, 1),\n      );\n    }\n  }\n\n  goToNextPage = () => {\n    if (window.documentViewer.getCurrentPage() + 1 <= window.documentViewer.getPageCount()) {\n      window.documentViewer.setCurrentPage(\n        Math.min(window.documentViewer.getCurrentPage() + 1, window.documentViewer.getPageCount())\n      );\n    }\n  }\n\n  render() {\n    const {\n      currentPage,\n      totalPages,\n      allowPageNavigation,\n      isMobile,\n      t,\n      dataElement,\n      enableFadePageNavigation\n    } = this.props;\n\n    const inputWidth = this.state.input ? (this.state.input.length) * (isMobile ? 10 : 8) : 0;\n    const isFirstPage = window.documentViewer.getCurrentPage() === 1;\n    const isLastPage = window.documentViewer.getCurrentPage() === window.documentViewer.getPageCount();\n\n    return (\n      <DataElementWrapper\n        className={classNames({\n          Overlay: true,\n          PageNavOverlay: true,\n          FadeOut: enableFadePageNavigation && !this.props.showNavOverlay && !this.state.isFocused\n        })}\n        dataElement={dataElement || \"pageNavOverlay\"}\n        onMouseEnter={this.props.onMouseEnter}\n        onMouseLeave={this.props.onMouseLeave}\n      >\n        <Button\n          className=\"side-arrow-container\"\n          img=\"icon-chevron-left\"\n          title={isFirstPage ? null : t('action.pagePrev')} // Don't show tooltip on a disabled button\n          ariaLabel={t('action.pagePrev')}\n          onClick={this.goToPrevPage}\n          iconClassName=\"side-arrow\"\n          forceTooltipPosition=\"top\"\n          disabled={isFirstPage}\n        />\n        <div className=\"formContainer\" onClick={this.onClick}>\n          <form onSubmit={this.onSubmit} onBlur={this.onBlur} onFocus={this.onFocus}>\n            <input\n              ref={this.textInput}\n              type=\"text\"\n              value={this.state.input}\n              onChange={this.onChange}\n              tabIndex={-1}\n              disabled={!allowPageNavigation}\n              style={{ width: inputWidth }}\n              aria-label={t('action.pageSet')}\n            />\n            {this.state.isCustomPageLabels\n              ? ` (${currentPage}/${totalPages})`\n              : ` / ${totalPages}`}\n          </form>\n        </div>\n        <Button\n          className=\"side-arrow-container\"\n          img=\"icon-chevron-right\"\n          title={isLastPage ? null : t('action.pageNext')}\n          ariaLabel={t('action.pageNext')}\n          onClick={this.goToNextPage}\n          iconClassName=\"side-arrow\"\n          forceTooltipPosition=\"top\"\n          disabled={isLastPage}\n        />\n      </DataElementWrapper>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  currentPage: selectors.getCurrentPage(state),\n  totalPages: selectors.getTotalPages(state),\n  pageLabels: selectors.getPageLabels(state),\n  allowPageNavigation: selectors.getAllowPageNavigation(state),\n  enableFadePageNavigation: selectors.shouldFadePageNavigationComponent(state),\n});\n\nconst ConnectedPageNavOverlay = connect(mapStateToProps)(withTranslation()(PageNavOverlay));\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return (\n    <ConnectedPageNavOverlay {...props} isMobile={isMobile} />\n  );\n};","import PageNavOverlay from './PageNavOverlay';\n\nexport default PageNavOverlay;\n","import React from \"react\";\nimport Icon from 'components/Icon';\nimport ToolButton from 'components/ToolButton';\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport actions from \"actions\";\nimport selectors from \"selectors\";\n\nimport \"./ToolButton.scss\";\n\nconst PresetButton = ({\n  toolName,\n  isToolStyleOpen,\n}) => {\n  const [\n    isActive,\n  ] = useSelector(\n    state => [\n      selectors.getActiveToolName(state) === toolName,\n    ],\n  );\n\n  const dispatch = useDispatch();\n  const getStylingDropdownButton = () => {\n\n    return (\n      <div\n        className=\"tool-button-arrow-container\"\n      >\n        {isActive &&\n          <div\n            className=\"tool-button-arrow-inner-container\"\n            onClick={() => dispatch(actions.toggleElement('toolStylePopup'))}\n          >\n            {(isToolStyleOpen ?\n              <Icon className=\"tool-button-arrow-up\" glyph=\"icon-chevron-up\" /> :\n              <Icon className=\"tool-button-arrow-down\" glyph=\"icon-chevron-down\" />)}\n          </div>}\n      </div>\n    );\n  };\n\n  return (\n    <div\n      className={classNames({\n        \"tool-button-container\": true,\n      })}\n    >\n      <ToolButton\n        toolName={toolName}\n      />\n      {getStylingDropdownButton()}\n    </div>\n  );\n};\n\nexport default PresetButton;\n","import {createElement,Component}from'react';import {findDOMNode}from'react-dom';function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n\n  _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _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 _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n  if (current === componentNode) {\n    return true;\n  } // SVG <use/> elements do not technically reside in the rendered DOM, so\n  // they do not have classList directly, but they offer a link to their\n  // corresponding element, which can have classList. This extra check is for\n  // that case.\n  // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n  // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n  if (current.correspondingElement) {\n    return current.correspondingElement.classList.contains(ignoreClass);\n  }\n\n  return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n  if (current === componentNode) {\n    return true;\n  } // If source=local then this event came from 'somewhere'\n  // inside and should be ignored. We could handle this with\n  // a layered approach, too, but that requires going back to\n  // thinking in terms of Dom node nesting, running counter\n  // to React's 'you shouldn't care about the DOM' philosophy.\n  // Also cover shadowRoot node by checking current.host\n\n\n  while (current.parentNode || current.host) {\n    // Only check normal node without shadowRoot\n    if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n      return true;\n    }\n\n    current = current.parentNode || current.host;\n  }\n\n  return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n  return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n  if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n    return;\n  }\n\n  var passive = false;\n  var options = Object.defineProperty({}, 'passive', {\n    get: function get() {\n      passive = true;\n    }\n  });\n\n  var noop = function noop() {};\n\n  window.addEventListener('testPassiveEventSupport', noop, options);\n  window.removeEventListener('testPassiveEventSupport', noop, options);\n  return passive;\n};function autoInc(seed) {\n  if (seed === void 0) {\n    seed = 0;\n  }\n\n  return function () {\n    return ++seed;\n  };\n}\n\nvar uid = autoInc();var passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n  var handlerOptions = null;\n  var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n  if (isTouchEvent && passiveEventSupport) {\n    handlerOptions = {\n      passive: !instance.props.preventDefault\n    };\n  }\n\n  return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n  var _class, _temp;\n\n  var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  return _temp = _class = /*#__PURE__*/function (_Component) {\n    _inheritsLoose(onClickOutside, _Component);\n\n    function onClickOutside(props) {\n      var _this;\n\n      _this = _Component.call(this, props) || this;\n\n      _this.__outsideClickHandler = function (event) {\n        if (typeof _this.__clickOutsideHandlerProp === 'function') {\n          _this.__clickOutsideHandlerProp(event);\n\n          return;\n        }\n\n        var instance = _this.getInstance();\n\n        if (typeof instance.props.handleClickOutside === 'function') {\n          instance.props.handleClickOutside(event);\n          return;\n        }\n\n        if (typeof instance.handleClickOutside === 'function') {\n          instance.handleClickOutside(event);\n          return;\n        }\n\n        throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n      };\n\n      _this.__getComponentNode = function () {\n        var instance = _this.getInstance();\n\n        if (config && typeof config.setClickOutsideRef === 'function') {\n          return config.setClickOutsideRef()(instance);\n        }\n\n        if (typeof instance.setClickOutsideRef === 'function') {\n          return instance.setClickOutsideRef();\n        }\n\n        return findDOMNode(instance);\n      };\n\n      _this.enableOnClickOutside = function () {\n        if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n          return;\n        }\n\n        if (typeof passiveEventSupport === 'undefined') {\n          passiveEventSupport = testPassiveEventSupport();\n        }\n\n        enabledInstances[_this._uid] = true;\n        var events = _this.props.eventTypes;\n\n        if (!events.forEach) {\n          events = [events];\n        }\n\n        handlersMap[_this._uid] = function (event) {\n          if (_this.componentNode === null) return;\n\n          if (_this.props.preventDefault) {\n            event.preventDefault();\n          }\n\n          if (_this.props.stopPropagation) {\n            event.stopPropagation();\n          }\n\n          if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n          var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n          if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n            return;\n          }\n\n          _this.__outsideClickHandler(event);\n        };\n\n        events.forEach(function (eventName) {\n          document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n        });\n      };\n\n      _this.disableOnClickOutside = function () {\n        delete enabledInstances[_this._uid];\n        var fn = handlersMap[_this._uid];\n\n        if (fn && typeof document !== 'undefined') {\n          var events = _this.props.eventTypes;\n\n          if (!events.forEach) {\n            events = [events];\n          }\n\n          events.forEach(function (eventName) {\n            return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n          });\n          delete handlersMap[_this._uid];\n        }\n      };\n\n      _this.getRef = function (ref) {\n        return _this.instanceRef = ref;\n      };\n\n      _this._uid = uid();\n      return _this;\n    }\n    /**\n     * Access the WrappedComponent's instance.\n     */\n\n\n    var _proto = onClickOutside.prototype;\n\n    _proto.getInstance = function getInstance() {\n      if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n        return this;\n      }\n\n      var ref = this.instanceRef;\n      return ref.getInstance ? ref.getInstance() : ref;\n    };\n\n    /**\n     * Add click listeners to the current document,\n     * linked to this component's state.\n     */\n    _proto.componentDidMount = function componentDidMount() {\n      // If we are in an environment without a DOM such\n      // as shallow rendering or snapshots then we exit\n      // early to prevent any unhandled errors being thrown.\n      if (typeof document === 'undefined' || !document.createElement) {\n        return;\n      }\n\n      var instance = this.getInstance();\n\n      if (config && typeof config.handleClickOutside === 'function') {\n        this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n        if (typeof this.__clickOutsideHandlerProp !== 'function') {\n          throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n        }\n      }\n\n      this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n      if (this.props.disableOnClickOutside) return;\n      this.enableOnClickOutside();\n    };\n\n    _proto.componentDidUpdate = function componentDidUpdate() {\n      this.componentNode = this.__getComponentNode();\n    }\n    /**\n     * Remove all document's event listeners for this component\n     */\n    ;\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      this.disableOnClickOutside();\n    }\n    /**\n     * Can be called to explicitly enable event listening\n     * for clicks and touches outside of this element.\n     */\n    ;\n\n    /**\n     * Pass-through render\n     */\n    _proto.render = function render() {\n      // eslint-disable-next-line no-unused-vars\n      var _this$props = this.props;\n          _this$props.excludeScrollbar;\n          var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n      if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n        props.ref = this.getRef;\n      } else {\n        props.wrappedRef = this.getRef;\n      }\n\n      props.disableOnClickOutside = this.disableOnClickOutside;\n      props.enableOnClickOutside = this.enableOnClickOutside;\n      return createElement(WrappedComponent, props);\n    };\n\n    return onClickOutside;\n  }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n    eventTypes: ['mousedown', 'touchstart'],\n    excludeScrollbar: config && config.excludeScrollbar || false,\n    outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n    preventDefault: false,\n    stopPropagation: false\n  }, _class.getClass = function () {\n    return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n  }, _temp;\n}export default onClickOutsideHOC;export{IGNORE_CLASS_NAME};","import HorizontalDivider from './HorizontalDivider';\n\nexport default HorizontalDivider;","import React from 'react';\n\nimport './HorizontalDivider.scss';\n\nconst HorizontalDivider = ({ style = {} }) => {\n  return (\n    <div\n      className=\"divider-container\"\n      style={style}\n    >\n      <div className=\"divider-horizontal\" />\n    </div>\n  );\n};\n\nexport default HorizontalDivider;","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\nimport { getDataWithKey } from 'constants/map';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport HorizontalDivider from 'components/HorizontalDivider';\nimport Tooltip from 'components/Tooltip';\n\nimport './ColorPaletteHeader.scss';\n\nclass ColorPaletteHeader extends React.PureComponent {\n  static propTypes = {\n    style: PropTypes.object.isRequired,\n    colorPalette: PropTypes.oneOf(['TextColor', 'StrokeColor', 'FillColor']),\n    colorMapKey: PropTypes.string.isRequired,\n    setActivePalette: PropTypes.func.isRequired,\n    t: PropTypes.func.isRequired,\n    isTextColorPaletteDisabled: PropTypes.bool,\n    isFillColorPaletteDisabled: PropTypes.bool,\n    isBorderColorPaletteDisabled: PropTypes.bool,\n  }\n\n  setActivePalette = newPalette => {\n    const { setActivePalette, colorMapKey } = this.props;\n\n    setActivePalette(colorMapKey, newPalette);\n  }\n\n  render() {\n    const {\n      t,\n      colorPalette,\n      colorMapKey,\n      toolName,\n      isTextColorPaletteDisabled,\n      isBorderColorPaletteDisabled,\n      isFillColorPaletteDisabled,\n      disableSeparator\n    } = this.props;\n    const { availablePalettes } = getDataWithKey(colorMapKey);\n\n    if (toolName && (toolName.includes('Line') || toolName.includes('Arrow') || toolName.includes('Polyline'))) {\n      return (\n        <div className=\"palette-options\">\n          {[\"StrokeColor\", \"FillColor\"].map((palette, i) =>\n            <React.Fragment key={i}>\n              <Tooltip content={`option.annotationColor.${palette}`}>\n                <div\n                  className={classNames({\n                    'palette-options-button': true,\n                    active: colorPalette === palette,\n                    disabled: palette === 'FillColor',\n                  })}\n                >\n                  {t(`option.annotationColor.${palette}`)}\n                </div>\n              </Tooltip>\n              {i < 1 && <div className=\"palette-options-divider\" />}\n            </React.Fragment>,\n          )}\n        </div>\n      );\n    }\n\n\n    if (availablePalettes.length < 2) {\n      if (disableSeparator) {\n        return null;\n      }\n      return <HorizontalDivider/>;\n    }\n\n\n    return (\n      <div className=\"palette-options\">\n        {availablePalettes.map((pallette, i) =>\n          <React.Fragment key={i}>\n            <Tooltip content={`option.annotationColor.${pallette}`}>\n              <button\n                className={classNames({\n                  'palette-options-button': true,\n                  active: colorPalette === pallette,\n                })}\n                onClick={() => this.setActivePalette(pallette)}\n              >\n                {t(`option.annotationColor.${pallette}`)}\n              </button>\n            </Tooltip>\n            {i < availablePalettes.length - 1 && <div className=\"palette-options-divider\" />}\n          </React.Fragment>,\n        )}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  // TODO: Actually disable these elements\n  // isTextColorPaletteDisabled, isBorderColorPaletteDisabled, isFillColorPaletteDisabled\n  // TextColor, StrokeColor, FillColor\n  isTextColorPaletteDisabled: selectors.isElementDisabled(state, 'textColorPalette'),\n  isFillColorPaletteDisabled: selectors.isElementDisabled(state, 'fillColorPalette'),\n  isBorderColorPaletteDisabled: selectors.isElementDisabled(state, 'borderColorPalette'),\n});\n\nconst mapDispatchToProps = {\n  setActivePalette: actions.setActivePalette,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTranslation(null, { wait: false })(ColorPaletteHeader));\n","import ColorPaletteHeader from './ColorPaletteHeader';\n\nexport default ColorPaletteHeader;","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { withTranslation } from 'react-i18next';\nimport selectors from 'selectors';\n\nimport './ColorPalette.scss';\n\nconst dataElement = 'colorPalette';\n\nclass ColorPalette extends React.PureComponent {\n  static propTypes = {\n    property: PropTypes.string.isRequired,\n    color: PropTypes.object,\n    onStyleChange: PropTypes.func.isRequired,\n    overridePalette: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n    colorMapKey: PropTypes.string\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.palette = [\n      '#F1A099',\n      '#FFC67B',\n      '#FFE6A2',\n      '#80E5B1',\n      '#92E8E8',\n      '#A6A1E6',\n      '#E2A1E6',\n      '#E44234',\n      '#FF8D00',\n      '#FFCD45',\n      '#00CC63',\n      '#25D2D1',\n      '#4E7DE9',\n      '#C544CE',\n      '#88271F',\n      '#B54800',\n      '#F69A00',\n      '#007A3B',\n      '#167E7D',\n      '#2E4B8B',\n      '#76287B',\n      '#FFFFFF',\n      '#CDCDCD',\n      '#9C9C9C',\n      '#696969',\n      '#272727',\n      '#000000',\n      'transparency',\n    ];\n  }\n\n  setColor = bg => {\n    const { property, onStyleChange } = this.props;\n    if (!bg) {\n      onStyleChange(property, new window.Annotations.Color(0, 0, 0, 0));\n    } else {\n      const color = new window.Annotations.Color(bg);\n      onStyleChange(property, color);\n    }\n  }\n\n  render() {\n    const {\n      hasPadding,\n      style = {},\n      property,\n      color,\n      overridePalette,\n      overridePalette2,\n      colorMapKey,\n      t,\n      isDisabled,\n    } = this.props;\n\n    if (isDisabled) {\n      return null;\n    }\n\n    const allowTransparent = !(property === 'TextColor' || property === 'StrokeColor');\n\n    let palette = overridePalette2 ||  overridePalette?.[colorMapKey] || overridePalette?.global || this.palette;\n    if (!allowTransparent) {\n      palette = palette.filter(p => p?.toLowerCase() !== 'transparency');\n    }\n\n    const transparentIcon = (\n      <svg\n        width=\"100%\"\n        height=\"100%\"\n        className={classNames({\n          transparent: true,\n        })}\n      >\n        <line stroke=\"#d82e28\" x1=\"0\" y1=\"100%\" x2=\"100%\" y2=\"0\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n      </svg>\n    );\n\n    return (\n      <div\n        data-element=\"colorPalette\"\n        className={classNames({\n          'ColorPalette': true,\n          padding: hasPadding,\n        })}\n        style={style}\n      >\n        {palette.map(bg => bg?.toLowerCase()).map((bg, i) => (\n          !bg \n          ? <div key={i} className=\"dummy-cell\" /> \n          : <button\n            key={i}\n            className=\"cell-container\"\n            onClick={() => {\n              this.setColor(bg === 'transparency' ? null : bg);\n            }}\n            aria-label={`${t('option.colorPalette.colorLabel')} ${i + 1}`}\n          >\n            <div\n              className={classNames({\n                'cell-outer': true,\n                active: color?.toHexString?.()?.toLowerCase() === bg || (!color?.toHexString?.() && bg === 'transparency'),\n              })}\n            >\n              <div\n                className={classNames({\n                  cell: true,\n                  border: bg === '#ffffff' || bg === 'transparency',\n                })}\n                style={{ backgroundColor: bg }}\n              >\n                { bg === 'transparency' && transparentIcon}\n              </div>\n            </div>\n          </button>\n        ))}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  overridePalette: selectors.getCustomElementOverrides(state, dataElement),\n  isDisabled: selectors.isElementDisabled(state, 'colorPalette'),\n});\n\nexport default connect(mapStateToProps)(withTranslation()(ColorPalette));\n","import ColorPalette from './ColorPalette';\n\nexport default ColorPalette;","import React, { useEffect } from 'react';\r\nimport classNames from 'classnames';\r\nimport Icon from 'components/Icon';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport './ColorPalettePicker.scss';\r\nimport '../ColorPalette/ColorPalette.scss';\r\n\r\nconst ColorPalettePicker = ({\r\n  color,\r\n  customColors = [],\r\n  getHexColor,\r\n  openColorPicker,\r\n  handleColorOnClick,\r\n  openDeleteModal,\r\n  colorToBeDeleted,\r\n  setColorToBeDeleted,\r\n  enableEdit,\r\n  disableTitle = false,\r\n  colorsAreHex = false,\r\n}) => {\r\n  useEffect(() => {\r\n    if (!customColors.includes(colorsAreHex ? color : getHexColor(color))) {\r\n      setColorToBeDeleted('');\r\n    } else {\r\n      setColorToBeDeleted(colorsAreHex ? color : getHexColor(color));\r\n    }\r\n  }, [color]);\r\n\r\n  const [t] = useTranslation();\r\n\r\n  const handleAddColor = () => {\r\n    if (openColorPicker) {\r\n      openColorPicker(true);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div>\r\n      <div className=\"colorPicker\">\r\n        {!disableTitle && <div className=\"colorPickerController\">\r\n          <span>{t('annotation.custom')}</span>\r\n        </div>}\r\n        <div className=\"colorPickerColors ColorPalette\">\r\n          {customColors.map((bg, i) =>\r\n            (\r\n              <button\r\n                key={bg}\r\n                className=\"cell-container\"\r\n                onClick={() => handleColorOnClick(bg)}\r\n                aria-label={`${t('option.colorPalette.colorLabel')} ${i + 1}`}\r\n              >\r\n                <div\r\n                  className={classNames({\r\n                    'cell-outer': true,\r\n                    active: colorsAreHex ? color?.toLowerCase() === bg.toLowerCase() :\r\n                      color?.toHexString?.()?.toLowerCase() === bg.toLowerCase(),\r\n                  })}\r\n                >\r\n                  <div\r\n                    className={classNames({\r\n                      cell: true,\r\n                      border: bg.toLowerCase() === '#ffffff' || bg === 'transparency',\r\n                    })}\r\n                    style={{ backgroundColor: bg }}\r\n                  >\r\n                    {bg === 'transparency' && transparentIcon}\r\n                  </div>\r\n                </div>\r\n              </button>\r\n            ),\r\n          )}\r\n          {enableEdit && (\r\n            <button className=\"cell-container\">\r\n              <div className=\"cell-outer\">\r\n                <div className=\"cellIcon\" id=\"addCustomColor\" onClick={handleAddColor}>\r\n                  <Icon glyph=\"icon-header-zoom-in-line\" />\r\n                </div>\r\n              </div>\r\n            </button>\r\n          )}\r\n          {enableEdit && customColors.length > 0 && (\r\n            <button\r\n              className=\"cell-container\"\r\n              id=\"removeCustomColor\"\r\n              disabled={colorToBeDeleted ? false : true}\r\n              onClick={openDeleteModal}\r\n            >\r\n              <div className=\"cell-outer\">\r\n                <div className=\"cellIcon\">\r\n                  <Icon glyph=\"icon-delete-line\" />\r\n                </div>\r\n              </div>\r\n            </button>\r\n          )}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default ColorPalettePicker;\r\n","import React, { useState, useEffect } from 'react';\r\nimport selectors from 'selectors';\r\nimport actions from 'actions';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { useTranslation } from 'react-i18next';\r\nimport ColorPalettePicker from './ColorPalettePicker';\r\n\r\nfunction ColorPickerModalRedux(props) {\r\n  const { property, onStyleChange, color, enableEdit, ...rest } = props;\r\n\r\n  const dispatch = useDispatch();\r\n  const [t] = useTranslation();\r\n  const [modifyColorMode, setModifyColorMode] = useState(\"\");\r\n  const [colorToBeDeleted, setColorToBeDeleted] = useState('');\r\n\r\n  const activeCustomColor = useSelector(selectors.getCustomColor);\r\n  const customColors = useSelector(selectors.getCustomColors);\r\n\r\n  useEffect(() => {\r\n    if (activeCustomColor && color && (modifyColorMode || getHexColor(activeCustomColor) === getHexColor(color))) {\r\n      handleColorChange(activeCustomColor);\r\n    }\r\n  }, [activeCustomColor, modifyColorMode]);\r\n\r\n  const handleDeleteColor = () => {\r\n    const updatedCustomColors = customColors.filter(color=>color != colorToBeDeleted)\r\n    dispatch(actions.setCustomColors(updatedCustomColors));\r\n    setColorToBeDeleted('');\r\n    dispatch(actions.setCustomColor(null));\r\n  };\r\n\r\n  const getHexColor = givenColor => {\r\n    if (givenColor && givenColor.A) {\r\n      return givenColor.toHexString().toLowerCase();\r\n    }\r\n    return '#000000';\r\n  };\r\n\r\n  const openColorPicker = addNew => {\r\n    addNew ? setModifyColorMode('add') : setModifyColorMode('update');\r\n    dispatch(actions.openElement('ColorPickerModal'));\r\n  };\r\n\r\n  const openDeleteModal = async () => {\r\n    const message = t('warning.colorPicker.deleteMessage');\r\n    const title = t('warning.colorPicker.deleteTitle');\r\n    const confirmBtnText = t('action.ok');\r\n\r\n    const warning = {\r\n      message,\r\n      title,\r\n      confirmBtnText,\r\n      onConfirm: async () => {\r\n        handleDeleteColor();\r\n      },\r\n    };\r\n    dispatch(actions.showWarningMessage(warning));\r\n  };\r\n\r\n  const handleColorChange = newColor => {\r\n    if (newColor) {\r\n      const newColorHex = getHexColor(newColor);\r\n      const newColorExist = customColors.includes(newColorHex);\r\n      const selectedColorindex = customColors.indexOf(color?.toHexString?.()?.toLowerCase() || '');\r\n      // if add an new color or selected some pre-defined color\r\n      if (modifyColorMode === 'add') {\r\n        // add to the list if the new color doesn't exist\r\n        if (!newColorExist) {\r\n          dispatch(actions.setCustomColors([...customColors, newColorHex]));\r\n        }\r\n        // if the new color exist, then auto-selected it using (onStyleChange)\r\n      } else if (modifyColorMode === 'update') {\r\n        // if edit an existing color\r\n        // if the new color doesn't exist, then we replace it on the selected color spot\r\n        if (!newColorExist) {\r\n          const updatedCustomColors = [...customColors];\r\n          updatedCustomColors[selectedColorindex] = newColorHex;\r\n          dispatch(actions.setCustomColors(updatedCustomColors));\r\n        }\r\n        // if the new color does exist then selected the existing one using (onStyleChange)\r\n      }\r\n      onStyleChange(property, newColor);\r\n    }\r\n  };\r\n\r\n  const handleColorOnClick = newColor => {\r\n    onStyleChange(property, new window.Annotations.Color(newColor));\r\n    if (color && color.A !== 0 && color.toHexString().toLowerCase() && newColor === color.toHexString().toLowerCase()) {\r\n      dispatch(actions.setCustomColor(color));\r\n      if (enableEdit) {\r\n        openColorPicker(false);\r\n      }\r\n    }\r\n  };\r\n\r\n  const newProps = {\r\n    ...rest,\r\n    color,\r\n    property,\r\n    getHexColor,\r\n    handleColorOnClick,\r\n    customColors,\r\n    openColorPicker,\r\n    colorToBeDeleted,\r\n    setColorToBeDeleted,\r\n    openDeleteModal,\r\n    enableEdit,\r\n  };\r\n  return <ColorPalettePicker {...newProps} />;\r\n}\r\n\r\nexport default ColorPickerModalRedux;\r\n","import ColorPalettePickerRedux from './ColorPalettePickerRedux';\r\n\r\nexport default ColorPalettePickerRedux; ","export const svgHeight = 21;\nexport const getCircleRadius = isMobile => {\n  if (isMobile) {\n    return 8;\n  }\n  return 4;\n};\nexport const circleRadius = 8;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\nimport useMedia from 'hooks/useMedia';\nimport { isIE11 } from 'helpers/device';\nimport { getCircleRadius } from 'constants/slider';\n\nimport './Slider.scss';\n\nclass Slider extends React.PureComponent {\n  static propTypes = {\n    property: PropTypes.string.isRequired,\n    value: PropTypes.oneOfType([\n      PropTypes.number,\n      PropTypes.string,\n    ]),\n    displayProperty: PropTypes.string.isRequired,\n    getDisplayValue: PropTypes.func.isRequired,\n    onSliderChange: PropTypes.func.isRequired,\n    dataElement: PropTypes.string,\n    getCirclePosition: PropTypes.func.isRequired,\n    convertRelativeCirclePositionToValue: PropTypes.func.isRequired,\n    onStyleChange: PropTypes.func.isRequired,\n    t: PropTypes.func.isRequired,\n    withInputField: PropTypes.bool,\n    inputFieldType: PropTypes.string,\n    min: PropTypes.number,\n    max: PropTypes.number,\n    step: PropTypes.number,\n    getLocalValue: PropTypes.func,\n  }\n\n  constructor(props) {\n    super(props);\n    this.isMouseDown = false;\n    this.sliderSvg = React.createRef();\n    this.inputRef = React.createRef();\n    this.lineLength = 0;\n    this.state = {\n        localValue: props.value,\n        isEiditingInputField: false,\n    }\n  }\n\n  componentDidMount() {\n    window.addEventListener('mousemove', this.onMove);\n    window.addEventListener('mouseup', this.onMouseUp);\n    window.addEventListener('orientationchange', this.updateSvg);\n    window.addEventListener('resize', this.updateSvg);\n    this.sliderSvg.current.addEventListener('touchmove', this.onMove, { passive: false });\n    this.updateSvg();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.value !== this.props.value) {\n      this.setState({ localValue: this.props.value })\n    }\n  }\n  \n  // Fix for slider having the wrong size\n  UNSAFE_componentWillUpdate() {\n    this.setLineLength();\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('mousemove', this.onMove);\n    window.removeEventListener('mouseup', this.onMouseUp);\n    window.removeEventListener('orientationchange', this.updateSvg);\n    window.removeEventListener('resize', this.updateSvg);\n    this.sliderSvg.current.removeEventListener('touchmove', this.onMove, { passive: false });\n  }\n\n  updateSvg = () => {\n    this.setLineLength();\n    this.forceUpdate();\n  }\n\n  setLineLength = () => {\n    this.lineLength = 0.94 * this.sliderSvg.current.getBoundingClientRect().width - 2 * getCircleRadius(this.props.isMobile);\n  }\n\n  onMouseDown = e => {\n    e.preventDefault();\n    this.isMouseDown = true;\n    this.onMove(e.nativeEvent);\n  }\n\n  onMouseUp = (e) => {\n    const isUsingMouse = !e.touches;\n    if (isUsingMouse && !this.isMouseDown) {\n      return;\n    }\n\n    const { property, onStyleChange, convertRelativeCirclePositionToValue } = this.props;\n    const relativeCirclePosition = this.getRelativeCirclePosition(e);\n    const value = convertRelativeCirclePositionToValue(relativeCirclePosition);\n    \n    onStyleChange(property, value);\n    if (this.props.withInputField) {\n      this.setState({\n        isEiditingInputField: false\n      })\n    }\n    this.isMouseDown = false;\n  }\n\n  onTouchStart = e => {\n    this.onMove(e);\n  }\n\n  onMove = e => {\n    const isUsingMouse = !e.touches;\n    if (isUsingMouse && !this.isMouseDown) {\n      return;\n    }\n\n    e.preventDefault();\n\n    const { property, onSliderChange, convertRelativeCirclePositionToValue } = this.props;\n    const relativeCirclePosition = this.getRelativeCirclePosition(e);\n    const value = convertRelativeCirclePositionToValue(relativeCirclePosition);\n\n    onSliderChange(property, value);\n\n    this.setState({\n      localValue: value\n    })\n  }\n\n  getRelativeCirclePosition = e => {\n    const isUsingMouse = !e.touches;\n    const lineStart = getCircleRadius(this.props.isMobile);\n    const lineEnd = lineStart + this.lineLength;\n    const svgLeft = this.sliderSvg.current.getBoundingClientRect().left;\n    let circlePosition;\n\n    if (isUsingMouse) {\n      circlePosition = e.pageX - svgLeft;\n    } else {\n      circlePosition = e.touches[0].pageX - svgLeft;\n    }\n\n    if (circlePosition < lineStart) {\n      circlePosition = lineStart;\n    } else if (circlePosition > lineEnd) {\n      circlePosition = lineEnd;\n    }\n\n    return (circlePosition - lineStart) / this.lineLength;\n  }\n\n  onInputChange = e => {\n    const { getLocalValue, property, onSliderChange, max, inputFieldType} = this.props;\n\n    if (inputFieldType === 'number' && (e.target.value || e.target.value === 0)) {\n      if (e.target.value > max) {\n        e.target.value = max;\n      }\n      const value = e.target.value;\n      const localValue = getLocalValue ? getLocalValue(value) : value;\n      onSliderChange(property, localValue);\n      this.setState({\n        localValue\n      });\n    }\n  }\n\n  onInputKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      this.inputRef.current.blur();\n    }\n  }\n\n  onInputBlur = (isEiditingInputField) => {\n    const { min, getLocalValue } = this.props;\n    if((this.inputRef.current.value !==0 && !this.inputRef.current.value) || this.inputRef.current.value < min) {\n      this.inputRef.current.value = min;\n      const localValue = getLocalValue ? getLocalValue(min) : min;\n      this.setState({ localValue });\n    }\n    this.setState({ isEiditingInputField });\n  };\n\n  onInputFocus = (isEiditingInputField) => {\n    this.setState({ isEiditingInputField });\n  };\n\n  getInputElement = () => {\n    const { inputFieldType, min, max, step, getDisplayValue } = this.props\n    const displayValue = getDisplayValue(this.state.localValue)\n    if (this.state.isEiditingInputField && inputFieldType === 'number') {\n      return (\n        <div className=\"slider-input-wrapper\">\n          <input\n            autoFocus\n            defaultValue={parseFloat(displayValue)}\n            type={inputFieldType}\n            onChange={this.onInputChange}\n            onKeyDown={this.onInputKeyDown}\n            className=\"slider-input-field\"\n            onBlur={()=>this.onInputBlur(false)}\n            // The prop min={} can not be used here, otherwise its impossible to delete everything completely inside input box, which was complained by PM. \n            max={max}\n            min={min}\n            step={step}\n            ref={this.inputRef}\n          />\n        </div>\n      )\n    }\n\n    return (\n      <input\n        readOnly\n        type=\"text\"\n        className=\"slider-input-field\"\n        value={getDisplayValue(this.state.localValue)}\n        onFocus={this.onInputFocus}\n      />\n    )\n  }\n\n  renderSlider = () => {\n    const { dataElement, displayProperty, getCirclePosition, t, withInputField, getDisplayValue } = this.props;\n    const circleCenter = getCirclePosition(this.lineLength, this.state.localValue);\n    \n    return (\n      <div className=\"slider\" data-element={dataElement}>\n        <div className=\"slider-property\" onMouseDown={(e)=>e.preventDefault()}>\n          {t(`option.slider.${displayProperty}`)}\n        </div>\n        <div className=\"slider-element-container\">\n          <svg data-element={dataElement} onMouseDown={this.onMouseDown} onTouchStart={this.onTouchStart} ref={this.sliderSvg}>\n            <line x1={getCircleRadius(this.props.isMobile)} y1=\"50%\" x2={circleCenter} y2=\"50%\" strokeWidth=\"2\" stroke=\"#00a5e4\" strokeLinecap=\"round\" />\n            <line x1={circleCenter} y1=\"50%\" x2={this.lineLength + getCircleRadius(this.props.isMobile)} y2=\"50%\" strokeWidth=\"2\" stroke=\"#e0e0e0\" strokeLinecap=\"round\" />\n            <circle cx={circleCenter} cy=\"50%\" r={getCircleRadius(this.props.isMobile)} fill=\"#00a5e4\" />\n          </svg>\n          {withInputField ? this.getInputElement() : <div className=\"slider-value\">{getDisplayValue(this.state.localValue)}</div>}\n        </div>\n      </div>\n    );\n  }\n\n  render() {\n    if (isIE11) {\n      // We use css Grid to place sliders responsively,\n      // since IE11 only supports the old Grid, we use css Flexbox\n      return (\n        <div className=\"slider\">\n          {this.renderSlider()}\n        </div>\n      );\n    }\n\n    return this.renderSlider();\n  }\n}\n\nconst ConnectedSlider = withTranslation(null, { wait: false })(Slider);\n\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return (\n    <ConnectedSlider {...props} isMobile={isMobile} />\n  );\n};","import Slider from './Slider';\n\nexport default Slider;","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","import { useEffect, useState } from 'react';\n/**\n * Will return true if the user is using keyboard navigation, or false if they\n * are using their mouse. The returned value will be true if the Tab key was\n * used more recently than mouse click, and false if not. You can also provide\n * custom behavior by passing your own observable.\n * @param observable Optional custom observable.\n */\nexport function useAccessibleFocus(observable) {\n    if (observable === void 0) { observable = tabObservable; }\n    var _a = useState(observable.value), isUserTabbing = _a[0], setIsUserTabbing = _a[1];\n    useEffect(function () {\n        return observable.subscribe(function () { return setIsUserTabbing(observable.value); });\n    }, [observable]);\n    return isUserTabbing;\n}\nvar AccessibleFocusObservable = /** @class */ (function () {\n    function AccessibleFocusObservable() {\n        var _this = this;\n        this._handleFirstTab = function (event) {\n            if (event.key === 'Tab') {\n                _this._setIsUserTabbing(true);\n                _this._tabToMouseListener();\n            }\n        };\n        this._handleFirstMouse = function () {\n            _this._setIsUserTabbing(false);\n            _this._mouseToTabListener();\n        };\n        this._subscribers = [];\n        this._isUserTabbing = false;\n    }\n    Object.defineProperty(AccessibleFocusObservable.prototype, \"value\", {\n        get: function () {\n            return this._isUserTabbing;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    AccessibleFocusObservable.prototype.subscribe = function (subscriber) {\n        // If adding first subscriber, begin listening to document.\n        if (this._subscribers.length === 0) {\n            if (this._isUserTabbing) {\n                this._tabToMouseListener();\n            }\n            else {\n                this._mouseToTabListener();\n            }\n        }\n        var exists = this._subscribers.includes(subscriber);\n        if (!exists)\n            this._subscribers.push(subscriber);\n        return this._unsubscribe(subscriber);\n    };\n    AccessibleFocusObservable.prototype._unsubscribe = function (subscriber) {\n        var _this = this;\n        return function () {\n            _this._subscribers = _this._subscribers.filter(function (s) { return s !== subscriber; });\n            // If no subscribers, stop listening to document.\n            if (_this._subscribers.length === 0)\n                _this._removeAllListeners();\n        };\n    };\n    AccessibleFocusObservable.prototype._setIsUserTabbing = function (isUserTabbing) {\n        this._isUserTabbing = isUserTabbing;\n        this._subscribers.forEach(function (subscriber) { return subscriber(); });\n    };\n    AccessibleFocusObservable.prototype._tabToMouseListener = function () {\n        window.removeEventListener('keydown', this._handleFirstTab);\n        window.addEventListener('mousedown', this._handleFirstMouse);\n    };\n    AccessibleFocusObservable.prototype._mouseToTabListener = function () {\n        window.removeEventListener('mousedown', this._handleFirstMouse);\n        window.addEventListener('keydown', this._handleFirstTab);\n    };\n    AccessibleFocusObservable.prototype._removeAllListeners = function () {\n        window.removeEventListener('mousedown', this._handleFirstMouse);\n        window.removeEventListener('keydown', this._handleFirstTab);\n    };\n    return AccessibleFocusObservable;\n}());\nvar tabObservable = new AccessibleFocusObservable();\n","import { useCallback, useState } from 'react';\n/**\n * Returns handlers for onFocus and onBlur, as well as a property focused which\n * is true if the component or any child is being focused.\n * @param onFocus The onFocus prop if it's available.\n * @param onBlur The onBlur prop if it's available.\n */\nexport function useFocus(onFocus, onBlur) {\n    var _a = useState(false), focused = _a[0], setFocused = _a[1];\n    var handleOnFocus = useCallback(function (event) {\n        setFocused(true);\n        onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);\n    }, [onFocus]);\n    var handleOnBlur = useCallback(function (event) {\n        setFocused(false);\n        onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);\n    }, [onBlur]);\n    return { focused: focused, handleOnFocus: handleOnFocus, handleOnBlur: handleOnBlur };\n}\n","var currentId = 0;\n/**\n * Generates a sequential string to use as a unique identifier. This should be\n * used over `getId` if you need to use it as a DOM id, or a React key.\n *\n * @param prefix Optional. Prefix for the string id.\n */\nexport function getStringId(prefix) {\n    if (prefix === void 0) { prefix = 'id'; }\n    return prefix + \"_\" + (currentId++).toString(16);\n}\n/**\n * Returns a Symbol to uniquely identify something. Will fallback to using\n * string.\n *\n * @param description Description of the Symbol. Used as string prefix if not supported.\n */\nexport function getId(description) {\n    if (typeof Symbol === 'function')\n        return Symbol(description);\n    return description + \"_\" + getStringId();\n}\n","import { useMemo } from 'react';\nimport { getStringId } from '../utils';\n/**\n * If an ID is not given, will generate and memoize an ID to use for a11y\n * or any other purpose.\n * @param id The optional ID provided by props.\n */\nexport function useID(id) {\n    return useMemo(function () { return id || getStringId('label'); }, [id]);\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Check(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M10 15.586L6.707 12.293 5.293 13.707 10 18.414 19.707 8.707 18.293 7.293z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function ChevronDown(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"12\", height: \"12\", viewBox: \"0 0 12 12\" }, props),\n        React.createElement(\"path\", { d: \"M5.67,8.35a.44.44,0,0,0,.66,0L9.93,4a.3.3,0,0,0,0-.35A.4.4,0,0,0,9.6,3.5H2.4a.4.4,0,0,0-.35.18.3.3,0,0,0,0,.35Z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Circle(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,2C6.486,2,2,6.486,2,12s4.486,10,10,10s10-4.486,10-10S17.514,2,12,2z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Close(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M16.192 6.344L11.949 10.586 7.707 6.344 6.293 7.758 10.535 12 6.293 16.242 7.707 17.656 11.949 13.414 16.192 17.656 17.606 16.242 13.364 12 17.606 7.758z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Download(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M19 9L15 9 15 3 9 3 9 9 5 9 12 17zM4 19H20V21H4z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Error(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M9.172 16.242L12 13.414 14.828 16.242 16.242 14.828 13.414 12 16.242 9.172 14.828 7.758 12 10.586 9.172 7.758 7.758 9.172 10.586 12 7.758 14.828z\" }),\n        React.createElement(\"path\", { d: \"M12,22c5.514,0,10-4.486,10-10S17.514,2,12,2S2,6.486,2,12S6.486,22,12,22z M12,4c4.411,0,8,3.589,8,8s-3.589,8-8,8 s-8-3.589-8-8S7.589,4,12,4z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Hide(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12 19c.946 0 1.81-.103 2.598-.281l-1.757-1.757C12.568 16.983 12.291 17 12 17c-5.351 0-7.424-3.846-7.926-5 .204-.47.674-1.381 1.508-2.297L4.184 8.305c-1.538 1.667-2.121 3.346-2.132 3.379-.069.205-.069.428 0 .633C2.073 12.383 4.367 19 12 19zM12 5c-1.837 0-3.346.396-4.604.981L3.707 2.293 2.293 3.707l18 18 1.414-1.414-3.319-3.319c2.614-1.951 3.547-4.615 3.561-4.657.069-.205.069-.428 0-.633C21.927 11.617 19.633 5 12 5zM16.972 15.558l-2.28-2.28C14.882 12.888 15 12.459 15 12c0-1.641-1.359-3-3-3-.459 0-.888.118-1.277.309L8.915 7.501C9.796 7.193 10.814 7 12 7c5.351 0 7.424 3.846 7.926 5C19.624 12.692 18.76 14.342 16.972 15.558z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Info(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,2C6.486,2,2,6.486,2,12s4.486,10,10,10s10-4.486,10-10S17.514,2,12,2z M12,20c-4.411,0-8-3.589-8-8s3.589-8,8-8 s8,3.589,8,8S16.411,20,12,20z\" }),\n        React.createElement(\"path\", { d: \"M11 11H13V17H11zM11 7H13V9H11z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Menu(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M4 6H20V8H4zM4 11H20V13H4zM4 16H20V18H4z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function MultiPage(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M20.3,9.5 L20.3,20.3 C20.3,21.2 19.6,22 18.6,22 L11.1,22 L11.1,20.3 L18.6,20.3 L18.6,9.5 L20.3,9.5 Z M15.3,18.7 L5.3,18.7 C4.4,18.7 3.6,18 3.6,17 L3.6,3.7 C3.7,2.7 4.4,2 5.3,2 L12,2 L17,7 L17,17 C17,17.9 16.3,18.7 15.3,18.7 Z M12,7.8 L15.3,7.8 L11.1,3.6 L11.1,7.8 C11.2,7.8 11.5,7.8 12,7.8 Z\" })));\n}\n","// <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path fill='white' d=\"M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z\"/></svg>\nimport { __assign } from \"tslib\";\nimport React from 'react';\nexport function RotateRight(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Search(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M17.69,15.79a8.63,8.63,0,1,0-1.52,1.51l4.42,4.42a.42.42,0,0,0,.57,0l.94-.95a.39.39,0,0,0,0-.56Zm-5.28,1A6.42,6.42,0,1,1,17.19,12,6.43,6.43,0,0,1,12.41,16.8Z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Show(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,9c-1.642,0-3,1.359-3,3c0,1.642,1.358,3,3,3c1.641,0,3-1.358,3-3C15,10.359,13.641,9,12,9z\" }),\n        React.createElement(\"path\", { d: \"M12,5c-7.633,0-9.927,6.617-9.948,6.684L1.946,12l0.105,0.316C2.073,12.383,4.367,19,12,19s9.927-6.617,9.948-6.684 L22.054,12l-0.105-0.316C21.927,11.617,19.633,5,12,5z M12,17c-5.351,0-7.424-3.846-7.926-5C4.578,10.842,6.652,7,12,7 c5.351,0,7.424,3.846,7.926,5C19.422,13.158,17.348,17,12,17z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function SinglePage(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M14,2 L6,2 C4.9,2 4,2.9 4,4 L4,20 C4,21.1 4.9,22 6,22 L18,22 C19.1,22 20,21.1 20,20 L20,8 L14,2 Z M14,9 C13.4,9 13,9 13,9 L13,4 L18,9 L14,9 Z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Success(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,2C6.486,2,2,6.486,2,12s4.486,10,10,10s10-4.486,10-10S17.514,2,12,2z M12,20c-4.411,0-8-3.589-8-8s3.589-8,8-8 s8,3.589,8,8S16.411,20,12,20z\" }),\n        React.createElement(\"path\", { d: \"M9.999 13.587L7.7 11.292 6.288 12.708 10.001 16.413 16.707 9.707 15.293 8.293z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Warning(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M11.001 10H13.001V15H11.001zM11 16H13V18H11z\" }),\n        React.createElement(\"path\", { d: \"M13.768,4.2C13.42,3.545,12.742,3.138,12,3.138s-1.42,0.407-1.768,1.063L2.894,18.064 c-0.331,0.626-0.311,1.361,0.054,1.968C3.313,20.638,3.953,21,4.661,21h14.678c0.708,0,1.349-0.362,1.714-0.968 c0.364-0.606,0.385-1.342,0.054-1.968L13.768,4.2z M4.661,19L12,5.137L19.344,19H4.661z\" })));\n}\n","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { forwardRef, useMemo } from 'react';\nimport * as icons from './../../icons';\nexport var Icon = forwardRef(function (_a, ref) {\n    var icon = _a.icon, svgProps = _a.svgProps, className = _a.className, children = _a.children, props = __rest(_a, [\"icon\", \"svgProps\", \"className\", \"children\"]);\n    var iconClass = classnames('ui__base ui__icon', className);\n    var child = useMemo(function () {\n        if (children !== undefined)\n            return children;\n        if (icons === undefined)\n            return undefined;\n        var IconChild = icons[icon];\n        return React.createElement(IconChild, __assign({}, svgProps));\n    }, [children, icon, svgProps]);\n    return (React.createElement(\"i\", __assign({}, props, { className: iconClass, ref: ref }), child));\n});\n","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState, } from 'react';\nimport { useAccessibleFocus, useFocus } from '../../hooks';\nimport { useID } from '../../hooks/useID';\nimport { Icon } from '../Icon';\nexport var Choice = forwardRef(function (_a, ref) {\n    var label = _a.label, leftLabel = _a.leftLabel, className = _a.className, children = _a.children, id = _a.id, radio = _a.radio, isSwitch = _a.isSwitch, center = _a.center, disabledLabelChange = _a.disabledLabelChange, onChange = _a.onChange, onFocus = _a.onFocus, onBlur = _a.onBlur, props = __rest(_a, [\"label\", \"leftLabel\", \"className\", \"children\", \"id\", \"radio\", \"isSwitch\", \"center\", \"disabledLabelChange\", \"onChange\", \"onFocus\", \"onBlur\"]);\n    var inputRef = useRef(null);\n    useImperativeHandle(ref, function () { return inputRef.current; });\n    var isUserTabbing = useAccessibleFocus();\n    var _b = useFocus(onFocus, onBlur), focused = _b.focused, handleOnFocus = _b.handleOnFocus, handleOnBlur = _b.handleOnBlur;\n    var choiceID = useID(id);\n    var _c = useState(function () { var _a, _b, _c; return (_c = (_a = props.checked) !== null && _a !== void 0 ? _a : (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.checked) !== null && _c !== void 0 ? _c : false; }), checked = _c[0], setChecked = _c[1];\n    useEffect(function () {\n        if (props.checked !== undefined)\n            setChecked(props.checked);\n    }, [props.checked]);\n    var handleOnChange = function (event) {\n        if (props.checked === undefined)\n            setChecked(event.target.checked);\n        onChange === null || onChange === void 0 ? void 0 : onChange(event);\n    };\n    // HACK: since there is no way to detect that a radio button is being\n    // unchecked due to form activity, we subscribe all radio buttons to an\n    // observable. When checked changes and props.checked is undefined, this\n    // will trigger the observable which will ping all other subscribers to\n    // check if they have become unchecked, and if so change their internal\n    // state.\n    useEffect(function () {\n        if (props.name && radio) {\n            return observable.subscribe(props.name, function () {\n                if (inputRef.current && inputRef.current.checked !== checked) {\n                    setChecked(inputRef.current.checked);\n                }\n            });\n        }\n        return;\n    }, [checked, props.name, radio]);\n    var choiceClass = classnames('ui__base ui__choice', {\n        'ui__choice--radio': radio,\n        'ui__choice--leftLabel': leftLabel,\n        'ui__choice--checked': checked,\n        'ui__choice--center': center,\n        'ui__choice--disabled': props.disabled,\n    }, className);\n    var inputClass = classnames('ui__choice__input', {\n        'ui__choice__input--switch': isSwitch,\n    });\n    var checkClass = isSwitch\n        ? classnames('ui__choice__input__switch', {\n            'ui__choice__input__switch--checked': checked,\n            'ui__choice__input__switch--disabled': props.disabled,\n            'ui__choice__input__switch--focus': isUserTabbing && focused,\n        })\n        : classnames('ui__choice__input__check', {\n            'ui__choice__input__check--checked': checked,\n            'ui__choice__input__check--disabled': props.disabled,\n            'ui__choice__input__check--focus': isUserTabbing && focused,\n        });\n    var labelClass = classnames('ui__choice__label', {\n        'ui__choice__label--disabled': props.disabled && disabledLabelChange,\n    });\n    var labelElement = useMemo(function () {\n        if (!label)\n            return undefined;\n        return (React.createElement(\"label\", { className: labelClass, htmlFor: choiceID }, label));\n    }, [choiceID, label, labelClass]);\n    return (React.createElement(\"span\", { className: choiceClass },\n        leftLabel ? labelElement : undefined,\n        React.createElement(\"span\", { className: inputClass },\n            isSwitch ? (React.createElement(\"div\", { className: checkClass },\n                React.createElement(\"div\", { className: \"ui__choice__input__toggle\" }))) : (React.createElement(\"div\", { className: checkClass }, checked && !radio ? React.createElement(Icon, { icon: \"Check\", className: \"ui__choice__input__icon\" }) : undefined)),\n            React.createElement(\"input\", __assign({}, props, { id: choiceID, type: radio ? 'radio' : 'checkbox', onChange: handleOnChange, ref: inputRef, onFocus: handleOnFocus, onBlur: handleOnBlur }), children)),\n        !leftLabel ? labelElement : undefined));\n});\n/**\n * Observable helper to notify radio buttons that they have become unchecked.\n */\nvar RadioObservable = /** @class */ (function () {\n    function RadioObservable() {\n        this._subscribers = [];\n    }\n    RadioObservable.prototype.subscribe = function (name, subscriber) {\n        this._trigger(name);\n        this._subscribers.push({ name: name, subscriber: subscriber });\n        return this._unsubscribe(subscriber);\n    };\n    RadioObservable.prototype._trigger = function (name) {\n        this._subscribers.forEach(function (s) {\n            if (name === s.name)\n                s.subscriber();\n        });\n    };\n    RadioObservable.prototype._unsubscribe = function (subscriber) {\n        var _this = this;\n        return function () {\n            _this._subscribers = _this._subscribers.filter(function (s) { return s.subscriber !== subscriber; });\n        };\n    };\n    return RadioObservable;\n}());\nvar observable = new RadioObservable();\n","import { Choice as ChoiceComponent } from '@pdftron/webviewer-react-toolkit';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nimport './Choice.scss';\n\nconst propTypes = {\n  dataElement: PropTypes.string,\n};\n\nconst Choice = React.forwardRef(({ dataElement, ...props }, ref) => {\n  const isDisabled = useSelector(state => (dataElement ? selectors.isElementDisabled(state, dataElement) : false));\n\n  return isDisabled ? null : <ChoiceComponent {...props} ref={ref} center />;\n});\n\nChoice.propTypes = propTypes;\n\nexport default Choice;\n","import core from 'core';\n\nconst { ToolNames } = window.Tools;\nconst { MeasurementUnits } = window.Annotations.Annotation;\nconst isMeasurementTool = tool => !!(tool && tool.Measure);\n\nconst MEASUREMENT_TOOL_NAMES = [\n  ToolNames.ARC_MEASUREMENT,\n  ToolNames.ARC_MEASUREMENT2,\n  ToolNames.ARC_MEASUREMENT3,\n  ToolNames.ARC_MEASUREMENT4,\n  ToolNames.DISTANCE_MEASUREMENT,\n  ToolNames.DISTANCE_MEASUREMENT2,\n  ToolNames.DISTANCE_MEASUREMENT3,\n  ToolNames.DISTANCE_MEASUREMENT4,\n  ToolNames.PERIMETER_MEASUREMENT,\n  ToolNames.PERIMETER_MEASUREMENT2,\n  ToolNames.PERIMETER_MEASUREMENT3,\n  ToolNames.PERIMETER_MEASUREMENT4,\n  ToolNames.AREA_MEASUREMENT,\n  ToolNames.AREA_MEASUREMENT2,\n  ToolNames.AREA_MEASUREMENT3,\n  ToolNames.AREA_MEASUREMENT4,\n  ToolNames.RECTANGULAR_AREA_MEASUREMENT,\n  ToolNames.RECTANGULAR_AREA_MEASUREMENT2,\n  ToolNames.RECTANGULAR_AREA_MEASUREMENT3,\n  ToolNames.RECTANGULAR_AREA_MEASUREMENT4,\n  ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT,\n  ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT2,\n  ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT3,\n  ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT4,\n  ToolNames.ELLIPSE_MEASUREMENT,\n  ToolNames.ELLIPSE_MEASUREMENT2,\n  ToolNames.ELLIPSE_MEASUREMENT3,\n  ToolNames.ELLIPSE_MEASUREMENT4,\n];\n\nconst imperialConverter = {\n  'ft': MeasurementUnits.PRIME_FT,\n  'in': MeasurementUnits.DOUBLE_PRIME_IN,\n};\n\nconst getToolNamesByTheSamePreset = toolName =>\n  MEASUREMENT_TOOL_NAMES.filter(name => {\n    if (isNaN(Number(toolName[toolName.length - 1]))) {\n      return isNaN(Number(name[name.length - 1]));\n    }\n    return toolName[toolName.length - 1] === name[name.length - 1];\n  });\n\nexport default () => {\n  const tools = [];\n  const toolModeMap = core.getToolModeMap();\n  Object.values(toolModeMap).forEach(tool => {\n    if (isMeasurementTool(tool)) {\n      tools.push(tool);\n    }\n  });\n  return tools;\n};\n\nexport { isMeasurementTool, getToolNamesByTheSamePreset, imperialConverter, MeasurementUnits };\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\nimport { isFirefox } from 'helpers/device';\nimport i18next from 'i18next';\n\nimport Choice from 'components/Choice/Choice';\n\nimport core from 'core';\nimport { workerTypes } from 'constants/types';\nimport DataElements from 'constants/dataElement';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport getMeasurementTools, {\n  MeasurementUnits,\n} from 'src/helpers/getMeasurementTools';\n\nimport './MeasurementOption.scss';\n\nconst decimalPrecision = [\n  { value: 0.1, name: '0.1', format: 'D' },\n  { value: 0.01, name: '0.01', format: 'D' },\n  { value: 0.001, name: '0.001', format: 'D' },\n  { value: 0.0001, name: '0.0001', format: 'D' },\n];\nconst fractionPrecision = [\n  { value: 0.125, name: '1/8', format: 'F' },\n  { value: 0.0625, name: '1/16', format: 'F' },\n  { value: 0.03125, name: '1/32', format: 'F' },\n  { value: 0.015625, name: '1/64', format: 'F' },\n];\n\nconst getPrecisionByUnit = unit => {\n  switch (unit) {\n    case MeasurementUnits.IN:\n    case MeasurementUnits.FT_IN:\n      return [...fractionPrecision, ...decimalPrecision];\n    default:\n      return decimalPrecision;\n  }\n};\nconst isImperialFractionUnit = unit => ['in', 'ft-in'].includes(unit);\nconst isPrecisionInFractionMark = precision => [1 / 8, 1 / 16, 1 / 32, 1 / 64].includes(precision);\n\nclass MeasurementOption extends React.Component {\n  static propTypes = {\n    // The current scale of a measurement tool that is consisted of two arrays\n    // The first array represents the document scale and the second array represents the world scale\n    // For example [[1, 'in'], [4, 'ft']] means 1 inch measured in the document is equal to 4 feet in the real world\n    scale: PropTypes.arrayOf(PropTypes.array).isRequired,\n    // The current precision of a measurement tool that is used to determine how many decimal places a calculated value should display\n    // Calculated value depends on what the measurement tool is. For example it is distance for distance measurement tool\n    precision: PropTypes.number.isRequired,\n    // A prop that is passed down from translate HOC and is used to internationalize strings\n    t: PropTypes.func.isRequired,\n    measurementUnits: PropTypes.shape({\n      from: PropTypes.array,\n      to: PropTypes.array,\n    }).isRequired,\n    onStyleChange: PropTypes.func.isRequired,\n    isScaleInputDisabled: PropTypes.bool,\n    isPrecisionInputDisabled: PropTypes.bool,\n    isSnapModeEnabled: PropTypes.bool,\n    hideSnapModeCheckbox: PropTypes.bool,\n    onSnapModeChange: PropTypes.func,\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      currScaleFrom: props.scale[0][0],\n      currUnitFrom: props.scale[0][1],\n      currScaleTo: props.scale[1][0],\n      currUnitTo: props.scale[1][1],\n      currPrecision: props.precision,\n      documentType: core.getDocument()?.getType(),\n    };\n  }\n\n  componentDidMount() {\n    core.addEventListener('documentLoaded', this.onDocumentLoaded);\n  }\n\n  componentDidUpdate(prevProps) {\n    const { scale, precision } = this.props;\n\n    if (this.props.scale !== prevProps.scale) {\n      this.setState({\n        currScaleFrom: scale[0][0],\n        currUnitFrom: scale[0][1],\n        currScaleTo: scale[1][0],\n        currUnitTo: scale[1][1],\n      });\n    }\n    if (this.props.precision !== prevProps.precision) {\n      this.setState({\n        currPrecision: precision,\n      });\n    }\n  }\n\n  componentWillUnmount() {\n    core.removeEventListener('documentLoaded', this.onDocumentLoaded);\n  }\n\n  onDocumentLoaded = () => {\n    this.setState({\n      documentType: core.getDocument().getType(),\n    });\n  };\n\n  onScaleChange = (value, type) => {\n    this.setState({ [type]: Number(value) }, () => {\n      this.props.onStyleChange('Scale', [\n        [this.state.currScaleFrom, this.state.currUnitFrom],\n        [this.state.currScaleTo, this.state.currUnitTo],\n      ]);\n    });\n  };\n\n  onPrecisionChange = (value, type) => {\n    const { onStyleChange } = this.props;\n    this.setState({ [type]: Number(value) }, () => {\n      const { currPrecision } = this.state;\n      onStyleChange('Precision', currPrecision);\n    });\n  };\n\n  onUnitChange = (event, type) => {\n    const { onStyleChange } = this.props;\n    const value = event.target.value;\n    this.setState({ [type]: value }, () => {\n      const newScale = [\n        [this.state.currScaleFrom, this.state.currUnitFrom],\n        [this.state.currScaleTo, this.state.currUnitTo],\n      ];\n      onStyleChange('Scale', newScale);\n    });\n  };\n\n  onSnappingChange = event => {\n    if (!core.isFullPDFEnabled()) {\n      return;\n    }\n\n    const enableSnapping = event.target.checked;\n    const mode = enableSnapping ? window.documentViewer.SnapMode.e_DefaultSnapMode | window.documentViewer.SnapMode.POINT_ON_LINE : null;\n    const measurementTools = getMeasurementTools();\n\n    measurementTools.forEach(tool => {\n      tool.setSnapMode?.(mode);\n    });\n    if (this.props.onSnapModeChange) {\n      this.props.onSnapModeChange(enableSnapping);\n    }\n  };\n\n  getLanguage = () => {\n    let lang = 'en';\n\n    if (i18next.language) {\n      lang = i18next.language;\n    }\n\n    return lang;\n  };\n\n  formatValue = value => {\n    const lang = this.getLanguage();\n\n    if (lang === 'de') {\n      value = value.toLocaleString('de-DE', { maximumFractionDigits: 4 });\n    } else if (lang === 'fr') {\n      value = value.toLocaleString('fr-FR', { maximumFractionDigits: 4 });\n    } else if (lang === 'ru') {\n      value = value.toLocaleString('ru-RU', { maximumFractionDigits: 4 });\n    }\n\n    return value;\n  };\n\n  renderScaleInput = (type, val) => {\n    // There is a bug with Firefox 69 where after onFocus, it calls onBlur right away. Remove after the issue resolved.\n    if (isFirefox) {\n      return (\n        <input\n          className=\"ScaleInput\"\n          type=\"number\"\n          step=\"any\"\n          value={val}\n          onChange={e => this.onScaleChange(e.target.value, type)}\n        />\n      );\n    }\n\n    return (\n      <input\n        type=\"number\"\n        inputMode=\"decimal\"\n        step=\"any\"\n        className=\"ScaleInput\" \n        onChange={e => this.onScaleChange(e.target.value, type)}\n        value={this.formatValue(val)}\n      /> \n    )\n  };\n\n  render() {\n    const {\n      measurementUnits,\n      t,\n      isScaleInputDisabled,\n      isPrecisionInputDisabled,\n      isSnapModeEnabled,\n      hideSnapModeCheckbox,\n    } = this.props;\n    const { from: unitFromOptions, to: unitToOptions } = measurementUnits;\n    const precisionOptions = getPrecisionByUnit(this.state.currUnitTo);\n\n    if (isScaleInputDisabled && isPrecisionInputDisabled) {\n      return null;\n    }\n\n    return (\n      <div className=\"MeasurementOption\">\n        {!isScaleInputDisabled && (\n          <div className=\"Scale\" data-element={DataElements.SCALE_INPUT_CONTAINER}>\n            <div className=\"LayoutTitle\">{t('option.measurementOption.scale')}</div>\n            <div className=\"Layout\">\n              {this.renderScaleInput('currScaleFrom', this.state.currScaleFrom)}\n              <select\n                className=\"UnitInput\"\n                value={this.state.currUnitFrom}\n                onChange={event => this.onUnitChange(event, 'currUnitFrom')}\n              >\n                {unitFromOptions.map(unit => (\n                  <option key={unit} value={unit}>\n                    {unit}\n                  </option>\n                ))}\n              </select>\n              <div className=\"ScaleEquals\">=</div>\n              {this.renderScaleInput('currScaleTo', this.state.currScaleTo)}\n              <select\n                className=\"UnitInput\"\n                value={this.state.currUnitTo}\n                onChange={event => this.onUnitChange(event, 'currUnitTo')}\n              >\n                {unitToOptions.map(unit => (\n                  <option key={unit} value={unit}>\n                    {unit}\n                  </option>\n                ))}\n              </select>\n            </div>\n          </div>\n        )}\n        {!isPrecisionInputDisabled && (\n          <div className=\"Precision\" data-element={DataElements.PRECISION_INPUT_CONTAINER}>\n            <div className=\"LayoutTitlePrecision\">{t('option.shared.precision')}</div>\n            <div className=\"LayoutPrecision\">\n              <select\n                className=\"PrecisionInput\"\n                value={this.state.currPrecision}\n                onChange={e => this.onPrecisionChange(e.target.value, 'currPrecision')}\n              >\n                {precisionOptions.map(e => (\n                  <option key={e.value} value={e.value}>\n                    {e.format === 'F' ? e.name : this.formatValue(e.value)}\n                  </option>\n                ))}\n              </select>\n            </div>\n          </div>\n        )}\n        {this.state.documentType === workerTypes.PDF && !hideSnapModeCheckbox && (\n          <div className=\"options\">\n            <Choice\n              dataElement=\"measurementSnappingOption\"\n              id=\"measurement-snapping\"\n              type=\"checkbox\"\n              label={t('option.shared.enableSnapping')}\n              checked={isSnapModeEnabled}\n              onChange={this.onSnappingChange}\n            />\n          </div>\n        )}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  measurementUnits: selectors.getMeasurementUnits(state),\n  isScaleInputDisabled: selectors.isElementDisabled(state, DataElements.SCALE_INPUT_CONTAINER),\n  isPrecisionInputDisabled: selectors.isElementDisabled(state, DataElements.PRECISION_INPUT_CONTAINER),\n  isSnapModeEnabled: selectors.isSnapModeEnabled(state),\n  activeToolName: selectors.getActiveToolName(state),\n});\n\nconst mapDispatchToProps = {\n  onSnapModeChange: actions.setEnableSnapMode,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTranslation()(MeasurementOption));\n","import MeasurementOption from './MeasurementOption';\n\nexport default MeasurementOption;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nimport './StyleOption.scss';\n\nfunction StyleOption(props) {\n  const style = props.borderStyle ? props.borderStyle : 'solid';\n  const styleOptions = ['solid', 'cloudy'];\n  const [t] = useTranslation();\n\n  const onChange = value => {\n    props.onStyleChange('Style', value);\n  };\n\n  return (\n    <div className=\"StyleOption\">\n      <div className=\"styles-container\">\n        <label className=\"styles-title\" htmlFor=\"styleOptions\">{t('option.styleOption.style')}</label>\n        <div className=\"styles-layout\">\n          <select\n            id=\"styleOptions\"\n            className=\"styles-input\"\n            value={style}\n            onChange={e => onChange(e.target.value)}\n          >\n            {styleOptions.map(option => (\n              <option key={option} value={option}>\n                {t(`option.styleOption.${option}`)}\n              </option>\n            ))}\n          </select>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nStyleOption.propTypes = {\n  onStyleChange: PropTypes.func.isRequired,\n  borderStyle: PropTypes.string,\n};\n\nexport default StyleOption;\n","import StyleOption from './StyleOption';\n\nexport default StyleOption;","import classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useRef, useState, useMemo, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport useArrowFocus from '../../hooks/useArrowFocus';\nimport './Dropdown.scss';\n\nconst DEFAULT_WIDTH = 100;\n\nconst propTypes = {\n  onClickItem: PropTypes.func,\n  items: PropTypes.array,\n  images: PropTypes.array,\n  width: PropTypes.number,\n  currentSelectionKey: PropTypes.string,\n  translationPrefix: PropTypes.string,\n  getTranslationLabel: PropTypes.func,\n  dataElement: PropTypes.string,\n  disabled: PropTypes.bool,\n  isFont: PropTypes.bool,\n  placeholder: PropTypes.string,\n  maxHeight: PropTypes.number,\n};\n\nfunction Dropdown({\n  items = [],\n  images = [],\n  width = DEFAULT_WIDTH,\n  currentSelectionKey,\n  translationPrefix,\n  getTranslationLabel,\n  onClickItem,\n  dataElement,\n  disabled = false,\n  isFont = false,\n  placeholder = null,\n  maxHeight,\n}) {\n  const { t, ready: tReady } = useTranslation();\n  const overlayRef = useRef(null);\n  const buttonRef = useRef(null);\n  const [isOpen, setIsOpen] = useState(false);\n\n  const onClose = useCallback(() => setIsOpen(false), []);\n  const onToggle = useCallback(() => setIsOpen(prev => !prev), []);\n\n  // Close dropdown if WebViewer loses focus (ie, user clicks outside iframe).\n  useEffect(() => {\n    window.addEventListener('blur', () => {\n      setIsOpen(false);\n    });\n  }, []);\n\n  useArrowFocus(isOpen, onClose, overlayRef);\n\n  const onClickOutside = useCallback(e => {\n    if (!buttonRef.current.contains(e.target)) {\n      setIsOpen(false);\n    }\n  }, []);\n  useOnClickOutside(overlayRef, onClickOutside);\n\n  const onClickDropdownItem = useCallback(\n    (e, key) => {\n      e.stopPropagation();\n      onClickItem(key);\n      setIsOpen(false);\n      buttonRef.current.focus();\n    },\n    [onClickItem],\n  );\n\n  const getTranslation = (prefix, key) => {\n    if (getTranslationLabel) {\n      return t(getTranslationLabel(key));\n    }\n\n    return t(`${prefix}.${key}`, key);\n  };\n\n  const getDropdownStyles = (isFont, key, maxheight) => {\n    if (isFont && key && maxheight) {\n      return { fontFamily: key, lineHeight: `28px` };\n    } else if (isFont && key) {\n      return { fontFamily: key };\n    } else if (maxheight) {\n      return { lineHeight: `28px` };\n    }\n  };\n\n  const renderDropdownImages = () =>\n    images.map(image => (\n      <DataElementWrapper\n        key={image.key}\n        type=\"button\"\n        dataElement={`dropdown-item-${image.key}`}\n        className={classNames('Dropdown__item', { active: image.key === currentSelectionKey })}\n        tabIndex={isOpen ? undefined : -1} // Just to be safe.\n        onClick={e => onClickDropdownItem(e, image.key)}\n      >\n        <Icon glyph={image.src} className={image.className} />\n      </DataElementWrapper>\n    ));\n\n  const renderDropdownItems = () =>\n    items.map(key => (\n      <DataElementWrapper\n        key={key}\n        type=\"button\"\n        dataElement={`dropdown-item-${key}`}\n        className={classNames('Dropdown__item', { active: key === currentSelectionKey })}\n        onClick={e => onClickDropdownItem(e, key)}\n        tabIndex={isOpen ? undefined : -1} // Just to be safe.\n        style={getDropdownStyles(isFont, key, maxHeight)}\n      >\n        {getTranslation(translationPrefix, key)}\n      </DataElementWrapper>\n    ));\n\n  let dropdownItems;\n  let optionIsSelected;\n  let selectedItem;\n\n  const hasImages = images && images.length > 0;\n  if (hasImages) {\n    const imageKeys = images.map(item => item.key);\n    const selectedImageIndex = getImageIndexFromKey(images, currentSelectionKey);\n\n    optionIsSelected = imageKeys.some(key => key === currentSelectionKey);\n    selectedItem = <Icon glyph={images[selectedImageIndex].src} className={images[selectedImageIndex].className} />;\n    dropdownItems = useMemo(renderDropdownImages, [images, currentSelectionKey]);\n  } else {\n    optionIsSelected = items.some(key => key === currentSelectionKey);\n    selectedItem = tReady ? getTranslation(translationPrefix, currentSelectionKey) : '';\n\n    dropdownItems = useMemo(renderDropdownItems, [\n      currentSelectionKey,\n      isOpen,\n      items,\n      onClickDropdownItem,\n      t,\n      translationPrefix,\n    ]);\n  }\n\n  const buttonStyle = { width: `${width}px` };\n  const scrollItemsStyle = { maxHeight: `${maxHeight}px` };\n\n  return (\n    <DataElementWrapper className=\"Dropdown__wrapper\" dataElement={dataElement}>\n      <button className=\"Dropdown\" style={buttonStyle} onClick={onToggle} ref={buttonRef} disabled={disabled}>\n        <div className=\"picked-option\">\n          {optionIsSelected && (\n            <div className=\"picked-option-text\" style={isFont ? { fontFamily: currentSelectionKey } : undefined}>\n              {selectedItem}\n            </div>\n          )}\n          {!optionIsSelected && placeholder && <div className=\"picked-option-text\">{placeholder}</div>}\n          <Icon className=\"arrow\" glyph={`icon-chevron-${isOpen ? 'up' : 'down'}`} />\n        </div>\n      </button>\n      <div\n        className={classNames('Dropdown__items', { 'hide': !isOpen })}\n        ref={overlayRef}\n        role=\"listbox\"\n        aria-label={t(`${translationPrefix}.dropdownLabel`)}\n        style={maxHeight ? scrollItemsStyle : undefined}\n      >\n        {dropdownItems}\n      </div>\n    </DataElementWrapper>\n  );\n}\n\nconst getImageIndexFromKey = (imageArray, key) => {\n  if (!imageArray || imageArray.length === 0) {\n    return -1;\n  }\n\n  let imageIndex = -1;\n  imageArray.forEach((image, index) => {\n    if (image.key === key) {\n      imageIndex = index;\n    }\n  });\n\n  return imageIndex;\n};\n\nDropdown.propTypes = propTypes;\nexport default Dropdown;\n","import Dropdown from './Dropdown';\n\nexport default Dropdown;","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Dropdown from 'components/Dropdown';\n\nimport './LineStyleOptions.scss';\n\nconst startLineStyles = [\n  { className: 'linestyle-image', key: 'None', src: 'icon-linestyle-none' },\n  { className: 'linestyle-image shift-alignment', key: 'ClosedArrow', src: 'icon-linestyle-start-arrow-closed' },\n  { className: 'linestyle-image shift-alignment', key: 'OpenArrow', src: 'icon-linestyle-start-arrow-open' },\n  { className: 'linestyle-image shift-alignment', key: 'ROpenArrow', src: 'icon-linestyle-start-arrow-open-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'RClosedArrow',  src: 'icon-linestyle-start-arrow-closed-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'Butt', src: 'icon-linestyle-start-butt' },\n  { className: 'linestyle-image shift-alignment', key: 'Circle', src: 'icon-linestyle-start-circle' },\n  { className: 'linestyle-image shift-alignment', key: 'Diamond', src: 'icon-linestyle-start-diamond' },\n  { className: 'linestyle-image shift-alignment', key: 'Square', src: 'icon-linestyle-start-square' },\n  { className: 'linestyle-image shift-alignment', key: 'Slash', src: 'icon-linestyle-start-slash' },\n];\n\nconst endLineStyles = [\n  { className: 'linestyle-image', key: 'None', src: 'icon-linestyle-none' },\n  { className: 'linestyle-image shift-alignment', key: 'ClosedArrow', src: 'icon-linestyle-end-arrow-closed' },\n  { className: 'linestyle-image shift-alignment', key: 'OpenArrow', src: 'icon-linestyle-end-arrow-open' },\n  { className: 'linestyle-image shift-alignment', key: 'ROpenArrow', src: 'icon-linestyle-end-arrow-open-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'RClosedArrow', src: 'icon-linestyle-end-arrow-closed-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'Butt', src: 'icon-linestyle-end-butt' },\n  { className: 'linestyle-image shift-alignment', key: 'Circle', src: 'icon-linestyle-end-circle' },\n  { className: 'linestyle-image shift-alignment', key: 'Diamond', src: 'icon-linestyle-end-diamond' },\n  { className: 'linestyle-image shift-alignment', key: 'Square', src: 'icon-linestyle-end-square' },\n  { className: 'linestyle-image shift-alignment', key: 'Slash', src: 'icon-linestyle-end-slash' },\n];\n\nfunction LineStyleOptions({ properties, onLineStyleChange }) {\n\n  const [ t ] = useTranslation();\n  const [ selectedStartLineStyle, setSelectedStartLineStyle ] = useState(properties.StartLineStyle);\n  const [ selectedEndLineStyle, setSelectedEndLineStyle ] = useState(properties.EndLineStyle);\n  const [ isMouseInLowerHalfOfWindow, setIsMouseInLowerHalfOfWindow] = useState(false);\n\n  useEffect(() => {\n    window.addEventListener('click', handleMouseClick);\n    return (() => { window.addEventListener('click', handleMouseClick); });\n  }, []);\n\n  function onClickStartLineStyle(key) {\n    setSelectedStartLineStyle(key);\n    onLineStyleChange('start', key);\n  }\n\n  function onClickEndLineStyle(key) {\n    setSelectedEndLineStyle(key);\n    onLineStyleChange('end', key);\n  }\n\n  function handleMouseClick(event) {\n    if(event.clientY > window.innerHeight / 2) {\n      setIsMouseInLowerHalfOfWindow(true);\n    } else {\n      setIsMouseInLowerHalfOfWindow(false);\n    }\n  }\n\n  const lineEndingDropdownWidth = 85;\n  const dropdownContainerClass = 'StyleContainer ' + (isMouseInLowerHalfOfWindow ? 'renderUpwards' : '');\n\n  return (\n    <div className=\"LineStyleOptions\">\n      <div className=\"LayoutTitle\">{t('option.lineStyleOptions.title')}</div>\n      <div className={dropdownContainerClass}>\n        <Dropdown\n          dataElement=\"startLineStyleDropdown\"\n          images={startLineStyles}\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickStartLineStyle}\n          currentSelectionKey={selectedStartLineStyle}\n        />\n\n        <Dropdown\n          dataElement=\"endLineStyleDropdown\"\n          images={endLineStyles}\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickEndLineStyle}\n          currentSelectionKey={selectedEndLineStyle}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default LineStyleOptions","import LineStyleOptions from './LineStyleOptions';\nexport default LineStyleOptions;","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport './FontSizeDropdown.scss';\nimport Icon from \"components/Icon\";\nimport PropTypes from 'prop-types';\nimport classNames from \"classnames\";\nimport DataElementWrapper from \"components/DataElementWrapper\";\nimport useOnClickOutside from \"hooks/useOnClickOutside\";\nimport { useTranslation } from \"react-i18next\";\n\nconst propTypes = {\n  fontSize: PropTypes.number,\n  fontUnit: PropTypes.string, // Ex: 'pt'\n  onFontSizeChange: PropTypes.func.isRequired,\n  maxFontSize: PropTypes.number,\n  incrementMap: PropTypes.object,\n  // Calls this with current error message string whenever it changes\n  onError: PropTypes.func,\n};\n\nconst MIN_FONT_SIZE = 1;\n// Default maxFontSize\nconst RENDER_ROWS_UPPER_LIMIT = 128;\n// Default increment map\nconst BREAKS_AND_INCREMENT = {\n  0: 1,\n  20: 2,\n  48: 4,\n};\n\nconst FontSizeDropdown = ({\n  onFontSizeChange,\n  fontSize = 12.0,\n  fontUnit = \"pt\",\n  maxFontSize = RENDER_ROWS_UPPER_LIMIT,\n  incrementMap = BREAKS_AND_INCREMENT,\n  onError = undefined,\n}) => {\n  const { t } = useTranslation();\n  const inputRef = useRef();\n  const iconButtonRef = useRef();\n  const dropdownDivRef = useRef();\n  const [sizes, setSizes] = useState([]);\n  const [error, setError] = useState(false);\n\n  const onClickOutside = useCallback(() => {\n    setOpen(false);\n  }, []);\n  useOnClickOutside(dropdownDivRef, onClickOutside);\n\n  const [currSize, setCurrSize] = useState(fontSize <= maxFontSize ? fontSize : 1);\n  const isValidNum = (num, arr = []) =>\n    num && arr.indexOf(num) === -1 && num <= maxFontSize && num >= MIN_FONT_SIZE;\n  useEffect(() => {\n    incrementMap[maxFontSize] = 12;\n    const getNewNumbers = curr => {\n      const startArr = [MIN_FONT_SIZE];\n      for (let i = 1; i <= maxFontSize; i++) {\n        const higherIncrement = getIncrement(startArr[startArr.length - 1]);\n        const higher = (startArr[startArr.length - 1]) + higherIncrement;\n        isValidNum(higher, startArr) && startArr.push(higher);\n      }\n      if (!startArr.includes(curr)) {\n        startArr.push(curr);\n        startArr.sort((a, b) => a - b);\n      }\n      return startArr;\n    };\n    const getIncrement = num => {\n      let greaterThanLast = false;\n      let last;\n      const keys = Object.keys(incrementMap).map(i => parseFloat(i)).sort((a, b) => a - b);\n      for (const i of keys) {\n        if (num < i && greaterThanLast) {\n          return incrementMap[last];\n        }\n        if (i === keys[keys.length - 1]) {\n          return incrementMap[i];\n        }\n        if (num >= i) {\n          greaterThanLast = true;\n          last = i;\n        }\n      }\n    };\n    setSizes(getNewNumbers(Math.floor(currSize)));\n  }, []);\n  const sizeChange = e => {\n    setFocused(true);\n    const newValue = e.target.value;\n    const newSize = typeof newValue === \"string\" ?\n      parseFloat(newValue.replace(/[^\\d]+/gi, ''))\n      : newValue;\n    if (currSize !== newSize) {\n      if (typeof newSize !== \"number\") {\n        return setCurrSize(MIN_FONT_SIZE);\n      }\n      setCurrSize(newSize);\n      if (!e.target.checkValidity()) {\n        if (isValidNum(currSize)) {\n          e.target.validFontSize = currSize;\n        }\n        if (onError) {\n          onError(t('option.stylePopup.invalidFontSize') + maxFontSize);\n          setError(true);\n        }\n        return e.preventDefault();\n      }\n      setError(false);\n      onError && onError('');\n      onFontSizeChange(`${newSize}${fontUnit}`);\n    }\n  };\n\n  const [focused, setFocused] = useState(false);\n  const focus = () => setFocused(true);\n  const blur = e => {\n    if (!e.target.checkValidity() || !currSize) {\n      setCurrSize(e.target.validFontSize || MIN_FONT_SIZE);\n    }\n    setFocused(false);\n    onError && onError(null);\n    onError && setError(false);\n  };\n\n  const [isOpen, setOpen] = useState(false);\n  useEffect(() => {\n    if (isOpen) {\n      const children = dropdownDivRef.current.childNodes;\n      const itemHeight = children[0].getBoundingClientRect().height;\n      const divHeight = dropdownDivRef.current.getBoundingClientRect().height;\n      let itemDistance = 0;\n      for (const node of children) {\n        if (node.innerText === `${Math.floor(fontSize)}pt`) {\n          break;\n        }\n        itemDistance++;\n      }\n      dropdownDivRef.current.scrollTop = itemHeight * itemDistance - divHeight / 2;\n    }\n  }, [isOpen]);\n  const onClickDropdownItem = useCallback(\n    (e, key) => {\n      e.stopPropagation();\n      setOpen(false);\n      setFocused(false);\n      setCurrSize(key);\n      onFontSizeChange(`${key}${fontUnit}`);\n      iconButtonRef?.current.focus();\n    }, [fontUnit, onFontSizeChange]\n  );\n\n  const dropdownItems = useMemo(\n    () => sizes.map(key => (\n      <DataElementWrapper\n        key={key}\n        type=\"button\"\n        dataElement={`dropdown-item-${key}`}\n        className={classNames('Dropdown__item', { active: key === Math.floor(currSize) })}\n        onClick={e => onClickDropdownItem(e, key)}\n        tabIndex={isOpen ? undefined : -1}\n      >\n        {key + fontUnit}\n      </DataElementWrapper>\n    )),\n    [currSize, isOpen, onClickDropdownItem, fontUnit, sizes]\n  );\n\n  return (\n    <div className=\"FontSizeDropdown\">\n      <input\n        min={MIN_FONT_SIZE}\n        max={maxFontSize}\n        value={focused ? currSize : `${currSize}pt`}\n        onChange={sizeChange}\n        type={focused ? \"number\" : \"string\"}\n        onFocus={focus}\n        onBlur={blur}\n        onSelectCapture={focus}\n        ref={inputRef}\n        disabled={isOpen}\n        className={error ? \"error\" : undefined}\n      />\n      <div className={classNames('icon-button')} onClick={() => setOpen(true)} ref={iconButtonRef}>\n        <Icon glyph={`icon-chevron-${isOpen ? 'up' : 'down'}`} />\n      </div>\n      <div\n        className={classNames('Dropdown__items', { 'hidden': !isOpen })}\n        role=\"listbox\"\n        ref={dropdownDivRef}\n      >\n        {dropdownItems}\n      </div>\n    </div>\n  );\n};\n\nFontSizeDropdown.propTypes = propTypes;\n\nexport default FontSizeDropdown;\n","import FontSizeDropdown from './FontSizeDropdown';\n\nexport default FontSizeDropdown;","import React, { useState } from 'react';\nimport './TextStylePicker.scss';\nimport Dropdown from 'components/Dropdown';\nimport FontSizeDropdown from 'components/FontSizeDropdown';\nimport Button from 'components/Button';\n\nconst TextStylePicker = ({ onPropertyChange, properties, onRichTextStyleChange, isRedaction, fonts }) => {\n  // List is not complete\n  const supportedFonts = fonts?.length ? fonts : ['Helvitica', 'Times New Roman'];\n\n  const font = properties?.Font || supportedFonts[0];\n  const changeFont = font => {\n    onPropertyChange('Font', font);\n  };\n\n  const fontSize = properties?.FontSize || '12pt';\n  const changeFontSize = fontSize => {\n    onPropertyChange('FontSize', fontSize);\n  };\n\n  const [bold, setBold] = useState(properties?.bold || false);\n  const toggleBold = () => {\n    onRichTextStyleChange('font-weight', !bold ? 'bold' : '');\n    setBold(!bold);\n  };\n\n  const [italic, setItalic] = useState(properties?.italic || false);\n  const toggleItalic = () => {\n    onRichTextStyleChange('font-style', !italic ? 'italic' : '');\n    setItalic(!italic);\n  };\n\n  const [underline, setUnderline] = useState(properties?.underline || false);\n  const [strikeout, setStrikeout] = useState(properties?.strikeout || false);\n  const toggleUnderline = () => {\n    const newUnderline = !underline;\n    if (newUnderline) {\n      onRichTextStyleChange('underline', true);\n    } else {\n      onRichTextStyleChange('underline', false);\n    }\n    setUnderline(newUnderline);\n  };\n  const toggleStrikeout = () => {\n    const newStrikeout = !strikeout;\n    if (newStrikeout) {\n      onRichTextStyleChange('line-through', true);\n    } else {\n      onRichTextStyleChange('line-through', false);\n    }\n    setStrikeout(newStrikeout);\n  };\n\n  const textAlign = properties?.TextAlign || 'left';\n  const changeXAlign = xAlign => {\n    onPropertyChange('TextAlign', xAlign);\n  };\n\n  const textVerticalAlign = properties?.TextVerticalAlign || 'top';\n  const changeYAlign = yAlign => {\n    onPropertyChange('TextVerticalAlign', yAlign);\n  };\n\n  const fontSizeProps = fontSize?.match(/([0-9.]+)|([a-z]+)/gi);\n\n  const [error, setError] = useState('');\n\n  return (\n    <>\n      <div className={`container-fluid ${error && 'error'}`}>\n        <Dropdown items={supportedFonts} onClickItem={changeFont} currentSelectionKey={font} isFont maxHeight={200} />\n        <FontSizeDropdown\n          fontSize={(fontSizeProps && parseFloat(fontSizeProps[0])) || 12}\n          fontUnit={(fontSizeProps && fontSizeProps[1]) || 'pt'}\n          onFontSizeChange={changeFontSize}\n          onError={setError}\n        />\n        {error && <div className=\"error-text\">{error}</div>}\n      </div>\n      <div className=\"icon-grid\">\n        {!isRedaction && (\n          <div className=\"row rich-text-format\">\n            <Button\n              dataElement=\"freeTextBoldButton\"\n              onClick={toggleBold}\n              img=\"icon-menu-bold\"\n              title=\"option.richText.bold\"\n              isActive={bold}\n            />\n            <Button\n              dataElement=\"freeTextItalicButton\"\n              onClick={toggleItalic}\n              img=\"icon-menu-italic\"\n              title=\"option.richText.italic\"\n              isActive={italic}\n            />\n            <Button\n              dataElement=\"freeTextUnderlineButton\"\n              onClick={toggleUnderline}\n              img=\"icon-menu-text-underline\"\n              title=\"option.richText.underline\"\n              isActive={underline}\n            />\n            <Button\n              dataElement=\"freeTextStrikeoutButton\"\n              onClick={toggleStrikeout}\n              img=\"icon-tool-text-manipulation-strikethrough\"\n              title=\"option.richText.strikeout\"\n              isActive={strikeout}\n            />\n          </div>\n        )}\n        <div className={`row text-horizontal-alignment ${isRedaction ? 'isRedaction' : ''}`}>\n          <Button\n            dataElement=\"freeTextAlignLeftButton\"\n            onClick={() => changeXAlign('left')}\n            img=\"icon-menu-align-left\"\n            title=\"option.richText.alignLeft\"\n            isActive={textAlign === 'left'}\n          />\n          <Button\n            dataElement=\"freeTextAlignCenterButton\"\n            onClick={() => changeXAlign('center')}\n            img=\"icon-menu-align-centre\"\n            title=\"option.richText.alignCenter\"\n            isActive={textAlign === 'center'}\n          />\n          <Button\n            dataElement=\"freeTextAlignRightButton\"\n            onClick={() => changeXAlign('right')}\n            img=\"icon-menu-align-right\"\n            title=\"option.richText.alignRight\"\n            isActive={textAlign === 'right'}\n          />\n          {/*TODO: Implement justify button below*/}\n          {!isRedaction && (\n            <Button\n              dataElement=\"freeTextJustifyCenterButton\"\n              onClick={() => changeXAlign('justify')}\n              img=\"icon-text-justify-center\"\n              title=\"option.richText.justifyCenter\"\n              isActive={textAlign === 'justify'}\n            />\n          )}\n        </div>\n        {!isRedaction && (\n          <div className=\"row text-vertical-alignment\">\n            <Button\n              onClick={() => changeYAlign('top')}\n              img=\"icon-arrow-to-top\"\n              title=\"option.richText.alignTop\"\n              isActive={textVerticalAlign === 'top'}\n            />\n            <Button\n              onClick={() => changeYAlign('center')}\n              img=\"icon-arrow-to-middle\"\n              title=\"option.richText.alignMiddle\"\n              isActive={textVerticalAlign === 'center'}\n            />\n            <Button\n              onClick={() => changeYAlign('bottom')}\n              img=\"icon-arrow-to-bottom\"\n              title=\"option.richText.alignBottom\"\n              isActive={textVerticalAlign === 'bottom'}\n            />\n          </div>\n        )}\n      </div>\n    </>\n  );\n};\n\nexport default TextStylePicker;\n","import TextStylePicker from './TextStylePicker';\n\nexport default TextStylePicker;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport './LabelTextEditor.scss';\n\nconst LabelTextEditor = ({ onPropertyChange, properties }) => {\n  const overlayText = properties.OverlayText || '';\n  const [curOverlayText, setCurOverlayText] = useState(overlayText);\n  const setOverlayText = (e) => {\n    setCurOverlayText(e.target.value);\n    onPropertyChange('OverlayText', e.target.value);\n  };\n\n  const onKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      e.target?.blur();\n    }\n  };\n\n  const [t] = useTranslation();\n\n  return (\n    <>\n      <input\n        className=\"overlay-text-input\"\n        value={curOverlayText}\n        onChange={setOverlayText}\n        onKeyDown={onKeyDown}\n        placeholder={t('option.stylePopup.labelTextPlaceholder')}\n      />\n    </>\n  );\n};\n\nexport default LabelTextEditor;\n","import LabelTextEditor from './LabelTextEditor';\n\nexport default LabelTextEditor;","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport i18next from \"i18next\";\n\nimport ColorPaletteHeader from 'components/ColorPaletteHeader';\nimport ColorPalette from 'components/ColorPalette';\nimport ColorPalettePicker from 'components/ColorPalettePicker';\nimport Slider from 'components/Slider';\nimport MeasurementOption from 'components/MeasurementOption';\nimport StyleOption from 'components/StyleOption';\nimport LineStyleOptions from 'components/LineStyleOptions';\nimport Icon from \"components/Icon\";\nimport TextStylePicker from \"components/TextStylePicker\";\nimport LabelTextEditor from \"components/LabelTextEditor\";\n\nimport { circleRadius } from 'constants/slider';\nimport DataElements from 'constants/dataElement';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport pickBy from 'lodash/pickBy';\nimport useMedia from 'hooks/useMedia';\nimport classNames from 'classnames';\nimport { isMobile } from \"helpers/device\";\n\nimport './StylePopup.scss';\n\nclass StylePopup extends React.PureComponent {\n  static propTypes = {\n    style: PropTypes.object.isRequired,\n    onStyleChange: PropTypes.func.isRequired,\n    onPropertyChange: PropTypes.func.isRequired,\n    onSliderChange: PropTypes.func.isRequired,\n    onRichTextStyleChange: PropTypes.func,\n    onLineStyleChange: PropTypes.func,\n    isFreeText: PropTypes.bool,\n    isMeasure: PropTypes.bool,\n    colorMapKey: PropTypes.string.isRequired,\n    currentPalette: PropTypes.oneOf(['TextColor', 'StrokeColor', 'FillColor']),\n    isColorPaletteDisabled: PropTypes.bool,\n    isOpacitySliderDisabled: PropTypes.bool,\n    isStrokeThicknessSliderDisabled: PropTypes.bool,\n    isFontSizeSliderDisabled: PropTypes.bool,\n    isStyleOptionDisabled: PropTypes.bool,\n    isStylePopupDisabled: PropTypes.bool,\n    hideSnapModeCheckbox: PropTypes.bool,\n    closeElement: PropTypes.func,\n    openElement: PropTypes.func,\n    properties: PropTypes.object,\n    isRedaction: PropTypes.bool,\n    fonts: PropTypes.array,\n  };\n\n  renderSliders = () => {\n    const {\n      style: { Opacity, StrokeThickness, FontSize },\n      onStyleChange,\n      onSliderChange,\n      isFreeText,\n      isMeasure = false,\n      // TODO: Actually disable these elements\n      isOpacitySliderDisabled,\n      isStrokeThicknessSliderDisabled,\n      isFontSizeSliderDisabled,\n      currentPalette,\n    } = this.props;\n    const lineStart = circleRadius;\n    const sliderProps = {};\n\n    if (!isOpacitySliderDisabled) {\n      sliderProps.Opacity = {\n        property: 'Opacity',\n        displayProperty: 'opacity',\n        value: Opacity,\n        getDisplayValue: Opacity => `${Math.round(Opacity * 100)}%`,\n        dataElement: DataElements.OPACITY_SLIDER,\n        getCirclePosition: (lineLength, Opacity) => Opacity * lineLength + lineStart,\n        convertRelativeCirclePositionToValue: circlePosition => circlePosition,\n        withInputField: true,\n        inputFieldType: 'number',\n        min: 0,\n        max: 100,\n        step: 1,\n        getLocalValue: opacity => parseInt(opacity) / 100,\n      };\n    }\n    if (!isStrokeThicknessSliderDisabled) {\n      sliderProps.StrokeThickness = {\n        property: 'StrokeThickness',\n        displayProperty: 'thickness',\n        value: StrokeThickness,\n        getDisplayValue: strokeThickness => {\n          const placeOfDecimal = Math.floor(strokeThickness) !== strokeThickness ? strokeThickness.toString().split(\".\")[1].length || 0 : 0;\n          if (StrokeThickness === 0 || StrokeThickness >= 1 && (placeOfDecimal > 2 || placeOfDecimal === 0)) {\n            return `${Math.round(strokeThickness)}pt`;\n          } else {\n            return `${parseFloat(strokeThickness).toFixed(2)}pt`\n          }\n        },\n        dataElement: DataElements.STROKE_THICKNESS_SLIDER,\n        getCirclePosition: (lineLength, strokeThickness) => (strokeThickness / 20) * lineLength + lineStart,\n        convertRelativeCirclePositionToValue: circlePosition => {\n          if (circlePosition >= 1 / 20) {\n            return circlePosition * 20;\n          }\n          else if (circlePosition >= 0.75 / 20 && circlePosition < 1 / 20) {\n            return 0.75;\n          }\n          else if (circlePosition >= 0.5 / 20 && circlePosition < 0.75 / 20) {\n            return 0.5;\n          }\n          else if (circlePosition >= 0.25 / 20 && circlePosition < 0.5 / 20) {\n            return 0.25;\n          }\n          else if (circlePosition >= 0.08 / 20 && circlePosition < 0.25 / 20) {\n            return 0.1;\n          }\n          else {\n            return isFreeText ? 0 : 0.1;\n          }\n        },\n        withInputField: true,\n        inputFieldType: 'number',\n        min: isFreeText ? 0 : 0.1,\n        max: 20,\n        step: 1,\n        getLocalValue: strokeThickness => parseFloat(strokeThickness).toFixed(2)\n      };\n    }\n    if (!isFontSizeSliderDisabled) {\n      sliderProps.FontSize = {\n        property: 'FontSize',\n        displayProperty: 'text',\n        value: FontSize,\n        getDisplayValue: FontSize => `${Math.round(parseInt(FontSize, 10))}pt`,\n        dataElement: DataElements.FONT_SIZE_SLIDER,\n        getCirclePosition: (lineLength, FontSize) =>\n          ((parseInt(FontSize, 10) - 5) / 40) * lineLength + lineStart,\n        convertRelativeCirclePositionToValue: circlePosition =>\n          `${circlePosition * 40 + 5}pt`,\n      };\n    }\n\n    // default sliders\n    let sliders = { Opacity, StrokeThickness, FontSize };\n    if (currentPalette === 'TextColor') {\n      sliders = { Opacity, FontSize };\n    } else if (currentPalette === 'StrokeColor') {\n      sliders = { Opacity, StrokeThickness };\n    } else if (currentPalette === 'FillColor') {\n      sliders = { Opacity };\n    }\n\n    if (isMeasure) {\n      sliders.FontSize = FontSize;\n    }\n\n    if (isOpacitySliderDisabled) {\n      delete sliders.Opacity;\n    }\n\n    if (isStrokeThicknessSliderDisabled) {\n      delete sliders.StrokeThickness;\n    }\n\n    if (isFontSizeSliderDisabled) {\n      delete sliders.FontSize;\n    }\n\n    // we still want to render a slider if the value is 0\n    sliders = pickBy(sliders, slider => slider !== null && slider !== undefined);\n\n    const sliderComponents = Object.keys(sliders).map(key => {\n      const props = sliderProps[key];\n\n      return <Slider {...props} key={key} onStyleChange={onStyleChange} onSliderChange={onSliderChange} />;\n    });\n\n    return (\n      <React.Fragment>\n        {sliderComponents.length > 0 && (\n          <div className=\"sliders-container\">\n            {sliderComponents}\n          </div>\n        )}\n      </React.Fragment>\n    );\n  };\n\n  render() {\n    const {\n      toolName,\n      isColorPaletteDisabled,\n      currentPalette,\n      style,\n      colorMapKey,\n      onStyleChange,\n      isStyleOptionDisabled,\n      disableSeparator,\n      hideSnapModeCheckbox,\n      isFreeText,\n      isTextStyleContainerActive,\n      isColorsContainerActive,\n      isLabelTextContainerActive,\n      isLabelTextContainerDisabled,\n      openElement,\n      closeElement,\n      properties,\n      onPropertyChange,\n      onRichTextStyleChange,\n      isRedaction,\n      fonts,\n      showLineStyleOptions,\n      onLineStyleChange\n    } = this.props;\n\n    // We do not have sliders to show up for redaction annots\n    if (isRedaction) {\n      style.Opacity = null;\n      style.StrokeThickness = null;\n    }\n\n    const { Scale, Precision, Style } = style;\n\n    const textMenuItems = {\n      [DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER]: isTextStyleContainerActive,\n      [DataElements.STYLE_POPUP_COLORS_CONTAINER]: isColorsContainerActive,\n      [DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER]: isLabelTextContainerActive\n    };\n\n    const openTextMenuItem = (dataElement) => {\n      if (!textMenuItems[dataElement]) {\n        openElement(dataElement);\n        if (isMobile()) {\n          for (let element in textMenuItems) {\n            if (element !== dataElement) {\n              closeElement(element);\n            }\n          }\n        }\n      } else {\n        closeElement(dataElement);\n      }\n    };\n    const openLabelText = () => openTextMenuItem(DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER);\n    const openTextStyle = () => openTextMenuItem(DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER);\n    const openColors = () => openTextMenuItem(DataElements.STYLE_POPUP_COLORS_CONTAINER);\n\n    const className = classNames({\n      Popup: true,\n      StylePopup: true,\n    });\n\n    const showTextStyle = (currentPalette === \"TextColor\" && (isFreeText || isRedaction));\n    const showColorsMenu = (currentPalette === \"TextColor\" && (isFreeText || isRedaction));\n    const showColorPicker = !(showColorsMenu && !isColorsContainerActive);\n    const showLabelText = (currentPalette === \"TextColor\" && isRedaction);\n    const showSliders = isColorPaletteDisabled || showColorPicker;\n\n    return (\n      <div className={className} data-element=\"stylePopup\">\n        {currentPalette && !isColorPaletteDisabled && (\n          <>\n            <ColorPaletteHeader\n              colorPalette={currentPalette}\n              colorMapKey={colorMapKey}\n              style={style}\n              toolName={toolName}\n              disableSeparator={disableSeparator}\n            />\n            {showLabelText && !isLabelTextContainerDisabled && (\n              <>\n                <div className=\"collapsible-menu\" onClick={openLabelText} onTouchStart={openLabelText} role={\"toolbar\"}>\n                  <div className=\"menu-title\">\n                    {i18next.t('option.stylePopup.labelText')}\n                  </div>\n                  <Icon glyph={`icon-chevron-${isLabelTextContainerActive ? \"up\" : \"down\"}`} />\n                </div>\n                {isLabelTextContainerActive && (\n                  <div className=\"menu-items\">\n                    <LabelTextEditor\n                      properties={properties}\n                      onPropertyChange={onPropertyChange}\n                    />\n                  </div>\n                )}\n                <div className=\"divider\" />\n              </>\n            )}\n            {showTextStyle && (\n              <>\n                <div className=\"collapsible-menu\" onClick={openTextStyle} onTouchStart={openTextStyle} role={\"toolbar\"}>\n                  <div className=\"menu-title\">\n                    {i18next.t('option.stylePopup.textStyle')}\n                  </div>\n                  <Icon glyph={`icon-chevron-${isTextStyleContainerActive ? \"up\" : \"down\"}`} />\n                </div>\n                {isTextStyleContainerActive && (\n                  <div className=\"menu-items\">\n                    <TextStylePicker\n                      fonts={fonts}\n                      onPropertyChange={onPropertyChange}\n                      onRichTextStyleChange={onRichTextStyleChange}\n                      properties={properties}\n                      isRedaction={isRedaction}\n                    />\n                  </div>\n                )}\n                <div className=\"divider\" />\n              </>\n            )}\n            {showColorsMenu && (\n              <>\n                <div className=\"collapsible-menu\" onClick={openColors} onTouchStart={openColors} role={\"toolbar\"}>\n                  <div className=\"menu-title\">\n                    {i18next.t('option.stylePopup.colors')}\n                  </div>\n                  <Icon glyph={`icon-chevron-${isColorsContainerActive ? \"up\" : \"down\"}`} />\n                </div>\n              </>\n            )}\n            {showColorPicker && (\n              <>\n                <ColorPalette\n                  color={style[currentPalette]}\n                  property={currentPalette}\n                  onStyleChange={onStyleChange}\n                  colorMapKey={colorMapKey}\n                  useMobileMinMaxWidth\n                />\n                <ColorPalettePicker\n                  color={style[currentPalette]}\n                  property={currentPalette}\n                  onStyleChange={onStyleChange}\n                  enableEdit\n                />\n              </>\n            )}\n          </>\n        )}\n        {showSliders && this.renderSliders()}\n        {Scale && Precision && (\n          <>\n            <MeasurementOption\n              scale={Scale}\n              precision={Precision}\n              hideSnapModeCheckbox={hideSnapModeCheckbox}\n              onStyleChange={onStyleChange}\n            />\n          </>\n        )}\n        {showLineStyleOptions && (\n          <LineStyleOptions\n            properties={properties}\n            onLineStyleChange={onLineStyleChange}\n          />\n        )}\n        {!isStyleOptionDisabled && colorMapKey === 'rectangle' && <StyleOption onStyleChange={onStyleChange} borderStyle={Style} />}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state, { colorMapKey, isFreeText, isRedaction }) => ({\n  currentPalette: selectors.getCurrentPalette(state, colorMapKey),\n  isStylePopupDisabled: selectors.isElementDisabled(state, DataElements.STYLE_POPUP),\n  isColorPaletteDisabled: selectors.isElementDisabled(state, DataElements.COLOR_PALETTE),\n  isOpacitySliderDisabled: selectors.isElementDisabled(state, DataElements.OPACITY_SLIDER),\n  isStrokeThicknessSliderDisabled: selectors.isElementDisabled(state, DataElements.STROKE_THICKNESS_SLIDER),\n  isFontSizeSliderDisabled: selectors.isElementDisabled(state, DataElements.FONT_SIZE_SLIDER) || isFreeText || isRedaction,\n  isStyleOptionDisabled: selectors.isElementDisabled(state, DataElements.STYLE_OPTION),\n  isTextStyleContainerActive: selectors.isElementOpen(state, DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER),\n  isColorsContainerActive: selectors.isElementOpen(state, DataElements.STYLE_POPUP_COLORS_CONTAINER),\n  isLabelTextContainerActive: selectors.isElementOpen(state, DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER),\n  isLabelTextContainerDisabled: selectors.isElementDisabled(state, DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER),\n  fonts: selectors.getFonts(state),\n});\n\nconst mapDispatchToProps = {\n  closeElement: actions.closeElement,\n  openElement: actions.openElement,\n};\nconst ConnectedStylePopup = connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(StylePopup);\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return (\n    <ConnectedStylePopup {...props} isMobile={isMobile} />\n  );\n};\n","import StylePopup from './StylePopup';\n\nexport default StylePopup;","import React from 'react';\nimport classNames from 'classnames';\n\nimport './SignatureRowContent.scss';\n\nconst SignatureRowContent = ({ onClick, imgSrc, isActive, altText }) => {\n  return (\n    <button\n      className={classNames({\n        \"signature-row-content\": true,\n        \"interactable\": onClick,\n        \"active\": isActive,\n      })}\n      onClick={onClick}\n    >\n      <img alt={altText} src={imgSrc} />\n    </button>\n  );\n};\n\nexport default SignatureRowContent;","import React from 'react';\nimport classNames from 'classnames';\nimport { useDispatch } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport actions from 'actions';\n\nimport './SignatureStylePopup.scss';\n\nconst SignatureAddBtn = ({ t, disabled }) => {\n  const dispatch = useDispatch();\n\n  const openSignatureModal = () => {\n    if (!disabled) {\n      dispatch(actions.openElement('signatureModal'));\n      dispatch(actions.closeElement('toolStylePopup'));\n    }\n  };\n\n  return (\n    <button\n      className={classNames({\n        'signature-row-content': true,\n        'add-btn': true,\n        disabled,\n      })}\n      onClick={openSignatureModal}\n    >\n      {t('option.signatureOverlay.addSignature')}\n    </button>\n  );\n};\n\nexport default withTranslation()(SignatureAddBtn);","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport selectors from 'selectors';\nimport Icon from 'components/Icon';\nimport SignatureRowContent from './SignatureRowContent';\nimport SignatureAddBtn from './SignatureAddBtn';\nimport core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\n\nimport './SignatureStylePopup.scss';\n\nconst SignatureStylePopup = props => {\n  const { t } = props;\n  const [\n    activeToolName,\n    savedSignatures,\n    displayedSignatures,\n    selectedDisplayedSignatureIndex,\n    maxSignaturesCount,\n    displayedSignaturesFilterFunction,\n    isSignatureDeleteButtonDisabled\n  ] = useSelector(\n    state => [\n      selectors.getActiveToolName(state),\n      selectors.getSavedSignatures(state),\n      selectors.getDisplayedSignatures(state),\n      selectors.getSelectedDisplayedSignatureIndex(state),\n      selectors.getMaxSignaturesCount(state),\n      selectors.getDisplayedSignaturesFilterFunction(state),\n      selectors.isElementDisabled(state, 'defaultSignatureDeleteButton')\n    ]\n  );\n\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const dispatch = useDispatch();\n\n  const setSignature = async index => {\n    dispatch(actions.setSelectedDisplayedSignatureIndex(index));\n    const { annotation } = displayedSignatures[index];\n    await signatureTool.setSignature(annotation);\n    core.setToolMode('AnnotationCreateSignature');\n    if (signatureTool.hasLocation()) {\n      await signatureTool.addSignature();\n    } else {\n      await signatureTool.showPreview();\n    }\n  };\n\n  const deleteSignature = (displayedSignatureIndex, savedSignatureIndex) => {\n    signatureTool.deleteSavedSignature(savedSignatureIndex);\n\n    const isDeletingSelectedSignature = selectedDisplayedSignatureIndex === displayedSignatureIndex;\n    if (isDeletingSelectedSignature) {\n      dispatch(actions.setSelectedDisplayedSignatureIndex(0));\n      signatureTool.annot = null;\n      signatureTool.hidePreview();\n      core.setToolMode(defaultTool);\n      if (displayedSignatures.length === 1) {\n        dispatch(actions.closeElements(['toolStylePopup']));\n      }\n    } else if (displayedSignatureIndex < selectedDisplayedSignatureIndex) {\n      dispatch(actions.setSelectedDisplayedSignatureIndex(selectedDisplayedSignatureIndex - 1));\n    }\n  };\n\n  return (\n    <div\n      className=\"signature-style-popup\"\n    >\n      {savedSignatures\n        // Need to keep the index infromation from the original signature list\n        .map((s, i) => [s, i])\n        .filter(([s, i]) => displayedSignaturesFilterFunction(s, i))\n        .map(([{ imgSrc }, savedSignatureIndex], indexOfDisplayedSignature) =>\n          <div\n            key={indexOfDisplayedSignature}\n            className=\"signature-row\"\n          >\n            <SignatureRowContent\n              onClick={() => setSignature(indexOfDisplayedSignature)}\n              imgSrc={imgSrc}\n              isActive={selectedDisplayedSignatureIndex === indexOfDisplayedSignature && activeToolName === 'AnnotationCreateSignature'}\n              altText={`${t('option.toolsOverlay.signatureAltText')} ${indexOfDisplayedSignature + 1}`}\n            />\n            {!isSignatureDeleteButtonDisabled && (\n              <button\n                className=\"icon\"\n                data-element=\"defaultSignatureDeleteButton\"\n                onClick={() => deleteSignature(indexOfDisplayedSignature, savedSignatureIndex)}\n              >\n                <Icon glyph=\"icon-delete-line\" />\n              </button>\n            )}\n          </div>\n        )}\n      <SignatureAddBtn\n        disabled={savedSignatures.length >= maxSignaturesCount}\n      />\n    </div>\n  );\n};\n\nexport default withTranslation()(SignatureStylePopup);","import SignatureStylePopup from './SignatureStylePopup';\n\nexport default SignatureStylePopup;","import core from 'core';\nimport { isMeasurementTool, getToolNamesByTheSamePreset } from './getMeasurementTools';\n\nexport default (toolName, property, value) => {\n  let tools = [];\n\n  const tool = core.getTool(toolName);\n  // currently we want to keep the styles of measurement tools syncs\n  // Don't want to keep color or opacity in sync.\n  if (isMeasurementTool(tool) && !(property === 'StrokeColor' || property === 'Opacity')) {\n    const toolNames = getToolNamesByTheSamePreset(toolName);\n    tools = toolNames.map(core.getTool);\n  } else {\n    if (tool) {\n      tools.push(tool);\n    }\n  }\n\n  tools.forEach(tool => {\n    tool.setStyles({\n      [property]: value,\n    });\n  });\n};\n","export function getOpenedWarningModal() {\n  return document.querySelector('.WarningModal.open .container');\n}\n\nexport function getOpenedColorPicker() {\n  return document.querySelector('.ColorPickerModal.open');\n}\n\nexport function getAllOpenedModals() {\n  return document.querySelectorAll('.Modal.open');\n}\n\nexport function getDatePicker() {\n  return document.querySelector('[data-element=\"datePickerContainer\"]');\n}\n","import React, { useContext } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nconst TabsContext = React.createContext();\n\n// eslint-disable-next-line arrow-body-style\nexport const Tabs = React.memo(props => {\n  return (\n    <TabsContext.Provider value={props.id}>\n      {props.children}\n    </TabsContext.Provider>\n  );\n});\n\nTabs.propTypes = {\n  id: PropTypes.string.isRequired,\n  children: PropTypes.node.isRequired,\n};\n\nexport const Tab = ({ children, dataElement }) => {\n  const id = useContext(TabsContext);\n  const [isDisabled, isSelected] = useSelector(state => [\n    selectors.isElementDisabled(state, dataElement),\n    selectors.getSelectedTab(state, id) === dataElement,\n  ], shallowEqual);\n  const dispatch = useDispatch();\n\n  let propsToInject = {\n    className: classNames({\n      selected: isSelected,\n      [children.props.className]: !!children.props.className,\n    }),\n    onClick: () => {\n      children.props.onClick?.();\n      dispatch(actions.setSelectedTab(id, dataElement));\n    },\n  };\n\n  // need to do this because the children may be wrapped by React.memo\n  const type = typeof (children.type.type || children.type);\n  // only inject isSelected if children is a component\n  if (type === 'function') {\n    propsToInject = Object.assign(propsToInject, {\n      isTabSelected: isSelected,\n      dataElement,\n    });\n  } else {\n    propsToInject = Object.assign(propsToInject, {\n      'data-element': dataElement,\n    });\n  }\n\n  return isDisabled ? null : React.cloneElement(children, propsToInject);\n};\n\nTab.propTypes = {\n  children: PropTypes.node.isRequired,\n  index: PropTypes.number,\n  dataElement: PropTypes.string.isRequired,\n};\n\nexport const TabHeader = ({ dataElement, children }) => {\n  const [isDisabled] = useSelector(state => [\n    selectors.isElementDisabled(state, dataElement),\n  ]);\n\n  return (<div data-element={dataElement}>{isDisabled ? null : children}</div>);\n};\n\nTabHeader.propTypes = {\n  children: PropTypes.node.isRequired,\n  dataElement: PropTypes.string.isRequired,\n};\n\n\nexport const TabPanel = ({ children, dataElement }) => {\n  const id = useContext(TabsContext);\n  const [isDisabled, isSelected] = useSelector(state => [\n    selectors.isElementDisabled(state, dataElement),\n    selectors.getSelectedTab(state, id).includes(dataElement),\n  ], shallowEqual);\n\n  return isDisabled ? null : (\n    <div\n      className=\"tab-panel\"\n      data-element={dataElement}\n      style={{ display: isSelected ? '' : 'none' }}\n    >\n      {typeof children.type === 'function'\n        ? React.cloneElement(children, { isTabPanelSelected: isSelected })\n        : children}\n    </div>\n  );\n};\n\nTabPanel.propTypes = {\n  children: PropTypes.node.isRequired,\n  dataElement: PropTypes.string.isRequired,\n};\n","/* eslint-disable */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport useMedia from 'hooks/useMedia';\nimport { Tabs, Tab, TabPanel, TabHeader } from 'components/Tabs';\nimport Icon from 'components/Icon';\n\nimport { Swipeable } from 'react-swipeable';\n\nimport './RubberStampOverlay.scss';\n\nconst TOOL_NAME = 'AnnotationCreateRubberStamp';\n\nconst propTypes = {\n  standardStamps: PropTypes.array.isRequired,\n  customStamps: PropTypes.array.isRequired,\n  setSelectedStampIndex: PropTypes.func.isRequired,\n};\n\nclass RubberStampOverlay extends React.Component {\n  static propTypes = {\n    activeToolName: PropTypes.string,\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    isMobile: PropTypes.bool,\n    isActive: PropTypes.bool,\n    t: PropTypes.func.isRequired,\n    i18n: PropTypes.any,\n    openElement: PropTypes.func.isRequired,\n    closeElement: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    dataElement: PropTypes.string.isRequired,\n    toggleElement: PropTypes.func.isRequired,\n  };\n\n  constructor(props) {\n    super(props);\n    this.stampTool = core.getTool(TOOL_NAME);\n  }\n\n  async setRubberStamp(annotation, index) {\n    core.setToolMode(TOOL_NAME);\n    this.props.closeElement(\"toolStylePopup\");\n    const text = this.props.t(`rubberStamp.${annotation['Icon']}`);\n    await this.stampTool.setRubberStamp(annotation, text);\n    this.stampTool.showPreview();\n    this.props.setSelectedStampIndex(index);\n  }\n\n  openCustomSampModal = () => {\n    const { openElement } = this.props;\n    openElement('customStampModal');\n  }\n\n  deleteCustomStamp = index => {\n    const stamps = this.stampTool.getCustomStamps();\n    stamps.splice(index, 1);\n    this.stampTool.setCustomStamps(stamps);\n  }\n\n  render() {\n    const { isMobile, standardStamps, customStamps } = this.props;\n\n    const rubberStamps = standardStamps.map(({ imgSrc, annotation }, index) =>\n      <button key={index} className=\"rubber-stamp\" aria-label={`${this.props.t('annotation.stamp')} ${index + 1}`} onClick={() => this.setRubberStamp(annotation, index)}>\n        <img src={imgSrc} alt=\"\" />\n      </button>,\n    );\n\n    const customImgs = customStamps.map(({ imgSrc, annotation }, index) =>\n      <div key={index} className=\"stamp-row\">\n        <button className=\"stamp-row-content custom-stamp\" aria-label={`${this.props.t('annotation.rubberStamp')} ${index + 1}`} onClick={() => this.setRubberStamp(annotation, standardStamps.length + index)}>\n          <img src={imgSrc} alt=\"\"/>\n        </button>\n        <button className=\"icon\" onClick={() => this.deleteCustomStamp(index)}>\n          <Icon glyph=\"icon-delete-line\"/>\n        </button>\n      </div>,\n    );\n\n    return (\n      <div\n        className=\"rubber-stamp-overlay\"\n        data-element=\"rubberStampOverlay\"\n      >\n        <Tabs id=\"rubberStampTab\">\n          <TabHeader dataElement=\"rubberStampTabHeader\">\n            <div className=\"header tab-header\">\n              <div className=\"tab-list\">\n                <Tab dataElement=\"standardStampPanelButton\">\n                  <button className=\"tab-options-button\">\n                    {this.props.t(`tool.Standard`)}\n                  </button>\n              </Tab>\n              <div className=\"tab-options-divider\" />\n                <Tab dataElement=\"customStampPanelButton\">\n                  <button className=\"tab-options-button\">\n                    {this.props.t(`tool.Custom`)}\n                  </button>\n                </Tab>\n              </div>\n            </div>\n          </TabHeader>\n          <TabPanel dataElement=\"standardStampPanel\">\n            {/* Using Swipeable to stop the bubbling of swiping events when scrolling\n              * Don't know a better way of doing this\n              */}\n            <Swipeable\n              className=\"standard-stamp-panel\"\n              onSwiped={({ event }) => {\n                event.stopPropagation();\n              }}\n            >\n              { rubberStamps }\n            </Swipeable>\n          </TabPanel>\n          <TabPanel dataElement=\"customStampPanel\">\n            <div className=\"custom-stamp-panel\">\n              { customImgs }\n            </div>\n            <button className={classNames({\n                'stamp-row-content': true,\n                'add-btn': true,\n              })}\n              onClick={this.openCustomSampModal}\n            >\n              {this.props.t(`component.createStampButton`)}\n            </button>\n          </TabPanel>\n        </Tabs>\n      </div>\n    );\n  }\n}\n\nRubberStampOverlay.propTypes = propTypes;\n\nconst mapStateToProps = state => ({\n  activeToolName: selectors.getActiveToolName(state),\n  isActive: selectors.getActiveToolName(state) === TOOL_NAME,\n  dataElement: selectors.getToolButtonObjects(state)[TOOL_NAME].dataElement,\n  standardStamps: selectors.getStandardStamps(state),\n  customStamps: selectors.getCustomStamps(state),\n});\n\nconst mapDispatchToProps = {\n  closeElements: actions.closeElements,\n  closeElement: actions.closeElement,\n  openElement: actions.openElement,\n  toggleElement: actions.toggleElement,\n  setSelectedStampIndex: actions.setSelectedStampIndex,\n  setStandardStamps: actions.setStandardStamps,\n  setCustomStamps: actions.setCustomStamps,\n};\n\nconst ConnectedRubberStampOverlay = connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(withTranslation()(RubberStampOverlay));\n\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return (\n    <ConnectedRubberStampOverlay {...props} isMobile={isMobile} />\n  );\n};\n","import RubberStampOverlay from './RubberStampOverlay';\n\nexport default RubberStampOverlay;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport onClickOutside from 'react-onclickoutside';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\n\nimport core from 'core';\nimport StylePopup from 'components/StylePopup';\nimport SignatureStylePopup from 'components/SignatureStylePopup';\nimport setToolStyles from 'helpers/setToolStyles';\nimport { getOpenedWarningModal, getOpenedColorPicker, getAllOpenedModals } from 'helpers/getElements';\nimport getTextDecoration from 'helpers/getTextDecoration';\nimport { mapToolNameToKey, getDataWithKey } from 'constants/map';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport useMedia from 'hooks/useMedia';\nimport HorizontalDivider from 'components/HorizontalDivider';\nimport RubberStampStylePopup from 'components/RubberStampOverlay';\n\nimport './ToolStylePopup.scss';\nimport getToolStyles from 'helpers/getToolStyles';\n\nclass ToolStylePopup extends React.PureComponent {\n  static propTypes = {\n    activeToolName: PropTypes.string,\n    activeToolStyle: PropTypes.object,\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    toolButtonObjects: PropTypes.object.isRequired,\n    colorMapKey: PropTypes.string,\n    closeElement: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    isInDesktopOnlyMode: PropTypes.bool\n  };\n\n  constructor(props) {\n    super(props);\n    this.popup = React.createRef();\n    this.state = {\n      left: 0,\n      top: 0,\n    };\n  }\n  componentDidUpdate(prevProps) {\n    if (!prevProps.isOpen && this.props.isOpen && !this.props.isDisabled) {\n      this.props.closeElements([\n        'viewControlsOverlay',\n        'menuOverlay',\n        'signatureOverlay',\n        'zoomOverlay',\n        'redactionOverlay',\n      ]);\n    }\n  }\n\n  handleClick = e => {\n    // in the mobile version, this component is viewport height minus the header height\n    // with the sub component stylePopup being 100% height so handleClickOutside won't get called\n    // when we click outside because we are always clicking on this component\n    // as a result we have this handler to specifically close this component\n    // if this comment is removed, please also remove the comment in handleClick, AnnotationStylePopup.js\n    if ((!this.props.isInDesktopOnlyMode && isMobile()) && e.target === e.currentTarget) {\n      this.props.closeElement('toolStylePopup');\n    }\n  };\n\n  handleClickOutside = e => {\n    // can have multiple toolsOverlays because of mobile mode\n    const toolsOverlays = Array.from(document.querySelectorAll(\n      '[data-element=\"toolsOverlay\"]',\n    ));\n    const pageNavOverlays = Array.from(document.querySelectorAll(\n      '[data-element=\"pageNavOverlay\"]',\n    ));\n    const warningModal = getOpenedWarningModal();\n    const colorPicker = getOpenedColorPicker();\n    const openedModal = Array.from(getAllOpenedModals());\n\n    const clickedOnToolsOverlay = toolsOverlays.some(toolsOverlay => {\n      return toolsOverlay?.contains(e.target);\n    });\n    const clickedONPageNavOverlay = pageNavOverlays.some(pageNavOverlay => {\n      return pageNavOverlay?.contains(e.target);\n    });\n    const clickedONCreateStampModal = openedModal.some(pageModal => {\n      return pageModal.classList.contains('CustomStampModal');\n    });\n\n    if (!clickedOnToolsOverlay && !clickedONPageNavOverlay && !clickedONCreateStampModal && !warningModal && !colorPicker) {\n      this.props.closeElement('toolStylePopup');\n    }\n  };\n\n  handleStyleChange = (property, value) => {\n    const { activeToolName } = this.props;\n    const tool = core.getTool(activeToolName);\n    if (typeof tool.complete === 'function') {\n      tool.complete();\n    }\n    setToolStyles(activeToolName, property, value, true);\n  };\n\n  handleRichTextStyleChange = (property, value) => {\n    const { activeToolName, activeToolStyle } = this.props;\n    const tool = core.getTool(activeToolName);\n    let richTextStyle;\n    let activeToolRichTextStyle = activeToolStyle[\"RichTextStyle\"][0];\n\n    if (typeof tool.complete === 'function') {\n      tool.complete();\n    }\n\n    if (property === 'underline' || property === 'line-through') {\n      value = getTextDecoration({[property]: value}, activeToolRichTextStyle);\n      property = 'text-decoration';\n    }\n    \n    richTextStyle = {\n      0: {\n        ...activeToolRichTextStyle,\n        [property]: value,\n      }\n    };\n\n    setToolStyles(activeToolName, \"RichTextStyle\", richTextStyle);\n  }\n\n  handleLineStyleChange = (section, value) => {\n    const { activeToolName } = this.props;\n    if (section === 'start') {\n      setToolStyles(activeToolName, 'StartLineStyle', value);\n    } else if (section === 'end') {\n      setToolStyles(activeToolName, 'EndLineStyle', value);\n    }\n  };\n\n  render() {\n    const { activeToolGroup, isDisabled, activeToolName, activeToolStyle, isMobile } = this.props;\n    const isFreeText = activeToolName.includes('AnnotationCreateFreeText');\n    let properties = {};\n    const colorMapKey = mapToolNameToKey(activeToolName);\n    const isRedaction = activeToolName.includes('AnnotationCreateRedaction');\n    const showLineStyleOptions = getDataWithKey(colorMapKey).hasLineEndings;\n\n    if (isDisabled) {\n      return null;\n    }\n\n    if (showLineStyleOptions) {\n      const toolStyles = getToolStyles(activeToolName);\n      properties = {\n        StartLineStyle: toolStyles.StartLineStyle,\n        EndLineStyle: toolStyles.EndLineStyle\n      }\n    }\n\n    if (isFreeText) {\n      properties = {\n        Font: activeToolStyle.Font,\n        FontSize: activeToolStyle.FontSize,\n        TextAlign: activeToolStyle.TextAlign,\n        TextVerticalAlign: activeToolStyle.TextVerticalAlign,\n        bold: activeToolStyle['RichTextStyle'][0][\"font-weight\"] === \"bold\",\n        italic: activeToolStyle['RichTextStyle'][0][\"font-style\"] === \"italic\",\n        underline: activeToolStyle['RichTextStyle'][0][\"text-decoration\"]?.includes(\"underline\") || activeToolStyle[\"text-decoration\"]?.includes(\"word\"),\n        strikeout: activeToolStyle['RichTextStyle'][0][\"text-decoration\"]?.includes(\"line-through\"),\n      };\n    }\n\n    if (isRedaction) {\n      properties = {\n        OverlayText: activeToolStyle['OverlayText'],\n        Font: activeToolStyle['Font'],\n        FontSize: activeToolStyle['FontSize'],\n        TextAlign: activeToolStyle['TextAlign']\n      };\n    }\n\n    const { availablePalettes } = getDataWithKey(colorMapKey);\n    const isEllipseMeasurementTool = activeToolName.includes('AnnotationCreateEllipseMeasurement');\n\n    let Component = (\n      <StylePopup\n        key={activeToolName}\n        toolName={activeToolName}\n        colorMapKey={colorMapKey}\n        style={activeToolStyle}\n        isFreeText={isFreeText}\n        hideSnapModeCheckbox={isEllipseMeasurementTool || !core.isFullPDFEnabled()}\n        onPropertyChange={this.handleStyleChange}\n        onStyleChange={this.handleStyleChange}\n        onSliderChange={()=>{}}\n        onRichTextStyleChange={this.handleRichTextStyleChange}\n        onLineStyleChange={this.handleLineStyleChange}\n        properties={properties}\n        isRedaction={isRedaction}\n        showLineStyleOptions={showLineStyleOptions}\n      />\n    );\n\n    if (activeToolGroup === 'signatureTools') {\n      Component = (\n        <React.Fragment>\n          <HorizontalDivider/>\n          <SignatureStylePopup/>\n        </React.Fragment>\n      );\n    } else if (activeToolGroup === 'rubberStampTools') {\n      Component = (\n        <React.Fragment>\n          <HorizontalDivider/>\n          <RubberStampStylePopup />\n        </React.Fragment>\n      );\n    }\n\n    return (\n      <div\n        className={classNames({\n          ToolStylePopup: true,\n        })}\n        data-element=\"toolStylePopup\"\n        ref={this.popup}\n      >\n        {/* {isMobile && <div className=\"swipe-indicator\" />} */}\n        {Component}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = state => {\n  const activeToolName = selectors.getActiveToolName(state);\n  const toolButtonDataElement = selectors.getToolButtonDataElement(state, activeToolName);\n\n  return {\n    activeToolName,\n    activeToolGroup: selectors.getActiveToolGroup(state),\n    toolButtonDataElement,\n    activeToolStyle: selectors.getActiveToolStyles(state),\n    isDisabled: selectors.isElementDisabled(state, 'toolStylePopup'),\n    isOpen: selectors.isElementOpen(state, 'toolStylePopup'),\n    toolButtonObjects: selectors.getToolButtonObjects(state),\n    isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state)\n  };\n};\n\nconst mapDispatchToProps = {\n  closeElement: actions.closeElement,\n  closeElements: actions.closeElements,\n};\n\nconst ConnectedToolStylePopup = connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(onClickOutside(ToolStylePopup));\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const isTablet = useMedia(\n    // Media queries\n    ['(min-width: 641px) and (max-width: 900px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const isDesktop = useMedia(\n    // Media queries\n    ['(min-width: 901px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return (\n    <ConnectedToolStylePopup {...props} isMobile={isMobile} isTablet={isTablet} isDesktop={isDesktop} />\n  );\n};\n","import { isUndefined } from 'lodash';\n\nexport default (style, richTextStyle) => {\n  let newTextDecoration = '';\n\n  const currentTextDecoration = richTextStyle['text-decoration'];\n\n  const addUnderLine = style['underline'];\n  const removeUnderLine = currentTextDecoration !== 'none' && (!isUndefined(style['underline']) && !style['underline']);\n\n  const addLineThrough = style['line-through'];\n  const removeLineThrough = currentTextDecoration !== 'none' && (!isUndefined(style['line-through']) && !style['line-through']);\n\n  if (addUnderLine) {\n    const hasUnderLine = currentTextDecoration?.indexOf('underline') > -1;\n    newTextDecoration = hasUnderLine ? currentTextDecoration : `${currentTextDecoration || ''} underline`.trim();\n  } else if (removeUnderLine) {\n    newTextDecoration = currentTextDecoration.replace(/underline|word/g, '').trim();\n  }\n\n  if (addLineThrough) {\n    const hasLineThrough = currentTextDecoration?.indexOf('line-through') > -1;\n    newTextDecoration = hasLineThrough ? currentTextDecoration : `${currentTextDecoration || ''} line-through`.trim();\n  } else if (removeLineThrough) {\n    newTextDecoration = currentTextDecoration.replace(/line-through/g, '').trim();\n  }\n\n  return newTextDecoration;\n};","import ToolStylePopup from './ToolStylePopup';\n\nexport default ToolStylePopup;","import ToolsDropdown from './ToolsDropdown';\n\nexport default ToolsDropdown;\n","import React from 'react';\nimport Icon from 'components/Icon';\nimport classNames from 'classnames';\n\nimport './ToolsDropdown.scss';\n\n\nconst ToolsDropdown = ({ isActive, isDisabled, onClick, style }) => {\n  return (\n    <button\n      className={classNames({\n        \"tools-dropdown-container\": true,\n        active: isActive,\n        disabled: isDisabled,\n      })}\n      data-element=\"styling-button\"\n      onClick={onClick}\n      style={style}\n    >\n      {isActive ?\n        <Icon className=\"tools-arrow-up\" glyph=\"icon-chevron-up\" /> :\n        <Icon className=\"tools-arrow-down\" glyph=\"icon-chevron-down\" />}\n    </button>\n  );\n};\n\nexport default ToolsDropdown;","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport SignatureRowContent from 'components/SignatureStylePopup/SignatureRowContent';\nimport SignatureAddBtn from 'components/SignatureStylePopup/SignatureAddBtn';\nimport ToolsDropdown from 'components/ToolsDropdown';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\n\nimport './SelectedSignatureRow.scss';\n\nconst SelectedSignatureRow = ({ t }) => {\n  const [activeToolName, isToolStyleOpen, displayedSignature, displayedSignatures] = useSelector(\n    state => [\n      selectors.getActiveToolName(state),\n      selectors.isElementOpen(state, 'toolStylePopup'),\n      selectors.getSelectedDisplayedSignature(state),\n      selectors.getDisplayedSignatures(state),\n    ],\n  );\n  const dispatch = useDispatch();\n\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  return (\n    <div\n      className=\"selected-signature-row\"\n    >\n      {displayedSignature ?\n        <SignatureRowContent\n          imgSrc={displayedSignature.imgSrc}\n          onClick={async () => {\n            await signatureTool.setSignature(displayedSignature.annotation);\n            core.setToolMode('AnnotationCreateSignature');\n            if (signatureTool.hasLocation()) {\n              await signatureTool.addSignature();\n            } else {\n              await signatureTool.showPreview();\n            }\n          }}\n          isActive={activeToolName === 'AnnotationCreateSignature'}\n          altText={t('option.toolsOverlay.currentSignature')}\n        /> :\n        <SignatureAddBtn />}\n      <ToolsDropdown\n        onClick={() => displayedSignatures.length > 0 && dispatch(actions.toggleElement('toolStylePopup'))}\n        isActive={isToolStyleOpen}\n        isDisabled={displayedSignatures.length === 0}\n      />\n    </div>\n  );\n};\n\nexport default SelectedSignatureRow;","import React, { useEffect, useRef, useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport SignatureRowContent from 'components/SignatureStylePopup/SignatureRowContent';\nimport ToolsDropdown from 'components/ToolsDropdown';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\n\nimport './SelectedRubberStamp.scss';\n\nconst usePrevious = value => {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\n\nconst SelectedRubberStamp = () => {\n  const dispatch = useDispatch();\n  const [t, i18n] = useTranslation();\n  const prevLanguage = usePrevious(i18n.language);\n  const [isOpen, setIsOpen] = useState(false);\n\n  const [\n    activeToolName,\n    selectedStamp,\n    activeToolGroup,\n  ] = useSelector(state => [\n    selectors.getActiveToolName(state),\n    selectors.getSelectedStamp(state),\n    selectors.getActiveToolGroup(state),\n  ]);\n\n  useEffect(() => {\n    dispatch(actions.setStandardStamps(t));\n    dispatch(actions.setCustomStamps(t));\n    // eslint-disable-next-line\n  }, []);\n\n  useEffect(() => {\n    const isLanguageChanged = prevLanguage !== i18n.language;\n    if (isLanguageChanged) {\n      dispatch(actions.setStandardStamps(t));\n      dispatch(actions.setCustomStamps(t));\n    }\n  });\n\n  const rubberStampTool = core.getTool('AnnotationCreateRubberStamp');\n  const onStampsAdded = () => {\n    dispatch(actions.setStandardStamps(t));\n    dispatch(actions.setCustomStamps(t));\n  };\n\n  useEffect(() => {\n    rubberStampTool.addEventListener('stampsUpdated', onStampsAdded);\n    return () => {\n      rubberStampTool.removeEventListener('stampsUpdated', onStampsAdded);\n    };\n  }, []);\n\n  const [isToolStyleOpen] = useSelector(\n    state => [\n      selectors.isElementOpen(state, 'toolStylePopup'),\n    ],\n  );\n\n  useEffect(() => {\n    async function preselectRubberStamp() {\n      core.setToolMode('AnnotationCreateRubberStamp');\n      const text = t(`rubberStamp.${selectedStamp.annotation['Icon']}`);\n      await rubberStampTool.setRubberStamp(selectedStamp.annotation, text);\n      rubberStampTool.showPreview();\n    }\n\n    if (!isOpen && activeToolGroup === 'rubberStampTools' && selectedStamp) {\n      setIsOpen(true);\n      preselectRubberStamp();\n    } else if (isOpen && activeToolGroup !== 'rubberStampTools') {\n      setIsOpen(false);\n    }\n  });\n\n  return (\n    <div\n      className=\"selected-rubber-stamp-container\"\n    >\n      <div\n        className=\"selected-rubber-stamp\"\n      >\n        {selectedStamp &&\n          <SignatureRowContent\n            imgSrc={selectedStamp.imgSrc}\n            onClick={async () => {\n              core.setToolMode('AnnotationCreateRubberStamp');\n              const text = t(`rubberStamp.${selectedStamp.annotation['Icon']}`);\n              await rubberStampTool.setRubberStamp(selectedStamp.annotation, text);\n              rubberStampTool.showPreview();\n            }}\n            isActive={activeToolName === 'AnnotationCreateRubberStamp'}\n            altText={t('option.toolsOverlay.currentStamp')}\n          />\n        }\n      </div>\n      <ToolsDropdown\n        onClick={() => dispatch(actions.toggleElement('toolStylePopup'))}\n        isActive={isToolStyleOpen}\n      />\n    </div>\n  );\n};\n\nexport default SelectedRubberStamp;","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport core from 'core';\n\nimport './SelectedStamp.scss';\n\nconst SelectedStamp = ({ tReady, toolName }) => {\n  const [t] = useTranslation();\n  useEffect(() => {\n    const selectedStamp = core.getTool(toolName);\n    core.setToolMode(toolName);\n    selectedStamp.showPreview();\n  }, [toolName]);\n\n  return (\n    <div\n      className=\"stamp-overlay\"\n    >\n      <div className=\"no-presets\">\n        {tReady? t('message.toolsOverlayNoPresets') : ''}\n      </div>\n    </div>\n  );\n};\n\nexport default SelectedStamp;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport PresetButton from 'components/ToolButton/PresetButton';\nimport ToolStylePopup from 'components/ToolStylePopup';\nimport SelectedSignatureRow from 'components/SignatureStylePopup/SelectedSignatureRow';\nimport SelectedRubberStamp from 'components/RubberStampOverlay/SelectedRubberStamp';\nimport SelectedStamp from 'src/components/SelectedStamp/SelectedStamp';\nimport { withTranslation } from 'react-i18next';\n\nimport defaultTool from 'constants/defaultTool';\nimport core from 'core';\nimport getOverlayPositionBasedOn from 'helpers/getOverlayPositionBasedOn';\nimport Icon from 'components/Icon';\nimport actions from 'actions';\nimport useMedia from 'hooks/useMedia';\nimport selectors from 'selectors';\nimport { Swipeable } from 'react-swipeable';\nimport classNames from 'classnames';\n\nimport './ToolsOverlay.scss';\n\nclass ToolsOverlay extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    toolButtonObjects: PropTypes.object,\n    activeHeaderItems: PropTypes.arrayOf(PropTypes.object),\n    activeToolGroup: PropTypes.string,\n    closeElements: PropTypes.func.isRequired,\n    setActiveToolGroup: PropTypes.func.isRequired,\n    isInDesktopOnlyMode: PropTypes.bool,\n    showPresets: PropTypes.bool,\n  };\n\n  constructor() {\n    super();\n    this.overlay = React.createRef();\n    this.state = {\n      left: 0,\n      right: 'auto',\n      top: 'auto',\n      isStylingOpen: false,\n      siblingWidth: 0,\n    };\n  }\n\n  componentDidMount() {\n    window.addEventListener('resize', this.handleWindowResize);\n\n    // this component can be opened before mounting to the DOM if users call the setToolMode API\n    // in this case we need to set its position immediately after it's mounted\n    // otherwise its left is 0 instead of left-aligned with the tool group button\n    if (this.props.isOpen) {\n      this.setOverlayPosition();\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    const clickedOnAnotherToolGroupButton =\n      prevProps.activeToolGroup !== this.props.activeToolGroup;\n\n    if (!prevProps.isOpen && this.props.isOpen) {\n      this.props.closeElements([\n        'viewControlsOverlay',\n        'menuOverlay',\n        'toolStylePopup',\n        'signatureOverlay',\n        'zoomOverlay',\n        'redactionOverlay',\n      ]);\n      this.setOverlayPosition();\n    }\n\n    if (clickedOnAnotherToolGroupButton) {\n      this.setOverlayPosition();\n    }\n\n    if (this.props.activeToolGroup === '') {\n      this.props.closeElements(['toolStylePopup']);\n    }\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('resize', this.handleWindowResize);\n  }\n\n  handleWindowResize = () => {\n    this.setOverlayPosition();\n    this.forceUpdate();\n  };\n\n  setOverlayPosition = () => {\n    const { activeToolGroup, activeHeaderItems } = this.props;\n    const element = activeHeaderItems.find(\n      item => item.toolGroup === activeToolGroup,\n    );\n\n    if (element) {\n      this.setState(\n        getOverlayPositionBasedOn(element.dataElement, this.overlay),\n      );\n    }\n  };\n\n  handleCloseClick = () => {\n    const { closeElements } = this.props;\n    closeElements(['toolsOverlay']);\n  };\n\n  render() {\n    const {\n      t,\n      tReady,\n      isDisabled,\n      isOpen,\n      toolNames,\n      activeToolGroup,\n      isToolStyleOpen,\n      isDesktop,\n      isMobile,\n      isInDesktopOnlyMode,\n      showPresets,\n    } = this.props;\n\n    const isVisible = (isOpen || true) && !isDisabled;\n    if (!isVisible) {\n      return null;\n    }\n\n    const toolsWithNoStylingPresets = [\n      'stampTools',\n      'cropTools',\n      'fileAttachmentTools',\n      'radioButtonFieldTools',\n      'checkBoxFieldTools',\n      'contentEditTools'\n    ];\n    const noPresets = !activeToolGroup || toolsWithNoStylingPresets.includes(activeToolGroup);\n    let Component = (\n      <div\n        className=\"tool-buttons-container\"\n      >\n        {toolNames.map((toolName, i) => (\n          <PresetButton\n            key={`${toolName}-${i}`}\n            toolName={toolName}\n            isToolStyleOpen={isToolStyleOpen}\n          />\n        ))}\n      </div>\n    );\n\n    if (activeToolGroup === 'signatureTools') {\n      Component = (\n        <SelectedSignatureRow t={t} />\n      );\n    } else if (activeToolGroup === 'rubberStampTools') {\n      Component = (\n        <SelectedRubberStamp />\n      );\n    } else if (activeToolGroup === 'model3DTools') {\n      Component = (\n        <div className=\"model-3D-btn add-btn\" onClick={() => this.props.openElement('Model3DModal')}>\n          {t('Model3D.add3D')}\n        </div>\n      );\n    } else if (noPresets || !showPresets) {\n      Component = (\n        <div className=\"no-presets\">\n          {tReady ? t('message.toolsOverlayNoPresets') : ''}\n        </div>\n      );\n    } else if (['crossStampTools', 'checkStampTools', 'dotStampTools'].includes(activeToolGroup)) {\n      Component = (\n        <SelectedStamp tReady={tReady} toolName={toolNames[0]}/>\n      );\n    }\n\n    if (noPresets && (isMobile && !isInDesktopOnlyMode)) {\n      return null;\n    }\n\n    return (\n      <Swipeable\n        onSwipedUp={() => this.props.closeElements(['toolStylePopup'])}\n        onSwipedDown={() => this.props.closeElements(['toolStylePopup'])}\n        preventDefaultTouchmoveEvent\n        className={classNames({\n          ToolsOverlayContainer: true\n        })}\n      >\n        <div\n          className={classNames({\n            Overlay: true,\n            ToolsOverlay: true,\n            open: isOpen,\n            shadow: isToolStyleOpen || (isMobile && !isInDesktopOnlyMode)\n          })}\n          ref={this.overlay}\n          data-element=\"toolsOverlay\"\n        >\n          <div\n            className={classNames({\n              \"tools-container\": true,\n              \"is-styling-open\": isToolStyleOpen\n            })}\n          >\n            {Component}\n            {(isMobile && !isInDesktopOnlyMode) &&\n              <button\n                className=\"close-icon-container\"\n                onClick={() => {\n                  this.props.closeElements(['toolsOverlay']);\n                  core.setToolMode(defaultTool);\n                  this.props.setActiveToolGroup('');\n                }}\n              >\n                <Icon\n                  glyph=\"ic_close_black_24px\"\n                  className=\"close-icon\"\n                />\n              </button>}\n          </div>\n          {isToolStyleOpen &&\n            <ToolStylePopup />}\n        </div>\n      </Swipeable>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  isDisabled: selectors.isElementDisabled(state, 'toolsOverlay'),\n  isOpen: selectors.isElementOpen(state, 'toolsOverlay'),\n  isToolStyleOpen: selectors.isElementOpen(state, 'toolStylePopup'),\n  toolNames: selectors.getActiveToolNamesForActiveToolGroup(state),\n  activeHeaderItems: selectors.getToolsHeaderItems(state),\n  activeToolGroup: selectors.getActiveToolGroup(state),\n  activeToolName: selectors.getActiveToolName(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state),\n  showPresets: selectors.shouldShowPresets(state),\n});\n\nconst mapDispatchToProps = {\n  toggleElement: actions.toggleElement,\n  openElement: actions.openElement,\n  closeElements: actions.closeElements,\n  setActiveToolGroup: actions.setActiveToolGroup,\n};\n\nconst ConnectedToolsOverlay = connect(mapStateToProps, mapDispatchToProps)(withTranslation()(ToolsOverlay));\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const isTabletAndMobile = useMedia(\n    // Media queries\n    ['(max-width: 900px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const isDesktop = useMedia(\n    // Media queries\n    ['(min-width: 901px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return (\n    <ConnectedToolsOverlay {...props} isMobile={isMobile} isTabletAndMobile={isTabletAndMobile} isDesktop={isDesktop} />\n  );\n};\n","import ToolsOverlay from './ToolsOverlay';\n\nexport default ToolsOverlay;","export default arg => {\n  let zoomLevel;\n\n  if (typeof arg === 'string') {\n    zoomLevel = Number.parseFloat(arg) / 100;\n\n    const endsWithPercentage = arg.indexOf('%') === arg.length - 1;\n    if (endsWithPercentage) {\n      console.warn(`Zoom level in string format will be treated as percentage, ${arg} will be converted to ${zoomLevel}`);\n    }\n  } else if (typeof arg === 'number') {\n    zoomLevel = arg;\n  }\n\n  return zoomLevel;\n};","import actions from 'actions';\nimport zoomFactors, { defaultZoomList } from 'constants/zoomFactors';\nimport getActualZoomLevel from './getActualZoomLevel';\n\nexport default dispatch => zoomLevel => {\n  const maxZoom = getActualZoomLevel(zoomLevel);\n\n  if (maxZoom) {\n    const minZoom = zoomFactors.getMinZoomLevel();\n    const zoomList = defaultZoomList.filter(zoom => zoom <= maxZoom && zoom >= minZoom);\n    zoomFactors.setMaxZoomLevel(maxZoom);\n    dispatch(actions.setZoomList(zoomList));\n    window.Core.Tools.MarqueeZoomTool.setMaxZoomLevel(maxZoom);\n  } else {\n    console.warn('Type of the argument for setMaxZoomLevel must be either string or number');\n  }\n};\n","import core from 'core';\n\n// gap between the annotation selection box and the popup element\nconst gap = 17;\n\nexport const getAnnotationPopupPositionBasedOn = (annotation, popup) => {\n  const { left, top } = calcAnnotationPopupPosition(\n    getAnnotationPosition(annotation),\n    getPopupDimensions(popup)\n  );\n\n  return { left: Math.max(left, 4), top };\n};\n\nexport const getTextPopupPositionBasedOn = (allQuads, popup) => {\n  const { left, top } = calcTextPopupPosition(\n    getSelectedTextPosition(allQuads),\n    getPopupDimensions(popup)\n  );\n\n  return { left, top };\n};\n\nexport const getAnnotationPosition = annotation => {\n  const { left, top, right, bottom } = getAnnotationPageCoordinates(annotation);\n\n  const pageNumber = annotation.getPageNumber();\n  const topLeft = convertPageCoordinatesToWindowCoordinates(left, top, pageNumber);\n  const bottomRight = convertPageCoordinatesToWindowCoordinates(right, bottom, pageNumber);\n\n  if (annotation['NoZoom']) {\n    const isNote = annotation instanceof window.Annotations.StickyAnnotation;\n    const rect = annotation.getRect();\n    const width = isNote ? window.Annotations.StickyAnnotation['SIZE'] : rect.getWidth();\n    const height = isNote ? window.Annotations.StickyAnnotation['SIZE'] : rect.getHeight();\n    const rotation = core.getCompleteRotation(annotation.PageNumber);\n    if (rotation === 0) {\n      bottomRight.x = topLeft.x + width;\n      bottomRight.y = topLeft.y + height;\n      if (isNote) {\n        bottomRight.x += width * 0.2;\n      }\n    } else {\n      if (isNote) {\n        bottomRight.x = topLeft.x + width * 1.2;\n        bottomRight.y = topLeft.y + height;\n      } else {\n        if (rotation === 1) {\n          topLeft.x = bottomRight.x - height;\n          bottomRight.y = topLeft.y + width;\n        } else if (rotation === 2) {\n          topLeft.x = bottomRight.x - width;\n          topLeft.y = bottomRight.y - height;\n        } else if (rotation === 3) {\n          topLeft.y = bottomRight.y - width;\n          bottomRight.x = topLeft.x + height;\n        }\n      }\n    }\n  }\n\n  return { topLeft, bottomRight };\n};\n\nconst getAnnotationPageCoordinates = annotation => {\n  const rect = annotation.getRect();\n  let { x1: left, y1: top, x2: right, y2: bottom } = rect;\n\n  const isNote = annotation instanceof window.Annotations.StickyAnnotation;\n  const noteAdjustment = window.Annotations.StickyAnnotation['SIZE'];\n\n  const rotation = core.getCompleteRotation(annotation.PageNumber);\n  if (rotation === 1) {\n    [top, bottom] = [bottom, top];\n    if (isNote) {\n      top -= noteAdjustment;\n      bottom -= noteAdjustment;\n    }\n  } else if (rotation === 2) {\n    [left, right] = [right, left];\n    [top, bottom] = [bottom, top];\n    if (isNote) {\n      top -= noteAdjustment;\n      bottom -= noteAdjustment;\n      left -= noteAdjustment;\n      right -= noteAdjustment;\n    }\n  } else if (rotation === 3) {\n    [left, right] = [right, left];\n    if (isNote) {\n      left -= noteAdjustment;\n      right -= noteAdjustment;\n    }\n  }\n\n  return { left, top, right, bottom };\n};\n\nconst getSelectedTextPosition = allQuads => {\n  const { startPageNumber, endPageNumber } = getSelectedTextPageNumber(allQuads);\n  const { left, right, top, bottom } = getSelectedTextPageCoordinates(\n    allQuads,\n    startPageNumber,\n    endPageNumber\n  );\n\n  let topLeft = convertPageCoordinatesToWindowCoordinates(left, top, startPageNumber);\n  let bottomRight = convertPageCoordinatesToWindowCoordinates(right, bottom, endPageNumber);\n\n  if (core.getRotation() > 1) {\n    const tmp = topLeft;\n    topLeft = bottomRight;\n    bottomRight = tmp;\n  }\n\n  return { topLeft, bottomRight };\n};\n\nconst getSelectedTextPageNumber = allQuads => {\n  const pageNumbers = Object.keys(allQuads).map(pageNumber => Number(pageNumber));\n  // Object.keys returns keys in arbitrary order so use Math.min/max instead of index to access array\n  const startPageNumber = Math.min(...pageNumbers);\n  const endPageNumber = Math.max(...pageNumbers);\n\n  return { startPageNumber, endPageNumber };\n};\n\nconst getSelectedTextPageCoordinates = (allQuads, startPageNumber, endPageNumber) => {\n  const getTopAndBottom = () => {\n    const firstQuad = allQuads[startPageNumber][0];\n    const top = firstQuad.y3;\n\n    const endPageQuads = allQuads[endPageNumber];\n    const lastQuad = endPageQuads[endPageQuads.length - 1];\n    const bottom = lastQuad.y1;\n\n    return { top, bottom };\n  };\n\n  const getLeftAndRight = () => {\n    let left;\n    let right;\n\n    Object.keys(allQuads).forEach(pageNumber => {\n      allQuads[pageNumber].forEach(quad => {\n        const { x1: quadLeft, x2: quadRight } = quad;\n\n        if (!left || quadLeft < left) {\n          left = quadLeft;\n        }\n        if (!right || quadRight > right) {\n          right = quadRight;\n        }\n      });\n    });\n\n    return { left, right };\n  };\n\n  const { top, bottom } = getTopAndBottom();\n  const { left, right } = getLeftAndRight();\n\n  return { left, top, bottom, right };\n};\n\nconst convertPageCoordinatesToWindowCoordinates = (x, y, pageNumber) => {\n  const displayMode = core.getDisplayModeObject();\n\n  return displayMode.pageToWindow({ x, y }, pageNumber);\n};\n\nconst getPopupDimensions = popup => {\n  const { width, height } = popup.current.getBoundingClientRect();\n\n  return { width, height };\n};\n\nconst calcAnnotationPopupPosition = (annotationPosition, popupDimension) => {\n  const top = calcPopupTop(annotationPosition, popupDimension);\n  const left = calcPopupLeft(annotationPosition, popupDimension);\n\n  return { left, top };\n};\n\nconst calcTextPopupPosition = (selectedTextPosition, popupDimension) => {\n  const top = calcPopupTop(selectedTextPosition, popupDimension);\n  const left = calcPopupLeft(selectedTextPosition, popupDimension);\n\n  return { left, top };\n};\n\nexport const calcPopupLeft = ({ topLeft, bottomRight }, { width }) => {\n  const { scrollLeft } = core.getScrollViewElement();\n  const center = (topLeft.x + bottomRight.x) / 2 - scrollLeft;\n  let left = center - width / 2;\n\n  if (left < 0) {\n    left = 0;\n  } else if (left + width > window.innerWidth) {\n    left = window.innerWidth - width;\n  }\n\n  return Math.round(left);\n};\n\n/**\n * @ignore\n * @param {number} annotationPosition The position of the annotation (topLeft, bottomRight)\n * @param {number} popupDimension The deminition of the popup (width, height)\n * this is specifically used for the annotation popup to keep the popup on the same side of the annotation.\n */\nexport const calcPopupTop = ({ topLeft, bottomRight }, { height }) => {\n  const padding = 5;\n  const scrollContainer = core.getScrollViewElement();\n  const boundingBox = scrollContainer.getBoundingClientRect();\n  const visibleRegion = {\n    left: boundingBox.left + scrollContainer.scrollLeft,\n    right: boundingBox.left + scrollContainer.scrollLeft + boundingBox.width,\n    top: boundingBox.top + scrollContainer.scrollTop,\n    bottom: boundingBox.top + scrollContainer.scrollTop + boundingBox.height,\n  };\n\n  const annotTop = topLeft.y - gap;\n  const annotBottom = bottomRight.y + gap;\n\n  let top;\n  if (annotBottom + height < visibleRegion.bottom) {\n    top = annotBottom;\n  } else if (annotTop - height > visibleRegion.top) {\n    top = annotTop - height;\n  } else {\n    // if there is no enough room to fit the style popup in either way (top or bottom)\n    // We want to place it on the side that has more space\n    if (annotTop > visibleRegion.bottom - annotBottom) { // if top has more space, place it to top\n      top = visibleRegion.top + padding;\n    } else { // otherwise, place it to bottom\n      top = visibleRegion.bottom - padding - height;\n    }\n  }\n\n  return Math.round(top - scrollContainer.scrollTop);\n};\n\nexport const getReaderModePopupPositionBasedOn = (annotPosition, popup, viewer) => {\n  const { width, height } = popup.current.getBoundingClientRect();\n  const viewerRect = viewer.current.getBoundingClientRect();\n\n  let top = 5;\n  const annotTop = annotPosition.top - gap;\n  const annotBottom = annotPosition.bottom + gap;\n  if (annotBottom + height < viewerRect.height) {\n    top = annotBottom;\n  } else if (annotTop > height) {\n    top = annotTop - height;\n  }\n  top = Math.round(top + viewerRect.top);\n\n  const paddingLeft = parseFloat(viewer.current.firstChild.style.paddingLeft);\n  const center = (annotPosition.left + annotPosition.right) / 2 + paddingLeft;\n  let left = center - width / 2;\n  if (left < 0) {\n    left = 0;\n  } else if (left + width > viewerRect.width) {\n    left = viewerRect.width - width;\n  }\n  left = Math.round(left + viewerRect.left);\n\n  return { top, left };\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport StylePopup from 'components/StylePopup';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport Draggable from 'react-draggable';\nimport { getReaderModePopupPositionBasedOn } from 'helpers/getPopupPosition';\nimport { getOpenedWarningModal, getOpenedColorPicker } from 'helpers/getElements';\n\nimport './ReaderModeStylePopup.scss';\n\nconst ReaderModeStylePopup = (props) => {\n  const [position, setPosition] = useState({});\n  const popupRef = useRef(null);\n\n  useEffect(() => {\n    setPosition(getReaderModePopupPositionBasedOn(props.annotPosition, popupRef, props.viewer));\n  }, []);\n\n  useOnClickOutside(popupRef, () => {\n    const warningModal = getOpenedWarningModal();\n    const colorPicker = getOpenedColorPicker();\n    if (!warningModal && !colorPicker) {\n      props.onClose();\n    }\n  });\n\n  return (\n    <Draggable cancel=\".Button, .cell, .sliders-container svg, select\">\n      <div\n        className=\"ReaderModeStylePopup\"\n        style={position}\n        ref={popupRef}\n      >\n        <StylePopup\n          {...props}\n          disableSeparator\n        />\n      </div>\n    </Draggable>\n  );\n};\n\nexport default ReaderModeStylePopup;\n","import ReaderModeStylePopup from './ReaderModeStylePopup';\n\nexport default ReaderModeStylePopup;","import React from 'react';\nimport core from 'core';\nimport PropTypes from 'prop-types';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport zoomFactors from 'constants/zoomFactors';\nimport { connect } from 'react-redux';\nimport setMaxZoomLevel from 'helpers/setMaxZoomLevel';\nimport ReaderModeStylePopup from 'components/ReaderModeStylePopup';\n\nclass ReaderModeViewer extends React.PureComponent {\n  static propTypes = {\n    containerWidth: PropTypes.number.isRequired,\n    enableFadePageNavigation: PropTypes.bool.isRequired\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.viewer = React.createRef();\n    this.originalMaxZoom = zoomFactors.getMaxZoomLevel();\n    this.setAnnotStyleCb = undefined;\n    this.doneSetAnnotColorCb = undefined;\n    this.originalEnableFadePageNavigation = props.enableFadePageNavigation;\n\n    this.state = {\n      colorMapKey: undefined,\n      showStylePopup: false,\n      style: undefined,\n      annotPosition: undefined\n    };\n  }\n\n  componentDidMount() {\n    if (this.props.containerWidth > 0) {\n      this.updateMaxZoom();\n    }\n    this.props.dispatch(actions.disableFadePageNavigationComponent());\n\n    this.renderDocument();\n\n    core.addEventListener('documentLoaded', this.renderDocument);\n    core.addEventListener('pageNumberUpdated', this.goToPage);\n    core.addEventListener('zoomUpdated', this.setZoom);\n    core.addEventListener('toolUpdated', this.setAddAnnotConfig);\n    core.addEventListener('toolModeUpdated', this.setAddAnnotConfig);\n  }\n\n  componentWillUnmount() {\n    core.removeEventListener('documentLoaded', this.renderDocument);\n    core.removeEventListener('pageNumberUpdated', this.goToPage);\n    core.removeEventListener('zoomUpdated', this.setZoom);\n    core.removeEventListener('toolUpdated', this.setAddAnnotConfig);\n    core.removeEventListener('toolModeUpdated', this.setAddAnnotConfig);\n\n    this.wvReadingMode?.unmount();\n\n    setMaxZoomLevel(this.props.dispatch)(this.originalMaxZoom);\n    if (this.originalEnableFadePageNavigation) {\n      this.props.dispatch(actions.enableFadePageNavigationComponent());\n    } else {\n      this.props.dispatch(actions.disableFadePageNavigationComponent());\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.containerWidth > 0 && prevProps.containerWidth !== this.props.containerWidth) {\n      this.updateMaxZoom();\n    }\n  }\n\n  render() {\n    return (\n      <>\n        <div\n          className=\"reader-mode-viewer\"\n          ref={this.viewer}\n          style={{ height: \"100%\", width: \"100%\" }}\n        >\n        </div>\n        {this.state.showStylePopup && (\n          <ReaderModeStylePopup\n            colorMapKey={this.state.colorMapKey}\n            style={this.state.style}\n            onStyleChange={this.handleColorChange}\n            onSliderChange={this.handleOpacityChange}\n            onClose={this.handleStylePopupClose}\n            annotPosition={this.state.annotPosition}\n            viewer={this.viewer}\n          />\n        )}\n      </>\n    );\n  }\n\n  renderDocument = () => {\n    import('@pdftron/webviewer-reading-mode').then(({ default: WebViewerReadingMode }) => {\n      if (!this.wvReadingMode) {\n        this.wvReadingMode = WebViewerReadingMode.initialize(PDFNet);\n      } else {\n        this.wvReadingMode.unmount();\n      }\n\n      this.wvReadingMode.render(\n        core.getDocumentViewer().getDocument().getPDFDoc(),\n        this.viewer.current,\n        {\n          pageNumberUpdateHandler: core.setCurrentPage,\n          pageNum: core.getCurrentPage(),\n          editStyleHandler: this.onEditStyle\n        }\n      );\n      this.setZoom(core.getZoom());\n      this.setAddAnnotConfig();\n    });\n  }\n\n  goToPage = (pageNum) => {\n    this.wvReadingMode?.goToPage(pageNum);\n  }\n\n  setZoom = (zoom) => {\n    if (!this.wvReadingMode) return;\n    this.wvReadingMode.setZoom(zoom);\n    const pageWidth = core.getDocumentViewer().getPageWidth(1);\n    const readerModeElement = this.viewer.current.firstChild;\n    if (pageWidth && readerModeElement) {\n      readerModeElement.style.padding = `0 ${(this.props.containerWidth - pageWidth * zoom) / 2}px`;\n    }\n  }\n\n  updateMaxZoom() {\n    // Calling the FitWidth function to get the calculated fit width zoom level for normal page rendering\n    const maxZoomLevel = core.getDocumentViewer().FitMode.FitWidth.call(core.getDocumentViewer());\n    setMaxZoomLevel(this.props.dispatch)(maxZoomLevel);\n    if (maxZoomLevel < core.getZoom()) {\n      core.fitToWidth();\n    }\n    this.setZoom(core.getZoom());\n  }\n\n  getAnnotTypeFromToolMode = (toolMode) => {\n    if (toolMode instanceof window.Core.Tools.TextHighlightCreateTool) {\n      return WebViewerReadingMode.AnnotationType.Highlight;\n    } else if (toolMode instanceof window.Core.Tools.TextUnderlineCreateTool) {\n      return WebViewerReadingMode.AnnotationType.Underline;\n    } else if (toolMode instanceof window.Core.Tools.TextStrikeoutCreateTool) {\n      return WebViewerReadingMode.AnnotationType.Strikeout;\n    } else if (toolMode instanceof window.Core.Tools.TextSquigglyCreateTool) {\n      return WebViewerReadingMode.AnnotationType.Squiggly;\n    }\n    return undefined;\n  }\n\n  setAddAnnotConfig = () => {\n    if (!this.wvReadingMode) return;\n    const toolMode = core.getToolMode();\n    const annotType = this.getAnnotTypeFromToolMode(toolMode);\n    if (annotType) {\n      this.wvReadingMode.setAddAnnotConfig({\n        type: annotType,\n        color: toolMode['defaults']['StrokeColor'].toHexString(),\n        opacity: toolMode['defaults']['Opacity']\n      });\n    } else {\n      this.wvReadingMode.setAddAnnotConfig({\n        type: undefined\n      });\n    }\n  }\n\n  onEditStyle = ({ color, opacity, type, position }, setAnnotStyleCb, doneSetAnnotColorCb) => {\n    this.setAnnotStyleCb = setAnnotStyleCb;\n    this.doneSetAnnotColorCb = doneSetAnnotColorCb;\n    this.setState({\n      colorMapKey: this.getColorMapKey(type),\n      style: {\n        StrokeColor: new window.Core.Annotations.Color(color),\n        Opacity: opacity\n      },\n      showStylePopup: true,\n      annotPosition: position\n    });\n  }\n\n  getColorMapKey(annotType) {\n    if (annotType === WebViewerReadingMode.AnnotationType.Highlight) {\n      return 'highlight';\n    } else if (annotType === WebViewerReadingMode.AnnotationType.Underline) {\n      return 'underline';\n    } else if (annotType === WebViewerReadingMode.AnnotationType.Strikeout) {\n      return 'strikeout';\n    } else if (annotType === WebViewerReadingMode.AnnotationType.Squiggly) {\n      return 'squiggly';\n    }\n    return \"\";\n  }\n\n  handleColorChange = (property, color) => {\n    if (property === 'StrokeColor' && this.setAnnotStyleCb) {\n      this.setAnnotStyleCb({\n        color: color.toHexString(),\n        opacity: this.state.style.Opacity\n      });\n      this.setState({\n        style: {\n          ...this.state.style,\n          StrokeColor: color\n        }\n      });\n    }\n  }\n\n  handleOpacityChange = (property, opacity) => {\n    if (property === 'Opacity' && this.setAnnotStyleCb) {\n      this.setAnnotStyleCb({\n        color: this.state.style.StrokeColor.toHexString(),\n        opacity\n      });\n      this.setState({\n        style: {\n          ...this.state.style,\n          Opacity: opacity\n        }\n      });\n    }\n  }\n\n  handleStylePopupClose = () => {\n    this.setState({\n      showStylePopup: false\n    });\n    this.doneSetAnnotColorCb();\n  }\n}\n\nconst mapStateToProps = state => ({\n  containerWidth: selectors.getDocumentContainerWidth(state),\n  enableFadePageNavigation: selectors.shouldFadePageNavigationComponent(state)\n});\n\nexport default connect(mapStateToProps)(ReaderModeViewer);\n","import ReaderModeViewer from './ReaderModeViewer';\n\nexport default ReaderModeViewer;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport './Tab.scss';\nimport Button from 'components/Button';\nimport classNames from 'classnames';\n\nconst propTypes = {\n  tab: PropTypes.any.isRequired,\n  isActive: PropTypes.bool,\n  isToLeftOfActive: PropTypes.bool,\n  closeTab: PropTypes.func,\n  setActive: PropTypes.func,\n  onDragStart: PropTypes.func,\n  onDragOver: PropTypes.func,\n  onDragLeave: PropTypes.func,\n  id: PropTypes.string,\n};\n\nconst Tab = ({ tab, setActive, onDragLeave, onDragStart, onDragOver, isActive, closeTab, id, isToLeftOfActive }) => {\n  const [disabled, setDisabled] = useState(tab?.disabled);\n  const removeExtension = true;\n  const name = removeExtension ? tab.options.filename.split('.')[0] : tab.options.filename;\n\n  useEffect(() => {\n    if (tab && tab.disabled !== disabled) {\n      setDisabled(tab.disabled);\n    }\n  }, [tab]);\n\n  return (\n    <div className={'draggable-tab'}\n      onDragOver={onDragOver} onDragStart={onDragStart} onDragLeave={onDragLeave} draggable id={id}\n    >\n      <div className={classNames({ Tab: true, active: isActive })}>\n        <div className={classNames({ 'file-text': true, disabled })} onClick={setActive}>\n          <p>{name}</p>\n        </div>\n        <Button\n          img=\"icon-close\"\n          title=\"action.close\"\n          onClick={closeTab}\n        />\n        {!isActive && !isToLeftOfActive && <div className=\"divider\"/>}\n      </div>\n    </div>\n  );\n};\n\nTab.propTypes = propTypes;\n\nexport default Tab;","import React from 'react';\nimport './HoverTab.scss';\nimport Icon from \"components/Icon\";\n\nconst HoverTab = ({ onDragOver, onDragLeave }) => {\n  return (\n    <div className=\"HoverTab\" onDragOver={onDragOver} onDragLeave={onDragLeave}>\n      <Icon glyph=\"icon-download\" />\n    </div>\n  );\n};\n\nexport default HoverTab;","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport './FileInputPanel.scss';\nimport Dropdown from 'components/Dropdown';\n\nconst FileInputPanel = ({ defaultValue, onFileSelect, acceptFormats, extension, setExtension }) => {\n  const [t] = useTranslation();\n  const [value, setValue] = useState(defaultValue || '');\n\n  const onChange = e => {\n    setValue(e.target.value);\n    onFileSelect(e.target.value);\n  };\n\n  useEffect(() => {\n    if (!defaultValue && defaultValue !== value) {\n      setValue('');\n    }\n  });\n\n  return (\n    <div className=\"FileInputPanel\">\n      <div className=\"url-input-header\">{t('link.url')}</div>\n      <div className=\"url-input\">\n        <input type=\"text\"\n          style={{ width: '100%', height: 32, paddingLeft: 8, fontSize: 13, boxSizing: 'border-box' }}\n          value={value}\n          onChange={onChange}\n          placeholder={t('link.urlLink')}\n        />\n      </div>\n      { (!setExtension) ? null :\n        <div className=\"extension-dropdown\">\n          <Dropdown\n            disabled={!value}\n            placeholder={t('tool.select')}\n            onClick={e => e.stopPropagation()}\n            items={acceptFormats}\n            onClickItem={setExtension}\n            currentSelectionKey={extension}\n          />\n          <p>{t('OpenFile.extension')}</p>\n        </div>\n      }\n    </div>\n  );\n};\n\nexport default FileInputPanel;","import FileInputPanel from './FileInputPanel';\n\nexport default FileInputPanel;","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport core from 'core';\nimport './FilePickerPanel.scss';\n\nconst FilePickerPanel = ({ onFileProcessed }) => {\n  const [t] = useTranslation();\n  const [isDragging, setIsDragging] = useState(false);\n  const [errorMessage, setErrorMessage] = useState('');\n  const acceptFormats = window.Core.SupportedFileFormats.CLIENT;\n\n  const onClick = () => {\n    document.getElementById('file-picker-two').click();\n  };\n\n  const onKeyDown = (event) => {\n    if (event.key === 'Enter') {\n      document.getElementById('file-picker-two').click();\n    }\n  }\n\n  const onChange = (e) => {\n    const files = e.target.files;\n    if (files.length) {\n      onFileProcessed(files[0]);\n    }\n  };\n\n  const handleDragEnter = e => {\n    e.preventDefault();\n    setIsDragging(true);\n  };\n\n  const handleDragOver = e => {\n    e.preventDefault();\n  };\n\n  const handleDragLeave = e => {\n    e.preventDefault();\n\n    if (!e.target.parentNode.contains(e.relatedTarget)) {\n      setIsDragging(false);\n    }\n  };\n\n  const handleDragExit = e => {\n    e.preventDefault();\n    setIsDragging(false);\n  };\n\n  const handleFileDrop = async (e) => {\n    e.preventDefault();\n    setIsDragging(false);\n    const { files } = e.dataTransfer;\n\n    let processedFile = files[0];\n\n    if (files.length > 1) {\n      processedFile = await mergeDocuments(files);\n    }\n\n    onFileProcessed(processedFile);\n  };\n\n  // recursive function with promise for merging files\n  // could maybe live in a helper file\n  async function mergeDocuments(sourceArray, nextCount = 1, document = null) {\n    return new Promise(async function (resolve, reject) {\n      if (!document) {\n        document = await core.createDocument(sourceArray[0]);\n      }\n      const newDocument = await core.createDocument(sourceArray[nextCount]);\n      const newDocumentPageCount = newDocument.getPageCount();\n      const pages = Array.from({ length: newDocumentPageCount }, (v, k) => k + 1);\n      const pageIndexToInsert = document.getPageCount() + 1;\n\n      document.insertPages(newDocument, pages, pageIndexToInsert)\n        .then(result => resolve({\n          next: sourceArray.length - 1 > nextCount,\n          document: document,\n        })\n        );\n    }).then(response => {\n      return response.next ?\n        mergeDocuments(sourceArray, nextCount + 1, response.document) :\n        response.document;\n    }).catch(error => {\n      setErrorMessage(error)\n    });\n  }\n\n  return (\n    <React.Fragment>\n      <div className=\"image-signature\">\n        <div\n          className=\"image-signature-upload-container\"\n          onDragEnter={handleDragEnter}\n          onDragLeave={handleDragLeave}\n          onDragOver={handleDragOver}\n          onDrop={handleFileDrop}\n          onDragExit={handleDragExit}\n        >\n          <div className=\"FilePickerPanel\">\n            <div className=\"md-row\">\n              {t('option.pageReplacementModal.dragAndDrop')}\n            </div>\n            <div className=\"md-row label-separator\">\n              {t('option.pageReplacementModal.or')}\n            </div>\n            <div\n              className=\"md-row modal-btn-file\"\n              tabIndex=\"0\"\n              onKeyDown={onKeyDown}\n              onClick={onClick}>{t('option.pageReplacementModal.chooseFile')}\n              <input\n                id=\"file-picker-two\"\n                style={{ display: 'none' }}\n                type=\"file\"\n                accept={acceptFormats.map(format => `.${format}`,).join(', ')}\n                onChange={onChange}\n              />\n            </div>\n          </div>\n          {isDragging && <div className=\"image-signature-background\" />}\n          {errorMessage && (\n            <div className=\"image-signature-error\">{errorMessage}</div>\n          )}\n        </div>\n      </div>\n    </React.Fragment>\n  );\n};\n\nexport default FilePickerPanel;","import FilePickerPanel from './FilePickerPanel';\n\nexport default FilePickerPanel;","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport TabManager from 'helpers/TabManager';\nimport classNames from 'classnames';\nimport getHashParameters from 'helpers/getHashParameters';\nimport { Swipeable } from 'react-swipeable';\nimport Button from 'components/Button';\nimport { useTranslation } from 'react-i18next';\nimport { Tabs, Tab, TabPanel } from 'components/Tabs';\nimport FileInputPanel from '../../PageReplacementModal/FileInputPanel';\nimport FilePickerPanel from '../../PageReplacementModal/FilePickerPanel';\nimport '../../PageReplacementModal/PageReplacementModal.scss';\nimport './FileModal.scss';\n\nconst OpenFileModal = ({ isOpen, tabManager }) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const [src, setSrc] = useState('');\n  const [extension, setExtension] = useState('pdf');\n  const [filename, setFilename] = useState();\n  const [size, setSize] = useState();\n  const [error, setError] = useState({ 'fileError': '', 'urlError': '', 'extensionError': '' });\n\n  const closeModal = () => {\n    dispatch(actions.closeElement('OpenFileModal'));\n    setSrc('');\n    setError({ 'fileError': '', 'urlError': '' });\n    setFilename(null);\n    setExtension('pdf');\n    setSize(null);\n  };\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElements(['printModal', 'loadingModal', 'progressModal', 'errorModal', 'Model3DModal']));\n    } else {\n      setSrc('');\n      setError({ 'fileError': '', 'urlError': '' });\n      setFilename(null);\n      setExtension(null);\n      setSize(null);\n    }\n  }, [dispatch, isOpen]);\n\n  const handleAddTab = async (source, _extension, _filename, _size) => {\n    if (!source) {\n      return setError({ 'urlError': 'URL or File must be provided' });\n    }\n    if (!_extension || acceptFormats.indexOf(_extension) === -1) {\n      return setError({ 'extensionError': 'Extension must be provided' });\n    }\n    const useDb = !_size || TabManager.MAX_FILE_SIZE > _size;\n    await tabManager.addTab(source, {\n      extension: _extension,\n      filename: _filename,\n      setActive: true,\n      saveCurrentActiveTabState: true,\n      useDB: useDb\n    });\n    closeModal();\n  };\n\n  const modalClass = classNames({\n    Modal: true,\n    FileModal: true,\n    open: isOpen,\n    closed: !isOpen,\n  });\n\n  const extensionRegExp = /(?:\\.([^.?]+))?$/;\n\n  const handleFileChange = async file => {\n    setError(null);\n    if (!file) {\n      return;\n    }\n    if (file instanceof window.Core.Document) {\n      await handleAddTab(file, file.type, file.filename);\n    }\n    const ext = window.Core.mimeTypeToExtension[file.type] || extensionRegExp.exec(file.name)[1] || null;\n    const filename = file.name;\n    const size = file.size;\n    const src = URL.createObjectURL(file);\n    setSrc(src);\n    setFilename(filename);\n    setExtension(ext);\n    setSize(size);\n    await handleAddTab(file, ext, filename, size);\n  };\n\n  const handleURLChange = async url => {\n    setError(null);\n    setSrc(url.trim());\n    const filename = url.substring(url.lastIndexOf('/')+1).split('?')[0];\n    setFilename(filename);\n    setExtension(extensionRegExp.exec(filename)[1]);\n    setSize(null);\n  };\n\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  let acceptFormats = wvServer ? window.Core.SupportedFileFormats.SERVER : window.Core.SupportedFileFormats.CLIENT;\n  acceptFormats = acceptFormats.reduce((uniqueArr, curr) => {\n    if (uniqueArr.indexOf(curr) === -1) {\n      uniqueArr.push(curr);\n    }\n    return uniqueArr;\n  }, []);\n\n  return (\n    <Swipeable onSwipedUp={closeModal} onSwipedDown={closeModal}>\n      <div className={modalClass} data-element=\"OpenFileModal\" onMouseDown={closeModal}>\n        <div className=\"container\" onMouseDown={e => e.stopPropagation()}>\n\n          <Tabs className=\"page-replacement-tabs\" id=\"pageReplacementModal\">\n            <div className=\"header-container\">\n              <div className=\"header\">\n                <p>{t('OpenFile.enterUrlOrChooseFile')}</p>\n                <Button\n                  img={'icon-close'}\n                  onClick={closeModal}\n                  dataElement={'UNKNOWN'}\n                />\n              </div>\n\n              <div className=\"tab-list\">\n                <Tab dataElement=\"urlInputPanelButton\">\n                  <button className=\"tab-options-button\">\n                    {t('link.url')}\n                  </button>\n                </Tab>\n                <div className=\"tab-options-divider\" />\n                <Tab dataElement=\"filePickerPanelButton\">\n                  <button className=\"tab-options-button\">\n                    {t('option.pageReplacementModal.localFile')}\n                  </button>\n                </Tab>\n              </div>\n            </div>\n            <div className=\"page-replacement-divider\" />\n            <TabPanel dataElement=\"urlInputPanel\">\n              <div className=\"panel-body\">\n                <FileInputPanel\n                  onFileSelect={url => {\n                    handleURLChange(url);\n                  }}\n                  acceptFormats={acceptFormats}\n                  extension={extension}\n                  setExtension={setExtension}\n                  defaultValue={src}\n                />\n              </div>\n            </TabPanel>\n            <TabPanel dataElement=\"filePickerPanel\">\n              <div className=\"panel-body\">\n                <FilePickerPanel\n                  onFileProcessed={file => handleFileChange(file)}\n                />\n              </div>\n            </TabPanel>\n          </Tabs>\n          <div className=\"page-replacement-divider\" />\n          <div className=\"footer\">\n            {error?.urlError && <p className=\"error\">* {error.urlError}</p>}\n            {error?.fileError && <p className=\"error\">* {error.fileError}</p>}\n            {error?.extensionError && <p className=\"error\">* {error.extensionError}</p>}\n            <Button\n              className=\"modal-btn\"\n              dataElement=\"linkSubmitButton\"\n              label={t('OpenFile.addTab')}\n              style={{ width: 90 }}\n              onClick={() => handleAddTab(src, extension, filename, size)}\n            />\n          </div>\n\n        </div>\n      </div>\n    </Swipeable>\n  );\n};\n\nexport default OpenFileModal;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport OpenFileModal from \"components/OpenFileModal/FileModal/OpenFileModal\";\n\nconst OpenFileModalContainer = () => {\n  const [isDisabled, isOpen, tabManager] = useSelector(state => [\n    selectors.isElementDisabled(state, 'OpenFileModal'),\n    selectors.isElementOpen(state, 'OpenFileModal'),\n    selectors.getTabManager(state),\n  ]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  return <OpenFileModal isOpen={isOpen} tabManager={tabManager} />;\n};\n\nexport default OpenFileModalContainer;","import OpenFileModalContainer from \"components/OpenFileModal/OpenFileModalContainer\";\n\nexport default OpenFileModalContainer;","import React, { useEffect, useState } from 'react';\nimport './CollapsedTab.scss';\nimport Button from \"components/Button\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\n\nconst propTypes = {\n  tab: PropTypes.any.isRequired,\n  isActive: PropTypes.bool,\n  closeTab: PropTypes.func,\n  setActive: PropTypes.func,\n  onDragStart: PropTypes.func,\n  onDragOver: PropTypes.func,\n  onDragLeave: PropTypes.func,\n  id: PropTypes.string,\n};\n\nconst Tab = ({ tab, setActive, onDragStart, closeTab, id }) => {\n  const [disabled, setDisabled] = useState(tab?.disabled);\n  const removeExtension = true;\n  const name = removeExtension ? tab.options.filename.split(\".\")[0] : tab.options.filename;\n\n  useEffect(() => {\n    setDisabled(tab?.disabled);\n  }, [tab]);\n\n  return (\n    <div className={\"draggable-collapsed-tab\"} onDragStart={onDragStart} draggable id={id}>\n      <div className={'CollapsedTab'}>\n        <div className={classNames({ \"file-text\": true, disabled })} onClick={setActive}>\n          <p>{name}</p>\n        </div>\n        <Button\n          img=\"icon-close\"\n          title=\"action.close\"\n          onClick={closeTab}\n        />\n      </div>\n    </div>\n  );\n};\n\nTab.propTypes = propTypes;\n\nexport default Tab;","import React, { useEffect, useRef, useState, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport './TabsHeader.scss';\nimport Tab from 'components/TabsHeader/Tab/Tab';\nimport Button from 'components/Button';\nimport HoverTab from 'components/TabsHeader/HoverTab/HoverTab';\nimport FlyoutMenu from 'components/FlyoutMenu/FlyoutMenu';\nimport OpenFileModal from 'components/OpenFileModal';\nimport CollapsedTab from 'components/TabsHeader/CollapsedTab/CollapsedTab';\n\n\nconst TabsHeader = () => {\n  const dispatch = useDispatch();\n  const [isDragging, setDragging] = useState(false);\n  const [dragIndex, setDragIndex] = useState();\n  const [dropTarget, setDropTarget] = useState();\n  const [hovering, setHovering] = useState();\n  const hoveredTab = useRef();\n  const [isMultiTab, tabManager, width, currTabs, activeTab] = useSelector(state => [\n    selectors.getIsMultiTab(state),\n    selectors.getTabManager(state),\n    selectors.getDocumentContainerWidth(state),\n    selectors.getTabs(state),\n    selectors.getActiveTab(state),\n  ]);\n\n  const breakpoint = Math.floor(width / 180); // Divided by max-width of tab\n\n  useEffect(() => {\n    const div = document.createElement('div');\n    div.id = '0';\n    ReactDOM.render(<HoverTab onDragOver={onDragOverHoverTab} onDragLeave={onDragLeave}/>, div);\n    hoveredTab.current = div;\n  }, []);\n\n  const activeIndex = currTabs?.findIndex(t => t.id === activeTab);\n  useEffect(() => {\n    if (activeIndex >= breakpoint && breakpoint > 0 && tabManager) {\n      tabManager.moveTab(activeIndex, breakpoint - 1);\n    }\n  }, [breakpoint, activeIndex, tabManager]);\n\n  const onDragStart = (e, index) => {\n    if (isDragging) {\n      return;\n    }\n    setDragging(true);\n    setDragIndex(index);\n    setDropTarget(index);\n    e.dataTransfer.setData('text', '');\n    e.dataTransfer.dropEffect = 'move';\n    e.dataTransfer.effectAllowed = 'move';\n  };\n\n  const onDragOver = (e, index, id) => {\n    e.preventDefault();\n    e.stopPropagation();\n    const element = document.getElementById(`tab-${id}`);\n    const centerX = element.offsetLeft + element.offsetWidth / 2;\n    const moveLeft = centerX >= e.pageX;\n    if (index === dragIndex ||\n      (index + 1 === dragIndex && !moveLeft) ||\n      (index - 1 === dragIndex && moveLeft)) {\n      return; // End because moving to same spot\n    }\n    hoveredTab.current.id = id;\n    if (moveLeft && index > dragIndex && index !== 0) {\n      setDropTarget(index - 1);\n    } else if (!moveLeft && index < dragIndex && index !== currTabs.length - 1) {\n      setDropTarget(index + 1);\n    } else {\n      setDropTarget(index);\n    }\n    moveLeft ? element.prepend(hoveredTab.current) : element.append(hoveredTab.current);\n    setHovering(true);\n  };\n\n  const onDragOverHoverTab = e => {\n    e.preventDefault();\n    e.stopPropagation();\n    if (!hovering) {\n      setHovering(true);\n    }\n  };\n\n  const onDragLeave = e => {\n    e.preventDefault();\n    e.stopPropagation();\n    if (!document.getElementsByClassName('TabsHeader')[0]?.contains(e.target)) {\n      hoveredTab.current.remove();\n    }\n    setHovering(false);\n  };\n\n  const onDrop = e => {\n    setHovering(false);\n    if (!isDragging || dragIndex === dropTarget) {\n      return;\n    }\n    tabManager.moveTab(dragIndex, dropTarget);\n    hoveredTab.current.remove();\n  };\n\n  const onDragEnd = e => {\n    hoveredTab.current.remove();\n    setDragging(false);\n    setDragIndex(null);\n  };\n\n  const [tabs, additionalTabs] = useMemo(() => {\n    if (!isMultiTab) {\n      return [null, null];\n    }\n    const activeIndex = currTabs?.findIndex(t => t.id === activeTab);\n    if (activeIndex >= breakpoint && breakpoint > 0 && tabManager) {\n      tabManager.moveTab(activeIndex, breakpoint - 1);\n    }\n    const renderedTabs = currTabs.map((tab, index) => {\n      if (index < breakpoint) {\n        return <Tab\n          onDragStart={e => onDragStart(e, index)}\n          onDragOver={e => onDragOver(e, index, tab.id)}\n          onDragLeave={onDragLeave}\n          setActive={() => setActiveTab(tab.id)}\n          key={tab.id}\n          id={`tab-${tab.id}`}\n          isActive={tab.id === activeTab}\n          closeTab={() => deleteTab(tab.id)}\n          tab={tab}\n          isToLeftOfActive={index === activeIndex - 1}\n        />;\n      } else {\n        return <CollapsedTab\n          onDragStart={e => onDragStart(e, index)}\n          tab={tab}\n          key={tab.id}\n          id={`tab-${tab.id}`}\n          closeTab={() => deleteTab(tab.id)}\n          setActive={() => setActiveTab(tab.id)}\n        />;\n      }\n    });\n    return [renderedTabs?.slice(0, breakpoint), renderedTabs?.slice(breakpoint, renderedTabs.length)];\n  }, [tabManager, currTabs, breakpoint, setActiveTab, deleteTab, onDragEnd, onDragStart, onDragOver, onDragLeave]);\n\n  async function setActiveTab(id) {\n    const tabIndex = currTabs.findIndex(t => t.id === id);\n    if (tabIndex >= breakpoint) {\n      tabManager.moveTab(tabIndex, breakpoint - 1);\n    }\n    activeTab !== id && await tabManager.setActiveTab(id, true);\n  }\n\n  function deleteTab(id) {\n    tabManager.deleteTab(id, dispatch);\n  }\n\n  const openFile = () => dispatch(actions.openElement('OpenFileModal'));\n\n  if (!isMultiTab) {\n    return null;\n  }\n  return (\n    <div className=\"TabsHeader\" onDrop={onDrop} onDragEnd={onDragEnd}>\n      {tabs}\n      <div className=\"add-button\">\n        {additionalTabs?.length > 0 && <div\n          className={'dropdown-menu tab-dropdown-button'}\n          onClick={() => dispatch(actions.toggleElement('tabMenu'))}\n          data-element=\"tabTrigger\"\n        >\n          {additionalTabs.length}\n        </div>}\n        <Button\n          title=\"action.openFile\"\n          img=\"icon-menu-add\"\n          onClick={openFile}\n        />\n        {additionalTabs?.length > 0 && <FlyoutMenu\n          menu=\"tabMenu\"\n          trigger=\"tabTrigger\"\n          onClose={undefined}\n        >\n          {additionalTabs}\n        </FlyoutMenu>}\n      </div>\n      <OpenFileModal />\n    </div>\n  );\n};\n\nexport default TabsHeader;","import TabsHeader from './TabsHeader';\n\nexport default TabsHeader;","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport core from 'core';\nimport { isIE, isIE11 } from 'helpers/device';\nimport { updateContainerWidth, getClassNameInIE, handleWindowResize } from 'helpers/documentContainerHelper';\nimport loadDocument from 'helpers/loadDocument';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport touchEventManager from 'helpers/TouchEventManager';\nimport setCurrentPage from 'helpers/setCurrentPage';\nimport { getMinZoomLevel, getMaxZoomLevel } from 'constants/zoomFactors';\nimport MeasurementOverlay from 'components/MeasurementOverlay';\nimport PageNavOverlay from 'components/PageNavOverlay';\nimport ToolsOverlay from 'components/ToolsOverlay';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport useMedia from 'hooks/useMedia';\nimport ReaderModeViewer from 'components/ReaderModeViewer';\nimport { zoomIn, zoomOut, getStep } from 'helpers/zoom';\n\nimport Measure from 'react-measure';\n\nimport './DocumentContainer.scss';\nimport _ from 'lodash';\nimport TabsHeader from 'components/TabsHeader';\n\nconst PAGE_NAVIGATION_OVERLAY_FADEOUT = 4000;\n\nclass DocumentContainer extends React.PureComponent {\n  static propTypes = {\n    isLeftPanelOpen: PropTypes.bool,\n    isRightPanelOpen: PropTypes.bool,\n    isSearchOverlayOpen: PropTypes.bool,\n    doesDocumentAutoLoad: PropTypes.bool,\n    zoom: PropTypes.number.isRequired,\n    currentPage: PropTypes.number,\n    totalPages: PropTypes.number,\n    isHeaderOpen: PropTypes.bool,\n    dispatch: PropTypes.func.isRequired,\n    openElement: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    displayMode: PropTypes.string.isRequired,\n    leftPanelWidth: PropTypes.number,\n    allowPageNavigation: PropTypes.bool.isRequired,\n    isMouseWheelZoomEnabled: PropTypes.bool.isRequired,\n    isReaderMode: PropTypes.bool,\n    setDocumentContainerWidth: PropTypes.func.isRequired,\n    setDocumentContainerHeight: PropTypes.func.isRequired,\n    isInDesktopOnlyMode: PropTypes.bool,\n    isRedactionPanelOpen: PropTypes.bool,\n    isWv3dPropertiesPanelOpen: PropTypes.bool,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.document = React.createRef();\n    this.container = React.createRef();\n    this.wheelToNavigatePages = _.throttle(this.wheelToNavigatePages.bind(this), 300, { trailing: false });\n    this.wheelToZoom = _.throttle(this.wheelToZoom.bind(this), 30, { trailing: false });\n    this.handleResize = _.throttle(this.handleResize.bind(this), 200);\n    this.debouncedHidePageNavigationOverlay = _.debounce(\n      this.hidePageNavigationOverlay,\n      PAGE_NAVIGATION_OVERLAY_FADEOUT,\n    );\n    this.state = {\n      showNavOverlay: true,\n    };\n  }\n\n  componentDidUpdate(prevProps) {\n    if (isIE11) {\n      updateContainerWidth(prevProps, this.props, this.container.current);\n    }\n  }\n\n  componentDidMount() {\n    touchEventManager.initialize(this.document.current, this.container.current);\n    core.setScrollViewElement(this.container.current);\n    core.setViewerElement(this.document.current);\n\n    if (isIE) {\n      window.addEventListener('resize', this.handleWindowResize);\n    }\n\n    if (process.env.NODE_ENV === 'development') {\n      this.container.current.addEventListener('dragover', this.preventDefault);\n      this.container.current.addEventListener('drop', this.onDrop);\n    }\n\n    this.container.current.addEventListener('wheel', this.onWheel, { passive: false });\n    this.updateContainerSize();\n    core.addEventListener('documentLoaded', this.showAndFadeNavigationOverlay);\n  }\n\n  componentWillUnmount() {\n    touchEventManager.terminate();\n    if (isIE) {\n      window.removeEventListener('resize', this.handleWindowResize);\n    }\n\n    if (process.env.NODE_ENV === 'development') {\n      this.container.current.addEventListener('dragover', this.preventDefault);\n      this.container.current.removeEventListener('drop', this.onDrop);\n    }\n\n    this.container.current.removeEventListener('wheel', this.onWheel, { passive: false });\n    core.removeEventListener('documentLoaded', this.showAndFadeNavigationOverlay);\n  }\n\n  preventDefault = e => e.preventDefault();\n\n  onDrop = e => {\n    e.preventDefault();\n\n    const { files } = e.dataTransfer;\n    if (files.length) {\n      loadDocument(this.props.dispatch, files[0]);\n    }\n  };\n\n  handleWindowResize = () => {\n    handleWindowResize(this.props, this.container.current);\n  };\n\n  onWheel = e => {\n    const { isMouseWheelZoomEnabled } = this.props;\n    if (isMouseWheelZoomEnabled && (e.metaKey || e.ctrlKey)) {\n      e.preventDefault();\n      this.wheelToZoom(e);\n    } else if (\n      !core.isContinuousDisplayMode() &&\n      this.props.allowPageNavigation &&\n      !this.props.isReaderMode &&\n      core.isScrollableDisplayMode()\n    ) {\n      const { currentPage, totalPages } = this.props;\n      const { scrollTop, scrollHeight, clientHeight } = this.container.current;\n      const reachedTop = scrollTop === 0;\n      const reachedBottom = Math.abs(scrollTop + clientHeight - scrollHeight) <= 1;\n\n      // depending on the track pad used (see this on MacBooks), deltaY can be between -1 and 1 when doing horizontal scrolling which cause page to change\n      const scrollingUp = e.deltaY < 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n      const scrollingDown = e.deltaY > 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n\n      const shouldGoUp = scrollingUp && reachedTop && currentPage > 1;\n      const shouldGoDown = scrollingDown && reachedBottom && currentPage < totalPages;\n\n      const shouldPreventParentScrolling = (scrollHeight === clientHeight) && ((e.deltaY < 0 && currentPage > 1) || (e.deltaY > 0 && currentPage < totalPages));\n\n      if (shouldPreventParentScrolling) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n\n      this.wheelToNavigatePages(e, shouldGoUp, shouldGoDown);\n      this.props.closeElements(['annotationPopup', 'textPopup', 'annotationNoteConnectorLine']);\n    }\n  };\n\n  wheelToNavigatePages = (e, shouldGoUp, shouldGoDown) => {\n    if (shouldGoUp) {\n      this.pageUp();\n    } else if (shouldGoDown) {\n      this.pageDown();\n    }\n\n    this.showPageNavigationOverlay();\n    this.debouncedHidePageNavigationOverlay();\n  };\n\n  pageUp = () => {\n    const { currentPage } = this.props;\n    const { scrollHeight, clientHeight } = this.container.current;\n\n    setCurrentPage(currentPage - getNumberOfPagesToNavigate());\n    this.container.current.scrollTop = scrollHeight - clientHeight;\n  };\n\n  pageDown = () => {\n    const { currentPage } = this.props;\n\n    setCurrentPage(currentPage + getNumberOfPagesToNavigate());\n  };\n\n  wheelToZoom = e => {\n    const currentZoomFactor = this.props.zoom;\n    let newZoomFactor = currentZoomFactor;\n    if (e.deltaY < 0) {\n      newZoomFactor = Math.min(\n        currentZoomFactor + getStep(currentZoomFactor),\n        getMaxZoomLevel()\n      );\n    } else if (e.deltaY > 0) {\n      newZoomFactor = Math.max(\n        currentZoomFactor - getStep(currentZoomFactor),\n        getMinZoomLevel()\n      );\n    }\n    core.zoomToMouse(newZoomFactor);\n  };\n\n  handleScroll = () => {\n    this.props.closeElements(['annotationPopup', 'textPopup', 'annotationNoteConnectorLine', 'formFieldEditPopup']);\n\n    // Show overlay and then hide it, but the hide call is debounced\n    this.showPageNavigationOverlay();\n    this.debouncedHidePageNavigationOverlay();\n  };\n\n  showAndFadeNavigationOverlay = () => {\n    this.showPageNavigationOverlay();\n    setTimeout(this.hidePageNavigationOverlay, PAGE_NAVIGATION_OVERLAY_FADEOUT);\n  };\n\n  hidePageNavigationOverlay = () => {\n    this.setState({ showNavOverlay: false });\n  };\n\n  showPageNavigationOverlay = () => {\n    this.setState({ showNavOverlay: true });\n  };\n\n  pageNavOnMouseEnter = () => {\n    this.showPageNavigationOverlay();\n  };\n\n  pageNavOnMouseLeave = () => {\n    this.hidePageNavigationOverlay();\n  };\n\n  getClassName = props => {\n    const { isSearchOverlayOpen } = props;\n\n    return classNames({\n      DocumentContainer: true,\n      'search-overlay': isSearchOverlayOpen,\n    });\n  };\n\n  handleResize() {\n    this.updateContainerSize();\n\n    if (!this.props.isReaderMode) {\n      // Skip when in reader mode, otherwise will cause error.\n      core.setScrollViewElement(this.container.current);\n      core.scrollViewUpdated();\n    }\n  }\n\n  updateContainerSize() {\n    const { clientWidth, clientHeight } = this.container.current;\n    this.props.setDocumentContainerWidth(clientWidth);\n    this.props.setDocumentContainerHeight(clientHeight);\n  }\n\n  onTransitionEnd(event) {\n    // I don't know if this is needed. But better safe than sorry.\n    const transitionProperiesToIgnore = ['background-color', 'opacity'];\n    if (!transitionProperiesToIgnore.includes(event.propertyName)) {\n      // We have a corner case where if you have 1st and 2nd page different size and you are in fit page mode\n      // if you have callout (freetext) annotation on second page. If you open notes panel then click annotation and click\n      // edit on it. This will cause our document container to re-render. We also have background-color transition\n      // set to all our elements (I believe for having smooth transition to dark mode, not sure though).\n      // All this is causing document to run fit page logic and zoom level of this second page jumps out.\n      // This is such a corner case, but reported by a customer, we decided do this check here and skip update if\n      // background color is the one that causes this transition.\n      // This effect is still happening in above case but if instead of clicking edit, user changes width of the notes panel\n      // It is currently expected behaviour\n      // Note Update after fading page nav was added:\n      // This also causes a doc container re-render as we fire the opacity transition when we fade the page nav\n      // we must skip updating the scrollViewUpdated call as well or it causes re-renders on docs with different page sizes\n      core.scrollViewUpdated();\n    }\n  }\n\n  render() {\n    const {\n      leftPanelWidth,\n      isLeftPanelOpen,\n      isMobile,\n      documentContentContainerWidthStyle,\n      totalPages,\n      isInDesktopOnlyMode,\n    } = this.props;\n\n    const documentContainerClassName = isIE ? getClassNameInIE(this.props) : this.getClassName(this.props);\n    const documentClassName = classNames({\n      document: true,\n      hidden: this.props.isReaderMode,\n    });\n    const showPageNav = totalPages > 1;\n\n    return (\n      <div\n        style={{\n          width: documentContentContainerWidthStyle,\n          // we animate with margin-left. For some reason it looks nicer than transform.\n          // Using transform makes a clunky animation because the panels are using transform already.\n          marginLeft: `${isLeftPanelOpen ? leftPanelWidth : 0}px`,\n        }}\n        className=\"document-content-container\"\n        onTransitionEnd={this.onTransitionEnd}\n      >\n        <TabsHeader />\n        <Measure onResize={this.handleResize}>\n          {({ measureRef }) => (\n            <div className=\"measurement-container\" ref={measureRef}>\n              <div\n                className={documentContainerClassName}\n                ref={this.container}\n                data-element=\"documentContainer\"\n                onScroll={this.handleScroll}\n              >\n                {/* tabIndex=\"-1\" to keep document focused when in single page mode */}\n                <div className={documentClassName} ref={this.document} tabIndex=\"-1\" />\n              </div>\n              {this.props.isReaderMode && <ReaderModeViewer />}\n              <MeasurementOverlay />\n              <div\n                className=\"footer\"\n                style={{\n                  width: documentContentContainerWidthStyle,\n                  marginLeft: `${isLeftPanelOpen ? leftPanelWidth : 0}px`,\n                }}\n              >\n                {showPageNav && (\n                  <PageNavOverlay\n                    showNavOverlay={this.state.showNavOverlay}\n                    onMouseEnter={this.pageNavOnMouseEnter}\n                    onMouseLeave={this.pageNavOnMouseLeave}\n                  />\n                )}\n\n                {isMobile && !isInDesktopOnlyMode && <ToolsOverlay />}\n              </div>\n            </div>\n          )}\n        </Measure>\n        <div className=\"custom-container\" />\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  documentContentContainerWidthStyle: selectors.getDocumentContentContainerWidthStyle(state),\n  leftPanelWidth: selectors.getLeftPanelWidthWithReszieBar(state),\n  isLeftPanelOpen: selectors.isElementOpen(state, 'leftPanel'),\n  isRightPanelOpen: selectors.isElementOpen(state, 'searchPanel') || selectors.isElementOpen(state, 'notesPanel'),\n  isSearchOverlayOpen: selectors.isElementOpen(state, 'searchOverlay'),\n  doesDocumentAutoLoad: selectors.doesDocumentAutoLoad(state),\n  zoom: selectors.getZoom(state),\n  currentPage: selectors.getCurrentPage(state),\n  isHeaderOpen: selectors.isElementOpen(state, 'header') && !selectors.isElementDisabled(state, 'header'),\n  displayMode: selectors.getDisplayMode(state),\n  totalPages: selectors.getTotalPages(state),\n  allowPageNavigation: selectors.getAllowPageNavigation(state),\n  isMouseWheelZoomEnabled: selectors.getEnableMouseWheelZoom(state),\n  isReaderMode: selectors.isReaderMode(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state),\n  isRedactionPanelOpen: selectors.isElementOpen(state, 'redactionPanel'),\n  isWv3dPropertiesPanelOpen: selectors.isElementOpen(state, 'wv3dPropertiesPanel'),\n});\n\nconst mapDispatchToProps = dispatch => ({\n  dispatch,\n  openElement: dataElement => dispatch(actions.openElement(dataElement)),\n  closeElements: dataElements => dispatch(actions.closeElements(dataElements)),\n  setDocumentContainerWidth: width => dispatch(actions.setDocumentContainerWidth(width)),\n  setDocumentContainerHeight: height => dispatch(actions.setDocumentContainerHeight(height)),\n});\n\nconst ConnectedDocumentContainer = connect(mapStateToProps, mapDispatchToProps)(DocumentContainer);\n\nexport default props => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  return <ConnectedDocumentContainer {...props} isMobile={isMobile} />;\n};\n","import DocumentContainer from './DocumentContainer';\n\nexport default DocumentContainer;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport selectors from 'selectors';\n\nimport './Element.scss';\n\nclass Element extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    className: PropTypes.string.isRequired,\n    dataElement: PropTypes.string.isRequired,\n    children: PropTypes.node,\n  }\n\n  render() {\n    const { isDisabled, className, dataElement, children } = this.props;\n\n    if (isDisabled) {\n      return null;\n    }\n\n    return (\n      <div className={className} data-element={dataElement}>\n        {children}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n  isDisabled: selectors.isElementDisabled(state, ownProps.dataElement),\n});\n\nexport default connect(mapStateToProps)(Element);","import Element from './Element';\n\nexport default Element;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\n\nimport Button from 'components/Button';\nimport Element from 'components/Element';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './LeftPanelTabs.scss';\n\nclass LeftPanelTabs extends React.Component {\n  static propTypes = {\n    isLeftPanelOpen: PropTypes.bool,\n    activePanel: PropTypes.string.isRequired,\n    disabledCustomPanelTabs: PropTypes.array.isRequired,\n    customPanels: PropTypes.array.isRequired,\n    isLeftPanelTabsDisabled: PropTypes.bool,\n    setActiveLeftPanel: PropTypes.func.isRequired,\n    t: PropTypes.func.isRequired,\n  };\n  isActive = panel => this.props.activePanel === panel;\n\n  render() {\n    const {\n      isLeftPanelOpen,\n      customPanels,\n      isLeftPanelTabsDisabled,\n      setActiveLeftPanel,\n      notesInLeftPanel,\n    } = this.props;\n\n    if (isLeftPanelTabsDisabled) {\n      return null;\n    }\n\n    return (\n      <Element className=\"LeftPanelTabs\" dataElement=\"leftPanelTabs\">\n        <Button\n          isActive={this.isActive('thumbnailsPanel')}\n          dataElement=\"thumbnailsPanelButton\"\n          img=\"icon-panel-thumbnail-line\"\n          onClick={() => setActiveLeftPanel('thumbnailsPanel')}\n          title=\"component.thumbnailsPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('outlinesPanel')}\n          dataElement=\"outlinesPanelButton\"\n          img=\"icon-panel-outlines\"\n          onClick={() => setActiveLeftPanel('outlinesPanel')}\n          title=\"component.outlinesPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('layersPanel')}\n          dataElement=\"layersPanelButton\"\n          img=\"ic_layers_24px\"\n          onClick={() => setActiveLeftPanel('layersPanel')}\n          title=\"component.layersPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('bookmarksPanel')}\n          dataElement=\"bookmarksPanelButton\"\n          img=\"ic_bookmarks_black_24px\"\n          onClick={() => setActiveLeftPanel('bookmarksPanel')}\n          title=\"component.bookmarksPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('signaturePanel')}\n          dataElement=\"signaturePanelButton\"\n          img=\"icon-tool-signature\"\n          onClick={() => setActiveLeftPanel('signaturePanel')}\n          title=\"component.signaturePanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        <Button\n          isActive={this.isActive('attachmentPanel')}\n          dataElement=\"attachmentPanelButton\"\n          img=\"ic_fileattachment_24px\"\n          onClick={() => setActiveLeftPanel('attachmentPanel')}\n          title=\"component.attachmentPanel\"\n          tabIndex={isLeftPanelOpen ? 0 : -1}\n        />\n        {notesInLeftPanel &&\n          <Button\n            isActive={this.isActive('notesPanel')}\n            dataElement=\"notesPanelButton\"\n            img=\"icon-header-chat-line\"\n            onClick={() => setActiveLeftPanel('notesPanel')}\n            title=\"component.notesPanel\"\n          />}\n        {customPanels.map(({ panel, tab }, index) =>\n          <React.Fragment key={index}>\n            <Button\n              key={tab.dataElement || index}\n              isActive={this.isActive(panel.dataElement)}\n              dataElement={tab.dataElement}\n              img={tab.img}\n              onClick={() => setActiveLeftPanel(panel.dataElement)}\n              title={tab.title}\n            />\n            {index < customPanels.length - 1 && <div className=\"divider\" />}\n          </React.Fragment>,\n        )}\n      </Element>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  isLeftPanelOpen: selectors.isElementOpen(state, 'leftPanel'),\n  activePanel: selectors.getActiveLeftPanel(state),\n  customPanels: selectors.getCustomPanels(state),\n  disabledCustomPanelTabs: selectors.getDisabledCustomPanelTabs(state),\n  isLeftPanelTabsDisabled: selectors.isElementDisabled(state, 'leftPanelTabs'),\n  notesInLeftPanel: selectors.getNotesInLeftPanel(state),\n});\n\nconst mapDispatchToProps = {\n  setActiveLeftPanel: actions.setActiveLeftPanel,\n};\n\nexport default connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(withTranslation()(LeftPanelTabs));\n","import LeftPanelTabs from './LeftPanelTabs';\n\nexport default LeftPanelTabs;","/**\n * Helper method that determines when to recalculate row or column metadata.\n */\nexport default function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) {\n  var cellCount = _ref.cellCount,\n      cellSize = _ref.cellSize,\n      computeMetadataCallback = _ref.computeMetadataCallback,\n      computeMetadataCallbackProps = _ref.computeMetadataCallbackProps,\n      nextCellsCount = _ref.nextCellsCount,\n      nextCellSize = _ref.nextCellSize,\n      nextScrollToIndex = _ref.nextScrollToIndex,\n      scrollToIndex = _ref.scrollToIndex,\n      updateScrollOffsetForScrollToIndex = _ref.updateScrollOffsetForScrollToIndex;\n\n  // Don't compare cell sizes if they are functions because inline functions would cause infinite loops.\n  // In that event users should use the manual recompute methods to inform of changes.\n  if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {\n    computeMetadataCallback(computeMetadataCallbackProps); // Updated cell metadata may have hidden the previous scrolled-to item.\n    // In this case we should also update the scrollTop to ensure it stays visible.\n\n    if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {\n      updateScrollOffsetForScrollToIndex();\n    }\n  }\n}","import * as React from 'react';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nvar bpfrpt_proptype_CellPosition = process.env.NODE_ENV === 'production' ? null : {\n  \"columnIndex\": PropTypes.number.isRequired,\n  \"rowIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_CellRendererParams = process.env.NODE_ENV === 'production' ? null : {\n  \"columnIndex\": PropTypes.number.isRequired,\n  \"isScrolling\": PropTypes.bool.isRequired,\n  \"isVisible\": PropTypes.bool.isRequired,\n  \"key\": PropTypes.string.isRequired,\n  \"parent\": PropTypes.object.isRequired,\n  \"rowIndex\": PropTypes.number.isRequired,\n  \"style\": PropTypes.object.isRequired\n};\nvar bpfrpt_proptype_CellRenderer = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_CellCache = process.env.NODE_ENV === 'production' ? null : PropTypes.objectOf(PropTypes.node.isRequired);\nvar bpfrpt_proptype_StyleCache = process.env.NODE_ENV === 'production' ? null : PropTypes.objectOf(PropTypes.object.isRequired);\nvar bpfrpt_proptype_CellRangeRendererParams = process.env.NODE_ENV === 'production' ? null : {\n  \"cellCache\": PropTypes.objectOf(PropTypes.node.isRequired).isRequired,\n  \"cellRenderer\": PropTypes.func.isRequired,\n  \"columnSizeAndPositionManager\": function columnSizeAndPositionManager() {\n    return (typeof ScalingCellSizeAndPositionManager === \"function\" ? PropTypes.instanceOf(ScalingCellSizeAndPositionManager).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"columnStartIndex\": PropTypes.number.isRequired,\n  \"columnStopIndex\": PropTypes.number.isRequired,\n  \"deferredMeasurementCache\": PropTypes.object,\n  \"horizontalOffsetAdjustment\": PropTypes.number.isRequired,\n  \"isScrolling\": PropTypes.bool.isRequired,\n  \"isScrollingOptOut\": PropTypes.bool.isRequired,\n  \"parent\": PropTypes.object.isRequired,\n  \"rowSizeAndPositionManager\": function rowSizeAndPositionManager() {\n    return (typeof ScalingCellSizeAndPositionManager === \"function\" ? PropTypes.instanceOf(ScalingCellSizeAndPositionManager).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"rowStartIndex\": PropTypes.number.isRequired,\n  \"rowStopIndex\": PropTypes.number.isRequired,\n  \"scrollLeft\": PropTypes.number.isRequired,\n  \"scrollTop\": PropTypes.number.isRequired,\n  \"styleCache\": PropTypes.objectOf(PropTypes.object.isRequired).isRequired,\n  \"verticalOffsetAdjustment\": PropTypes.number.isRequired,\n  \"visibleColumnIndices\": PropTypes.object.isRequired,\n  \"visibleRowIndices\": PropTypes.object.isRequired\n};\nvar bpfrpt_proptype_CellRangeRenderer = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_CellSizeGetter = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_CellSize = process.env.NODE_ENV === 'production' ? null : PropTypes.oneOfType([PropTypes.func, PropTypes.number]);\nvar bpfrpt_proptype_NoContentRenderer = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_Scroll = process.env.NODE_ENV === 'production' ? null : {\n  \"clientHeight\": PropTypes.number.isRequired,\n  \"clientWidth\": PropTypes.number.isRequired,\n  \"scrollHeight\": PropTypes.number.isRequired,\n  \"scrollLeft\": PropTypes.number.isRequired,\n  \"scrollTop\": PropTypes.number.isRequired,\n  \"scrollWidth\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_ScrollbarPresenceChange = process.env.NODE_ENV === 'production' ? null : {\n  \"horizontal\": PropTypes.bool.isRequired,\n  \"vertical\": PropTypes.bool.isRequired,\n  \"size\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_RenderedSection = process.env.NODE_ENV === 'production' ? null : {\n  \"columnOverscanStartIndex\": PropTypes.number.isRequired,\n  \"columnOverscanStopIndex\": PropTypes.number.isRequired,\n  \"columnStartIndex\": PropTypes.number.isRequired,\n  \"columnStopIndex\": PropTypes.number.isRequired,\n  \"rowOverscanStartIndex\": PropTypes.number.isRequired,\n  \"rowOverscanStopIndex\": PropTypes.number.isRequired,\n  \"rowStartIndex\": PropTypes.number.isRequired,\n  \"rowStopIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_OverscanIndicesGetterParams = process.env.NODE_ENV === 'production' ? null : {\n  // One of SCROLL_DIRECTION_HORIZONTAL or SCROLL_DIRECTION_VERTICAL\n  \"direction\": PropTypes.oneOf([\"horizontal\", \"vertical\"]).isRequired,\n  // One of SCROLL_DIRECTION_BACKWARD or SCROLL_DIRECTION_FORWARD\n  \"scrollDirection\": PropTypes.oneOf([-1, 1]).isRequired,\n  // Number of rows or columns in the current axis\n  \"cellCount\": PropTypes.number.isRequired,\n  // Maximum number of cells to over-render in either direction\n  \"overscanCellsCount\": PropTypes.number.isRequired,\n  // Begin of range of visible cells\n  \"startIndex\": PropTypes.number.isRequired,\n  // End of range of visible cells\n  \"stopIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_OverscanIndices = process.env.NODE_ENV === 'production' ? null : {\n  \"overscanStartIndex\": PropTypes.number.isRequired,\n  \"overscanStopIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_OverscanIndicesGetter = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_Alignment = process.env.NODE_ENV === 'production' ? null : PropTypes.oneOf([\"auto\", \"end\", \"start\", \"center\"]);\nvar bpfrpt_proptype_VisibleCellRange = process.env.NODE_ENV === 'production' ? null : {\n  \"start\": PropTypes.number,\n  \"stop\": PropTypes.number\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellPosition };\nexport { bpfrpt_proptype_CellRendererParams };\nexport { bpfrpt_proptype_CellRenderer };\nexport { bpfrpt_proptype_CellCache };\nexport { bpfrpt_proptype_StyleCache };\nexport { bpfrpt_proptype_CellRangeRendererParams };\nexport { bpfrpt_proptype_CellRangeRenderer };\nexport { bpfrpt_proptype_CellSizeGetter };\nexport { bpfrpt_proptype_CellSize };\nexport { bpfrpt_proptype_NoContentRenderer };\nexport { bpfrpt_proptype_Scroll };\nexport { bpfrpt_proptype_ScrollbarPresenceChange };\nexport { bpfrpt_proptype_RenderedSection };\nexport { bpfrpt_proptype_OverscanIndicesGetterParams };\nexport { bpfrpt_proptype_OverscanIndices };\nexport { bpfrpt_proptype_OverscanIndicesGetter };\nexport { bpfrpt_proptype_Alignment };\nexport { bpfrpt_proptype_VisibleCellRange };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\n/**\n * Just-in-time calculates and caches size and position information for a collection of cells.\n */\nvar CellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n  // Cache of size and position data for cells, mapped by cell index.\n  // Note that invalid values may exist in this map so only rely on cells up to this._lastMeasuredIndex\n  // Measurements for cells up to this index can be trusted; cells afterward should be estimated.\n  // Used in deferred mode to track which cells have been queued for measurement.\n  function CellSizeAndPositionManager(_ref) {\n    var cellCount = _ref.cellCount,\n        cellSizeGetter = _ref.cellSizeGetter,\n        estimatedCellSize = _ref.estimatedCellSize;\n\n    _classCallCheck(this, CellSizeAndPositionManager);\n\n    _defineProperty(this, \"_cellSizeAndPositionData\", {});\n\n    _defineProperty(this, \"_lastMeasuredIndex\", -1);\n\n    _defineProperty(this, \"_lastBatchedIndex\", -1);\n\n    _defineProperty(this, \"_cellCount\", void 0);\n\n    _defineProperty(this, \"_cellSizeGetter\", void 0);\n\n    _defineProperty(this, \"_estimatedCellSize\", void 0);\n\n    this._cellSizeGetter = cellSizeGetter;\n    this._cellCount = cellCount;\n    this._estimatedCellSize = estimatedCellSize;\n  }\n\n  _createClass(CellSizeAndPositionManager, [{\n    key: \"areOffsetsAdjusted\",\n    value: function areOffsetsAdjusted() {\n      return false;\n    }\n  }, {\n    key: \"configure\",\n    value: function configure(_ref2) {\n      var cellCount = _ref2.cellCount,\n          estimatedCellSize = _ref2.estimatedCellSize,\n          cellSizeGetter = _ref2.cellSizeGetter;\n      this._cellCount = cellCount;\n      this._estimatedCellSize = estimatedCellSize;\n      this._cellSizeGetter = cellSizeGetter;\n    }\n  }, {\n    key: \"getCellCount\",\n    value: function getCellCount() {\n      return this._cellCount;\n    }\n  }, {\n    key: \"getEstimatedCellSize\",\n    value: function getEstimatedCellSize() {\n      return this._estimatedCellSize;\n    }\n  }, {\n    key: \"getLastMeasuredIndex\",\n    value: function getLastMeasuredIndex() {\n      return this._lastMeasuredIndex;\n    }\n  }, {\n    key: \"getOffsetAdjustment\",\n    value: function getOffsetAdjustment() {\n      return 0;\n    }\n    /**\n     * This method returns the size and position for the cell at the specified index.\n     * It just-in-time calculates (or used cached values) for cells leading up to the index.\n     */\n\n  }, {\n    key: \"getSizeAndPositionOfCell\",\n    value: function getSizeAndPositionOfCell(index) {\n      if (index < 0 || index >= this._cellCount) {\n        throw Error(\"Requested index \".concat(index, \" is outside of range 0..\").concat(this._cellCount));\n      }\n\n      if (index > this._lastMeasuredIndex) {\n        var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n        var offset = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n\n        for (var i = this._lastMeasuredIndex + 1; i <= index; i++) {\n          var size = this._cellSizeGetter({\n            index: i\n          }); // undefined or NaN probably means a logic error in the size getter.\n          // null means we're using CellMeasurer and haven't yet measured a given index.\n\n\n          if (size === undefined || isNaN(size)) {\n            throw Error(\"Invalid size returned for cell \".concat(i, \" of value \").concat(size));\n          } else if (size === null) {\n            this._cellSizeAndPositionData[i] = {\n              offset: offset,\n              size: 0\n            };\n            this._lastBatchedIndex = index;\n          } else {\n            this._cellSizeAndPositionData[i] = {\n              offset: offset,\n              size: size\n            };\n            offset += size;\n            this._lastMeasuredIndex = index;\n          }\n        }\n      }\n\n      return this._cellSizeAndPositionData[index];\n    }\n  }, {\n    key: \"getSizeAndPositionOfLastMeasuredCell\",\n    value: function getSizeAndPositionOfLastMeasuredCell() {\n      return this._lastMeasuredIndex >= 0 ? this._cellSizeAndPositionData[this._lastMeasuredIndex] : {\n        offset: 0,\n        size: 0\n      };\n    }\n    /**\n     * Total size of all cells being measured.\n     * This value will be completely estimated initially.\n     * As cells are measured, the estimate will be updated.\n     */\n\n  }, {\n    key: \"getTotalSize\",\n    value: function getTotalSize() {\n      var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n      var totalSizeOfMeasuredCells = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n      var numUnmeasuredCells = this._cellCount - this._lastMeasuredIndex - 1;\n      var totalSizeOfUnmeasuredCells = numUnmeasuredCells * this._estimatedCellSize;\n      return totalSizeOfMeasuredCells + totalSizeOfUnmeasuredCells;\n    }\n    /**\n     * Determines a new offset that ensures a certain cell is visible, given the current offset.\n     * If the cell is already visible then the current offset will be returned.\n     * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n     *\n     * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n     * @param containerSize Size (width or height) of the container viewport\n     * @param currentOffset Container's current (x or y) offset\n     * @param totalSize Total size (width or height) of all cells\n     * @return Offset to use to ensure the specified cell is visible\n     */\n\n  }, {\n    key: \"getUpdatedOffsetForIndex\",\n    value: function getUpdatedOffsetForIndex(_ref3) {\n      var _ref3$align = _ref3.align,\n          align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n          containerSize = _ref3.containerSize,\n          currentOffset = _ref3.currentOffset,\n          targetIndex = _ref3.targetIndex;\n\n      if (containerSize <= 0) {\n        return 0;\n      }\n\n      var datum = this.getSizeAndPositionOfCell(targetIndex);\n      var maxOffset = datum.offset;\n      var minOffset = maxOffset - containerSize + datum.size;\n      var idealOffset;\n\n      switch (align) {\n        case 'start':\n          idealOffset = maxOffset;\n          break;\n\n        case 'end':\n          idealOffset = minOffset;\n          break;\n\n        case 'center':\n          idealOffset = maxOffset - (containerSize - datum.size) / 2;\n          break;\n\n        default:\n          idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n          break;\n      }\n\n      var totalSize = this.getTotalSize();\n      return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n    }\n  }, {\n    key: \"getVisibleCellRange\",\n    value: function getVisibleCellRange(params) {\n      var containerSize = params.containerSize,\n          offset = params.offset;\n      var totalSize = this.getTotalSize();\n\n      if (totalSize === 0) {\n        return {};\n      }\n\n      var maxOffset = offset + containerSize;\n\n      var start = this._findNearestCell(offset);\n\n      var datum = this.getSizeAndPositionOfCell(start);\n      offset = datum.offset + datum.size;\n      var stop = start;\n\n      while (offset < maxOffset && stop < this._cellCount - 1) {\n        stop++;\n        offset += this.getSizeAndPositionOfCell(stop).size;\n      }\n\n      return {\n        start: start,\n        stop: stop\n      };\n    }\n    /**\n     * Clear all cached values for cells after the specified index.\n     * This method should be called for any cell that has changed its size.\n     * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionOfCell() is called.\n     */\n\n  }, {\n    key: \"resetCell\",\n    value: function resetCell(index) {\n      this._lastMeasuredIndex = Math.min(this._lastMeasuredIndex, index - 1);\n    }\n  }, {\n    key: \"_binarySearch\",\n    value: function _binarySearch(high, low, offset) {\n      while (low <= high) {\n        var middle = low + Math.floor((high - low) / 2);\n        var currentOffset = this.getSizeAndPositionOfCell(middle).offset;\n\n        if (currentOffset === offset) {\n          return middle;\n        } else if (currentOffset < offset) {\n          low = middle + 1;\n        } else if (currentOffset > offset) {\n          high = middle - 1;\n        }\n      }\n\n      if (low > 0) {\n        return low - 1;\n      } else {\n        return 0;\n      }\n    }\n  }, {\n    key: \"_exponentialSearch\",\n    value: function _exponentialSearch(index, offset) {\n      var interval = 1;\n\n      while (index < this._cellCount && this.getSizeAndPositionOfCell(index).offset < offset) {\n        index += interval;\n        interval *= 2;\n      }\n\n      return this._binarySearch(Math.min(index, this._cellCount - 1), Math.floor(index / 2), offset);\n    }\n    /**\n     * Searches for the cell (index) nearest the specified offset.\n     *\n     * If no exact match is found the next lowest cell index will be returned.\n     * This allows partially visible cells (with offsets just before/above the fold) to be visible.\n     */\n\n  }, {\n    key: \"_findNearestCell\",\n    value: function _findNearestCell(offset) {\n      if (isNaN(offset)) {\n        throw Error(\"Invalid offset \".concat(offset, \" specified\"));\n      } // Our search algorithms find the nearest match at or below the specified offset.\n      // So make sure the offset is at least 0 or no match will be found.\n\n\n      offset = Math.max(0, offset);\n      var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n      var lastMeasuredIndex = Math.max(0, this._lastMeasuredIndex);\n\n      if (lastMeasuredCellSizeAndPosition.offset >= offset) {\n        // If we've already measured cells within this range just use a binary search as it's faster.\n        return this._binarySearch(lastMeasuredIndex, 0, offset);\n      } else {\n        // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n        // The exponential search avoids pre-computing sizes for the full set of cells as a binary search would.\n        // The overall complexity for this approach is O(log n).\n        return this._exponentialSearch(lastMeasuredIndex, offset);\n      }\n    }\n  }]);\n\n  return CellSizeAndPositionManager;\n}();\n\nexport { CellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","var DEFAULT_MAX_ELEMENT_SIZE = 1500000;\nvar CHROME_MAX_ELEMENT_SIZE = 1.67771e7;\n\nvar isBrowser = function isBrowser() {\n  return typeof window !== 'undefined';\n};\n\nvar isChrome = function isChrome() {\n  return !!window.chrome;\n};\n\nexport var getMaxElementSize = function getMaxElementSize() {\n  if (isBrowser()) {\n    if (isChrome()) {\n      return CHROME_MAX_ELEMENT_SIZE;\n    }\n  }\n\n  return DEFAULT_MAX_ELEMENT_SIZE;\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport CellSizeAndPositionManager from './CellSizeAndPositionManager';\nimport { getMaxElementSize } from './maxElementSize.js';\n\n/**\n * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.\n */\nvar ScalingCellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n  function ScalingCellSizeAndPositionManager(_ref) {\n    var _ref$maxScrollSize = _ref.maxScrollSize,\n        maxScrollSize = _ref$maxScrollSize === void 0 ? getMaxElementSize() : _ref$maxScrollSize,\n        params = _objectWithoutProperties(_ref, [\"maxScrollSize\"]);\n\n    _classCallCheck(this, ScalingCellSizeAndPositionManager);\n\n    _defineProperty(this, \"_cellSizeAndPositionManager\", void 0);\n\n    _defineProperty(this, \"_maxScrollSize\", void 0);\n\n    // Favor composition over inheritance to simplify IE10 support\n    this._cellSizeAndPositionManager = new CellSizeAndPositionManager(params);\n    this._maxScrollSize = maxScrollSize;\n  }\n\n  _createClass(ScalingCellSizeAndPositionManager, [{\n    key: \"areOffsetsAdjusted\",\n    value: function areOffsetsAdjusted() {\n      return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;\n    }\n  }, {\n    key: \"configure\",\n    value: function configure(params) {\n      this._cellSizeAndPositionManager.configure(params);\n    }\n  }, {\n    key: \"getCellCount\",\n    value: function getCellCount() {\n      return this._cellSizeAndPositionManager.getCellCount();\n    }\n  }, {\n    key: \"getEstimatedCellSize\",\n    value: function getEstimatedCellSize() {\n      return this._cellSizeAndPositionManager.getEstimatedCellSize();\n    }\n  }, {\n    key: \"getLastMeasuredIndex\",\n    value: function getLastMeasuredIndex() {\n      return this._cellSizeAndPositionManager.getLastMeasuredIndex();\n    }\n    /**\n     * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.\n     * The offset passed to this function is scaled (safe) as well.\n     */\n\n  }, {\n    key: \"getOffsetAdjustment\",\n    value: function getOffsetAdjustment(_ref2) {\n      var containerSize = _ref2.containerSize,\n          offset = _ref2.offset;\n\n      var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n      var safeTotalSize = this.getTotalSize();\n\n      var offsetPercentage = this._getOffsetPercentage({\n        containerSize: containerSize,\n        offset: offset,\n        totalSize: safeTotalSize\n      });\n\n      return Math.round(offsetPercentage * (safeTotalSize - totalSize));\n    }\n  }, {\n    key: \"getSizeAndPositionOfCell\",\n    value: function getSizeAndPositionOfCell(index) {\n      return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);\n    }\n  }, {\n    key: \"getSizeAndPositionOfLastMeasuredCell\",\n    value: function getSizeAndPositionOfLastMeasuredCell() {\n      return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();\n    }\n    /** See CellSizeAndPositionManager#getTotalSize */\n\n  }, {\n    key: \"getTotalSize\",\n    value: function getTotalSize() {\n      return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());\n    }\n    /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */\n\n  }, {\n    key: \"getUpdatedOffsetForIndex\",\n    value: function getUpdatedOffsetForIndex(_ref3) {\n      var _ref3$align = _ref3.align,\n          align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n          containerSize = _ref3.containerSize,\n          currentOffset = _ref3.currentOffset,\n          targetIndex = _ref3.targetIndex;\n      currentOffset = this._safeOffsetToOffset({\n        containerSize: containerSize,\n        offset: currentOffset\n      });\n\n      var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({\n        align: align,\n        containerSize: containerSize,\n        currentOffset: currentOffset,\n        targetIndex: targetIndex\n      });\n\n      return this._offsetToSafeOffset({\n        containerSize: containerSize,\n        offset: offset\n      });\n    }\n    /** See CellSizeAndPositionManager#getVisibleCellRange */\n\n  }, {\n    key: \"getVisibleCellRange\",\n    value: function getVisibleCellRange(_ref4) {\n      var containerSize = _ref4.containerSize,\n          offset = _ref4.offset;\n      offset = this._safeOffsetToOffset({\n        containerSize: containerSize,\n        offset: offset\n      });\n      return this._cellSizeAndPositionManager.getVisibleCellRange({\n        containerSize: containerSize,\n        offset: offset\n      });\n    }\n  }, {\n    key: \"resetCell\",\n    value: function resetCell(index) {\n      this._cellSizeAndPositionManager.resetCell(index);\n    }\n  }, {\n    key: \"_getOffsetPercentage\",\n    value: function _getOffsetPercentage(_ref5) {\n      var containerSize = _ref5.containerSize,\n          offset = _ref5.offset,\n          totalSize = _ref5.totalSize;\n      return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);\n    }\n  }, {\n    key: \"_offsetToSafeOffset\",\n    value: function _offsetToSafeOffset(_ref6) {\n      var containerSize = _ref6.containerSize,\n          offset = _ref6.offset;\n\n      var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n      var safeTotalSize = this.getTotalSize();\n\n      if (totalSize === safeTotalSize) {\n        return offset;\n      } else {\n        var offsetPercentage = this._getOffsetPercentage({\n          containerSize: containerSize,\n          offset: offset,\n          totalSize: totalSize\n        });\n\n        return Math.round(offsetPercentage * (safeTotalSize - containerSize));\n      }\n    }\n  }, {\n    key: \"_safeOffsetToOffset\",\n    value: function _safeOffsetToOffset(_ref7) {\n      var containerSize = _ref7.containerSize,\n          offset = _ref7.offset;\n\n      var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n      var safeTotalSize = this.getTotalSize();\n\n      if (totalSize === safeTotalSize) {\n        return offset;\n      } else {\n        var offsetPercentage = this._getOffsetPercentage({\n          containerSize: containerSize,\n          offset: offset,\n          totalSize: safeTotalSize\n        });\n\n        return Math.round(offsetPercentage * (totalSize - containerSize));\n      }\n    }\n  }]);\n\n  return ScalingCellSizeAndPositionManager;\n}();\n\nexport { ScalingCellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","/**\n * Helper utility that updates the specified callback whenever any of the specified indices have changed.\n */\nexport default function createCallbackMemoizer() {\n  var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n  var cachedIndices = {};\n  return function (_ref) {\n    var callback = _ref.callback,\n        indices = _ref.indices;\n    var keys = Object.keys(indices);\n    var allInitialized = !requireAllKeys || keys.every(function (key) {\n      var value = indices[key];\n      return Array.isArray(value) ? value.length > 0 : value >= 0;\n    });\n    var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) {\n      var cachedValue = cachedIndices[key];\n      var value = indices[key];\n      return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;\n    });\n    cachedIndices = indices;\n\n    if (allInitialized && indexChanged) {\n      callback(indices);\n    }\n  };\n}","import ScalingCellSizeAndPositionManager from './ScalingCellSizeAndPositionManager.js';\n/**\n * Helper function that determines when to update scroll offsets to ensure that a scroll-to-index remains visible.\n * This function also ensures that the scroll ofset isn't past the last column/row of cells.\n */\n\nexport default function updateScrollIndexHelper(_ref) {\n  var cellSize = _ref.cellSize,\n      cellSizeAndPositionManager = _ref.cellSizeAndPositionManager,\n      previousCellsCount = _ref.previousCellsCount,\n      previousCellSize = _ref.previousCellSize,\n      previousScrollToAlignment = _ref.previousScrollToAlignment,\n      previousScrollToIndex = _ref.previousScrollToIndex,\n      previousSize = _ref.previousSize,\n      scrollOffset = _ref.scrollOffset,\n      scrollToAlignment = _ref.scrollToAlignment,\n      scrollToIndex = _ref.scrollToIndex,\n      size = _ref.size,\n      sizeJustIncreasedFromZero = _ref.sizeJustIncreasedFromZero,\n      updateScrollIndexCallback = _ref.updateScrollIndexCallback;\n  var cellCount = cellSizeAndPositionManager.getCellCount();\n  var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;\n  var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize; // If we have a new scroll target OR if height/row-height has changed,\n  // We should ensure that the scroll target is visible.\n\n  if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {\n    updateScrollIndexCallback(scrollToIndex); // If we don't have a selected item but list size or number of children have decreased,\n    // Make sure we aren't scrolled too far past the current content.\n  } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {\n    // We need to ensure that the current scroll offset is still within the collection's range.\n    // To do this, we don't need to measure everything; CellMeasurer would perform poorly.\n    // Just check to make sure we're still okay.\n    // Only adjust the scroll position if we've scrolled below the last set of rows.\n    if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {\n      updateScrollIndexCallback(cellCount - 1);\n    }\n  }\n}\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSize } from \"../types\";","// Properly handle server-side rendering.\nvar win;\n\nif (typeof window !== 'undefined') {\n  win = window;\n} else if (typeof self !== 'undefined') {\n  win = self;\n} else {\n  win = {};\n} // requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\nvar request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback) {\n  return win.setTimeout(callback, 1000 / 60);\n};\n\nvar cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id) {\n  win.clearTimeout(id);\n};\n\nexport var raf = request;\nexport var caf = cancel;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport calculateSizeAndPositionDataAndUpdateScrollOffset from './utils/calculateSizeAndPositionDataAndUpdateScrollOffset';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport defaultOverscanIndicesGetter, { SCROLL_DIRECTION_BACKWARD, SCROLL_DIRECTION_FORWARD } from './defaultOverscanIndicesGetter';\nimport updateScrollIndexHelper from './utils/updateScrollIndexHelper';\nimport defaultCellRangeRenderer from './defaultCellRangeRenderer';\nimport scrollbarSize from 'dom-helpers/scrollbarSize';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n  OBSERVED: 'observed',\n  REQUESTED: 'requested'\n};\n\nvar renderNull = function renderNull() {\n  return null;\n};\n\n/**\n * Renders tabular data with virtualization along the vertical and horizontal axes.\n * Row heights and column widths must be known ahead of time and specified as properties.\n */\nvar Grid = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(Grid, _React$PureComponent);\n\n  // Invokes onSectionRendered callback only when start/stop row or column indices change\n  function Grid(props) {\n    var _this;\n\n    _classCallCheck(this, Grid);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Grid).call(this, props));\n\n    _defineProperty(_assertThisInitialized(_this), \"_onGridRenderedMemoizer\", createCallbackMemoizer());\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n    _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollLeftFlag\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollTopFlag\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_horizontalScrollBarSize\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_verticalScrollBarSize\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_scrollbarPresenceChanged\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_scrollingContainer\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_childrenToDisplay\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStartIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStopIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_renderedRowStartIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_renderedRowStopIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_initialScrollTop\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_initialScrollLeft\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_disablePointerEventsTimeoutId\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_styleCache\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellCache\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_debounceScrollEndedCallback\", function () {\n      _this._disablePointerEventsTimeoutId = null; // isScrolling is used to determine if we reset styleCache\n\n      _this.setState({\n        isScrolling: false,\n        needToResetStyleCache: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_invokeOnGridRenderedHelper\", function () {\n      var onSectionRendered = _this.props.onSectionRendered;\n\n      _this._onGridRenderedMemoizer({\n        callback: onSectionRendered,\n        indices: {\n          columnOverscanStartIndex: _this._columnStartIndex,\n          columnOverscanStopIndex: _this._columnStopIndex,\n          columnStartIndex: _this._renderedColumnStartIndex,\n          columnStopIndex: _this._renderedColumnStopIndex,\n          rowOverscanStartIndex: _this._rowStartIndex,\n          rowOverscanStopIndex: _this._rowStopIndex,\n          rowStartIndex: _this._renderedRowStartIndex,\n          rowStopIndex: _this._renderedRowStopIndex\n        }\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n      _this._scrollingContainer = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n      // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n      // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n      // See issue #404 for more information.\n      if (event.target === _this._scrollingContainer) {\n        _this.handleScrollEvent(event.target);\n      }\n    });\n\n    var columnSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n      cellCount: props.columnCount,\n      cellSizeGetter: function cellSizeGetter(params) {\n        return Grid._wrapSizeGetter(props.columnWidth)(params);\n      },\n      estimatedCellSize: Grid._getEstimatedColumnSize(props)\n    });\n    var rowSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n      cellCount: props.rowCount,\n      cellSizeGetter: function cellSizeGetter(params) {\n        return Grid._wrapSizeGetter(props.rowHeight)(params);\n      },\n      estimatedCellSize: Grid._getEstimatedRowSize(props)\n    });\n    _this.state = {\n      instanceProps: {\n        columnSizeAndPositionManager: columnSizeAndPositionManager,\n        rowSizeAndPositionManager: rowSizeAndPositionManager,\n        prevColumnWidth: props.columnWidth,\n        prevRowHeight: props.rowHeight,\n        prevColumnCount: props.columnCount,\n        prevRowCount: props.rowCount,\n        prevIsScrolling: props.isScrolling === true,\n        prevScrollToColumn: props.scrollToColumn,\n        prevScrollToRow: props.scrollToRow,\n        scrollbarSize: 0,\n        scrollbarSizeMeasured: false\n      },\n      isScrolling: false,\n      scrollDirectionHorizontal: SCROLL_DIRECTION_FORWARD,\n      scrollDirectionVertical: SCROLL_DIRECTION_FORWARD,\n      scrollLeft: 0,\n      scrollTop: 0,\n      scrollPositionChangeReason: null,\n      needToResetStyleCache: false\n    };\n\n    if (props.scrollToRow > 0) {\n      _this._initialScrollTop = _this._getCalculatedScrollTop(props, _this.state);\n    }\n\n    if (props.scrollToColumn > 0) {\n      _this._initialScrollLeft = _this._getCalculatedScrollLeft(props, _this.state);\n    }\n\n    return _this;\n  }\n  /**\n   * Gets offsets for a given cell and alignment.\n   */\n\n\n  _createClass(Grid, [{\n    key: \"getOffsetForCell\",\n    value: function getOffsetForCell() {\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref$alignment = _ref.alignment,\n          alignment = _ref$alignment === void 0 ? this.props.scrollToAlignment : _ref$alignment,\n          _ref$columnIndex = _ref.columnIndex,\n          columnIndex = _ref$columnIndex === void 0 ? this.props.scrollToColumn : _ref$columnIndex,\n          _ref$rowIndex = _ref.rowIndex,\n          rowIndex = _ref$rowIndex === void 0 ? this.props.scrollToRow : _ref$rowIndex;\n\n      var offsetProps = _objectSpread({}, this.props, {\n        scrollToAlignment: alignment,\n        scrollToColumn: columnIndex,\n        scrollToRow: rowIndex\n      });\n\n      return {\n        scrollLeft: this._getCalculatedScrollLeft(offsetProps),\n        scrollTop: this._getCalculatedScrollTop(offsetProps)\n      };\n    }\n    /**\n     * Gets estimated total rows' height.\n     */\n\n  }, {\n    key: \"getTotalRowsHeight\",\n    value: function getTotalRowsHeight() {\n      return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize();\n    }\n    /**\n     * Gets estimated total columns' width.\n     */\n\n  }, {\n    key: \"getTotalColumnsWidth\",\n    value: function getTotalColumnsWidth() {\n      return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize();\n    }\n    /**\n     * This method handles a scroll event originating from an external scroll control.\n     * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.\n     */\n\n  }, {\n    key: \"handleScrollEvent\",\n    value: function handleScrollEvent(_ref2) {\n      var _ref2$scrollLeft = _ref2.scrollLeft,\n          scrollLeftParam = _ref2$scrollLeft === void 0 ? 0 : _ref2$scrollLeft,\n          _ref2$scrollTop = _ref2.scrollTop,\n          scrollTopParam = _ref2$scrollTop === void 0 ? 0 : _ref2$scrollTop;\n\n      // On iOS, we can arrive at negative offsets by swiping past the start.\n      // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.\n      if (scrollTopParam < 0) {\n        return;\n      } // Prevent pointer events from interrupting a smooth scroll\n\n\n      this._debounceScrollEnded();\n\n      var _this$props = this.props,\n          autoHeight = _this$props.autoHeight,\n          autoWidth = _this$props.autoWidth,\n          height = _this$props.height,\n          width = _this$props.width;\n      var instanceProps = this.state.instanceProps; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n      // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n      // This causes a series of rapid renders that is slow for long lists.\n      // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n      var scrollbarSize = instanceProps.scrollbarSize;\n      var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n      var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n      var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);\n      var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n      // Don't force a re-render if this is the case.\n      // The mouse may move faster then the animation frame does.\n      // Use requestAnimationFrame to avoid over-updating.\n\n      if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {\n        // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.\n        // Don't change direction for an axis unless scroll offset has changed.\n        var scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionHorizontal;\n        var scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical;\n        var newState = {\n          isScrolling: true,\n          scrollDirectionHorizontal: scrollDirectionHorizontal,\n          scrollDirectionVertical: scrollDirectionVertical,\n          scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED\n        };\n\n        if (!autoHeight) {\n          newState.scrollTop = scrollTop;\n        }\n\n        if (!autoWidth) {\n          newState.scrollLeft = scrollLeft;\n        }\n\n        newState.needToResetStyleCache = false;\n        this.setState(newState);\n      }\n\n      this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        totalColumnsWidth: totalColumnsWidth,\n        totalRowsHeight: totalRowsHeight\n      });\n    }\n    /**\n     * Invalidate Grid size and recompute visible cells.\n     * This is a deferred wrapper for recomputeGridSize().\n     * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.\n     * This method is intended for advanced use-cases like CellMeasurer.\n     */\n    // @TODO (bvaughn) Add automated test coverage for this.\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref3) {\n      var columnIndex = _ref3.columnIndex,\n          rowIndex = _ref3.rowIndex;\n      this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n      this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n    }\n    /**\n     * Pre-measure all columns and rows in a Grid.\n     * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.\n     * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).\n     */\n\n  }, {\n    key: \"measureAllCells\",\n    value: function measureAllCells() {\n      var _this$props2 = this.props,\n          columnCount = _this$props2.columnCount,\n          rowCount = _this$props2.rowCount;\n      var instanceProps = this.state.instanceProps;\n      instanceProps.columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);\n      instanceProps.rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);\n    }\n    /**\n     * Forced recompute of row heights and column widths.\n     * This function should be called if dynamic column or row sizes have changed but nothing else has.\n     * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.\n     */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref4$columnIndex = _ref4.columnIndex,\n          columnIndex = _ref4$columnIndex === void 0 ? 0 : _ref4$columnIndex,\n          _ref4$rowIndex = _ref4.rowIndex,\n          rowIndex = _ref4$rowIndex === void 0 ? 0 : _ref4$rowIndex;\n\n      var _this$props3 = this.props,\n          scrollToColumn = _this$props3.scrollToColumn,\n          scrollToRow = _this$props3.scrollToRow;\n      var instanceProps = this.state.instanceProps;\n      instanceProps.columnSizeAndPositionManager.resetCell(columnIndex);\n      instanceProps.rowSizeAndPositionManager.resetCell(rowIndex); // Cell sizes may be determined by a function property.\n      // In this case the cDU handler can't know if they changed.\n      // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.\n\n      this._recomputeScrollLeftFlag = scrollToColumn >= 0 && (this.state.scrollDirectionHorizontal === SCROLL_DIRECTION_FORWARD ? columnIndex <= scrollToColumn : columnIndex >= scrollToColumn);\n      this._recomputeScrollTopFlag = scrollToRow >= 0 && (this.state.scrollDirectionVertical === SCROLL_DIRECTION_FORWARD ? rowIndex <= scrollToRow : rowIndex >= scrollToRow); // Clear cell cache in case we are scrolling;\n      // Invalid row heights likely mean invalid cached content as well.\n\n      this._styleCache = {};\n      this._cellCache = {};\n      this.forceUpdate();\n    }\n    /**\n     * Ensure column and row are visible.\n     */\n\n  }, {\n    key: \"scrollToCell\",\n    value: function scrollToCell(_ref5) {\n      var columnIndex = _ref5.columnIndex,\n          rowIndex = _ref5.rowIndex;\n      var columnCount = this.props.columnCount;\n      var props = this.props; // Don't adjust scroll offset for single-column grids (eg List, Table).\n      // This can cause a funky scroll offset because of the vertical scrollbar width.\n\n      if (columnCount > 1 && columnIndex !== undefined) {\n        this._updateScrollLeftForScrollToColumn(_objectSpread({}, props, {\n          scrollToColumn: columnIndex\n        }));\n      }\n\n      if (rowIndex !== undefined) {\n        this._updateScrollTopForScrollToRow(_objectSpread({}, props, {\n          scrollToRow: rowIndex\n        }));\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props4 = this.props,\n          getScrollbarSize = _this$props4.getScrollbarSize,\n          height = _this$props4.height,\n          scrollLeft = _this$props4.scrollLeft,\n          scrollToColumn = _this$props4.scrollToColumn,\n          scrollTop = _this$props4.scrollTop,\n          scrollToRow = _this$props4.scrollToRow,\n          width = _this$props4.width;\n      var instanceProps = this.state.instanceProps; // Reset initial offsets to be ignored in browser\n\n      this._initialScrollTop = 0;\n      this._initialScrollLeft = 0; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n      // We must do this at the start of the method as we may calculate and update scroll position below.\n\n      this._handleInvalidatedGridSize(); // If this component was first rendered server-side, scrollbar size will be undefined.\n      // In that event we need to remeasure.\n\n\n      if (!instanceProps.scrollbarSizeMeasured) {\n        this.setState(function (prevState) {\n          var stateUpdate = _objectSpread({}, prevState, {\n            needToResetStyleCache: false\n          });\n\n          stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();\n          stateUpdate.instanceProps.scrollbarSizeMeasured = true;\n          return stateUpdate;\n        });\n      }\n\n      if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {\n        var stateUpdate = Grid._getScrollToPositionStateUpdate({\n          prevState: this.state,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        });\n\n        if (stateUpdate) {\n          stateUpdate.needToResetStyleCache = false;\n          this.setState(stateUpdate);\n        }\n      } // refs don't work in `react-test-renderer`\n\n\n      if (this._scrollingContainer) {\n        // setting the ref's scrollLeft and scrollTop.\n        // Somehow in MultiGrid the main grid doesn't trigger a update on mount.\n        if (this._scrollingContainer.scrollLeft !== this.state.scrollLeft) {\n          this._scrollingContainer.scrollLeft = this.state.scrollLeft;\n        }\n\n        if (this._scrollingContainer.scrollTop !== this.state.scrollTop) {\n          this._scrollingContainer.scrollTop = this.state.scrollTop;\n        }\n      } // Don't update scroll offset if the size is 0; we don't render any cells in this case.\n      // Setting a state may cause us to later thing we've updated the offce when we haven't.\n\n\n      var sizeIsBiggerThanZero = height > 0 && width > 0;\n\n      if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {\n        this._updateScrollLeftForScrollToColumn();\n      }\n\n      if (scrollToRow >= 0 && sizeIsBiggerThanZero) {\n        this._updateScrollTopForScrollToRow();\n      } // Update onRowsRendered callback\n\n\n      this._invokeOnGridRenderedHelper(); // Initialize onScroll callback\n\n\n      this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft || 0,\n        scrollTop: scrollTop || 0,\n        totalColumnsWidth: instanceProps.columnSizeAndPositionManager.getTotalSize(),\n        totalRowsHeight: instanceProps.rowSizeAndPositionManager.getTotalSize()\n      });\n\n      this._maybeCallOnScrollbarPresenceChange();\n    }\n    /**\n     * @private\n     * This method updates scrollLeft/scrollTop in state for the following conditions:\n     * 1) New scroll-to-cell props have been set\n     */\n\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this2 = this;\n\n      var _this$props5 = this.props,\n          autoHeight = _this$props5.autoHeight,\n          autoWidth = _this$props5.autoWidth,\n          columnCount = _this$props5.columnCount,\n          height = _this$props5.height,\n          rowCount = _this$props5.rowCount,\n          scrollToAlignment = _this$props5.scrollToAlignment,\n          scrollToColumn = _this$props5.scrollToColumn,\n          scrollToRow = _this$props5.scrollToRow,\n          width = _this$props5.width;\n      var _this$state = this.state,\n          scrollLeft = _this$state.scrollLeft,\n          scrollPositionChangeReason = _this$state.scrollPositionChangeReason,\n          scrollTop = _this$state.scrollTop,\n          instanceProps = _this$state.instanceProps; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n      // We must do this at the start of the method as we may calculate and update scroll position below.\n\n      this._handleInvalidatedGridSize(); // Handle edge case where column or row count has only just increased over 0.\n      // In this case we may have to restore a previously-specified scroll offset.\n      // For more info see bvaughn/react-virtualized/issues/218\n\n\n      var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n      // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n      // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n      // So we only set these when we require an adjustment of the scroll position.\n      // See issue #2 for more information.\n\n      if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n        // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).\n        // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.\n        if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {\n          this._scrollingContainer.scrollLeft = scrollLeft;\n        }\n\n        if (!autoHeight && scrollTop >= 0 && (scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {\n          this._scrollingContainer.scrollTop = scrollTop;\n        }\n      } // Special case where the previous size was 0:\n      // In this case we don't show any windowed cells at all.\n      // So we should always recalculate offset afterwards.\n\n\n      var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0; // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it\n      // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?\n\n      if (this._recomputeScrollLeftFlag) {\n        this._recomputeScrollLeftFlag = false;\n\n        this._updateScrollLeftForScrollToColumn(this.props);\n      } else {\n        updateScrollIndexHelper({\n          cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n          previousCellsCount: prevProps.columnCount,\n          previousCellSize: prevProps.columnWidth,\n          previousScrollToAlignment: prevProps.scrollToAlignment,\n          previousScrollToIndex: prevProps.scrollToColumn,\n          previousSize: prevProps.width,\n          scrollOffset: scrollLeft,\n          scrollToAlignment: scrollToAlignment,\n          scrollToIndex: scrollToColumn,\n          size: width,\n          sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n          updateScrollIndexCallback: function updateScrollIndexCallback() {\n            return _this2._updateScrollLeftForScrollToColumn(_this2.props);\n          }\n        });\n      }\n\n      if (this._recomputeScrollTopFlag) {\n        this._recomputeScrollTopFlag = false;\n\n        this._updateScrollTopForScrollToRow(this.props);\n      } else {\n        updateScrollIndexHelper({\n          cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n          previousCellsCount: prevProps.rowCount,\n          previousCellSize: prevProps.rowHeight,\n          previousScrollToAlignment: prevProps.scrollToAlignment,\n          previousScrollToIndex: prevProps.scrollToRow,\n          previousSize: prevProps.height,\n          scrollOffset: scrollTop,\n          scrollToAlignment: scrollToAlignment,\n          scrollToIndex: scrollToRow,\n          size: height,\n          sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n          updateScrollIndexCallback: function updateScrollIndexCallback() {\n            return _this2._updateScrollTopForScrollToRow(_this2.props);\n          }\n        });\n      } // Update onRowsRendered callback if start/stop indices have changed\n\n\n      this._invokeOnGridRenderedHelper(); // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners\n\n\n      if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {\n        var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n        var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n\n        this._invokeOnScrollMemoizer({\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          totalColumnsWidth: totalColumnsWidth,\n          totalRowsHeight: totalRowsHeight\n        });\n      }\n\n      this._maybeCallOnScrollbarPresenceChange();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._disablePointerEventsTimeoutId) {\n        cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n      }\n    }\n    /**\n     * This method updates scrollLeft/scrollTop in state for the following conditions:\n     * 1) Empty content (0 rows or columns)\n     * 2) New scroll props overriding the current state\n     * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n     */\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props6 = this.props,\n          autoContainerWidth = _this$props6.autoContainerWidth,\n          autoHeight = _this$props6.autoHeight,\n          autoWidth = _this$props6.autoWidth,\n          className = _this$props6.className,\n          containerProps = _this$props6.containerProps,\n          containerRole = _this$props6.containerRole,\n          containerStyle = _this$props6.containerStyle,\n          height = _this$props6.height,\n          id = _this$props6.id,\n          noContentRenderer = _this$props6.noContentRenderer,\n          role = _this$props6.role,\n          style = _this$props6.style,\n          tabIndex = _this$props6.tabIndex,\n          width = _this$props6.width;\n      var _this$state2 = this.state,\n          instanceProps = _this$state2.instanceProps,\n          needToResetStyleCache = _this$state2.needToResetStyleCache;\n\n      var isScrolling = this._isScrolling();\n\n      var gridStyle = {\n        boxSizing: 'border-box',\n        direction: 'ltr',\n        height: autoHeight ? 'auto' : height,\n        position: 'relative',\n        width: autoWidth ? 'auto' : width,\n        WebkitOverflowScrolling: 'touch',\n        willChange: 'transform'\n      };\n\n      if (needToResetStyleCache) {\n        this._styleCache = {};\n      } // calculate _styleCache here\n      // if state.isScrolling (not from _isScrolling) then reset\n\n\n      if (!this.state.isScrolling) {\n        this._resetStyleCache();\n      } // calculate children to render here\n\n\n      this._calculateChildrenToRender(this.props, this.state);\n\n      var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n      var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize(); // Force browser to hide scrollbars when we know they aren't necessary.\n      // Otherwise once scrollbars appear they may not disappear again.\n      // For more info see issue #116\n\n      var verticalScrollBarSize = totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n      var horizontalScrollBarSize = totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n      if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {\n        this._horizontalScrollBarSize = horizontalScrollBarSize;\n        this._verticalScrollBarSize = verticalScrollBarSize;\n        this._scrollbarPresenceChanged = true;\n      } // Also explicitly init styles to 'auto' if scrollbars are required.\n      // This works around an obscure edge case where external CSS styles have not yet been loaded,\n      // But an initial scroll index of offset is set as an external prop.\n      // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n      // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n\n      gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n      gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n      var childrenToDisplay = this._childrenToDisplay;\n      var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;\n      return React.createElement(\"div\", _extends({\n        ref: this._setScrollingContainerRef\n      }, containerProps, {\n        \"aria-label\": this.props['aria-label'],\n        \"aria-readonly\": this.props['aria-readonly'],\n        className: clsx('ReactVirtualized__Grid', className),\n        id: id,\n        onScroll: this._onScroll,\n        role: role,\n        style: _objectSpread({}, gridStyle, {}, style),\n        tabIndex: tabIndex\n      }), childrenToDisplay.length > 0 && React.createElement(\"div\", {\n        className: \"ReactVirtualized__Grid__innerScrollContainer\",\n        role: containerRole,\n        style: _objectSpread({\n          width: autoContainerWidth ? 'auto' : totalColumnsWidth,\n          height: totalRowsHeight,\n          maxWidth: totalColumnsWidth,\n          maxHeight: totalRowsHeight,\n          overflow: 'hidden',\n          pointerEvents: isScrolling ? 'none' : '',\n          position: 'relative'\n        }, containerStyle)\n      }, childrenToDisplay), showNoContentRenderer && noContentRenderer());\n    }\n    /* ---------------------------- Helper methods ---------------------------- */\n\n  }, {\n    key: \"_calculateChildrenToRender\",\n    value: function _calculateChildrenToRender() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      var cellRenderer = props.cellRenderer,\n          cellRangeRenderer = props.cellRangeRenderer,\n          columnCount = props.columnCount,\n          deferredMeasurementCache = props.deferredMeasurementCache,\n          height = props.height,\n          overscanColumnCount = props.overscanColumnCount,\n          overscanIndicesGetter = props.overscanIndicesGetter,\n          overscanRowCount = props.overscanRowCount,\n          rowCount = props.rowCount,\n          width = props.width,\n          isScrollingOptOut = props.isScrollingOptOut;\n      var scrollDirectionHorizontal = state.scrollDirectionHorizontal,\n          scrollDirectionVertical = state.scrollDirectionVertical,\n          instanceProps = state.instanceProps;\n      var scrollTop = this._initialScrollTop > 0 ? this._initialScrollTop : state.scrollTop;\n      var scrollLeft = this._initialScrollLeft > 0 ? this._initialScrollLeft : state.scrollLeft;\n\n      var isScrolling = this._isScrolling(props, state);\n\n      this._childrenToDisplay = []; // Render only enough columns and rows to cover the visible area of the grid.\n\n      if (height > 0 && width > 0) {\n        var visibleColumnIndices = instanceProps.columnSizeAndPositionManager.getVisibleCellRange({\n          containerSize: width,\n          offset: scrollLeft\n        });\n        var visibleRowIndices = instanceProps.rowSizeAndPositionManager.getVisibleCellRange({\n          containerSize: height,\n          offset: scrollTop\n        });\n        var horizontalOffsetAdjustment = instanceProps.columnSizeAndPositionManager.getOffsetAdjustment({\n          containerSize: width,\n          offset: scrollLeft\n        });\n        var verticalOffsetAdjustment = instanceProps.rowSizeAndPositionManager.getOffsetAdjustment({\n          containerSize: height,\n          offset: scrollTop\n        }); // Store for _invokeOnGridRenderedHelper()\n\n        this._renderedColumnStartIndex = visibleColumnIndices.start;\n        this._renderedColumnStopIndex = visibleColumnIndices.stop;\n        this._renderedRowStartIndex = visibleRowIndices.start;\n        this._renderedRowStopIndex = visibleRowIndices.stop;\n        var overscanColumnIndices = overscanIndicesGetter({\n          direction: 'horizontal',\n          cellCount: columnCount,\n          overscanCellsCount: overscanColumnCount,\n          scrollDirection: scrollDirectionHorizontal,\n          startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,\n          stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1\n        });\n        var overscanRowIndices = overscanIndicesGetter({\n          direction: 'vertical',\n          cellCount: rowCount,\n          overscanCellsCount: overscanRowCount,\n          scrollDirection: scrollDirectionVertical,\n          startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,\n          stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1\n        }); // Store for _invokeOnGridRenderedHelper()\n\n        var columnStartIndex = overscanColumnIndices.overscanStartIndex;\n        var columnStopIndex = overscanColumnIndices.overscanStopIndex;\n        var rowStartIndex = overscanRowIndices.overscanStartIndex;\n        var rowStopIndex = overscanRowIndices.overscanStopIndex; // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.\n\n        if (deferredMeasurementCache) {\n          // If rows have a dynamic height, scan the rows we are about to render.\n          // If any have not yet been measured, then we need to render all columns initially,\n          // Because the height of the row is equal to the tallest cell within that row,\n          // (And so we can't know the height without measuring all column-cells first).\n          if (!deferredMeasurementCache.hasFixedHeight()) {\n            for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n              if (!deferredMeasurementCache.has(rowIndex, 0)) {\n                columnStartIndex = 0;\n                columnStopIndex = columnCount - 1;\n                break;\n              }\n            }\n          } // If columns have a dynamic width, scan the columns we are about to render.\n          // If any have not yet been measured, then we need to render all rows initially,\n          // Because the width of the column is equal to the widest cell within that column,\n          // (And so we can't know the width without measuring all row-cells first).\n\n\n          if (!deferredMeasurementCache.hasFixedWidth()) {\n            for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n              if (!deferredMeasurementCache.has(0, columnIndex)) {\n                rowStartIndex = 0;\n                rowStopIndex = rowCount - 1;\n                break;\n              }\n            }\n          }\n        }\n\n        this._childrenToDisplay = cellRangeRenderer({\n          cellCache: this._cellCache,\n          cellRenderer: cellRenderer,\n          columnSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n          columnStartIndex: columnStartIndex,\n          columnStopIndex: columnStopIndex,\n          deferredMeasurementCache: deferredMeasurementCache,\n          horizontalOffsetAdjustment: horizontalOffsetAdjustment,\n          isScrolling: isScrolling,\n          isScrollingOptOut: isScrollingOptOut,\n          parent: this,\n          rowSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n          rowStartIndex: rowStartIndex,\n          rowStopIndex: rowStopIndex,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          styleCache: this._styleCache,\n          verticalOffsetAdjustment: verticalOffsetAdjustment,\n          visibleColumnIndices: visibleColumnIndices,\n          visibleRowIndices: visibleRowIndices\n        }); // update the indices\n\n        this._columnStartIndex = columnStartIndex;\n        this._columnStopIndex = columnStopIndex;\n        this._rowStartIndex = rowStartIndex;\n        this._rowStopIndex = rowStopIndex;\n      }\n    }\n    /**\n     * Sets an :isScrolling flag for a small window of time.\n     * This flag is used to disable pointer events on the scrollable portion of the Grid.\n     * This prevents jerky/stuttery mouse-wheel scrolling.\n     */\n\n  }, {\n    key: \"_debounceScrollEnded\",\n    value: function _debounceScrollEnded() {\n      var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n      if (this._disablePointerEventsTimeoutId) {\n        cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n      }\n\n      this._disablePointerEventsTimeoutId = requestAnimationTimeout(this._debounceScrollEndedCallback, scrollingResetTimeInterval);\n    }\n  }, {\n    key: \"_handleInvalidatedGridSize\",\n\n    /**\n     * Check for batched CellMeasurer size invalidations.\n     * This will occur the first time one or more previously unmeasured cells are rendered.\n     */\n    value: function _handleInvalidatedGridSize() {\n      if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {\n        var columnIndex = this._deferredInvalidateColumnIndex;\n        var rowIndex = this._deferredInvalidateRowIndex;\n        this._deferredInvalidateColumnIndex = null;\n        this._deferredInvalidateRowIndex = null;\n        this.recomputeGridSize({\n          columnIndex: columnIndex,\n          rowIndex: rowIndex\n        });\n      }\n    }\n  }, {\n    key: \"_invokeOnScrollMemoizer\",\n    value: function _invokeOnScrollMemoizer(_ref6) {\n      var _this3 = this;\n\n      var scrollLeft = _ref6.scrollLeft,\n          scrollTop = _ref6.scrollTop,\n          totalColumnsWidth = _ref6.totalColumnsWidth,\n          totalRowsHeight = _ref6.totalRowsHeight;\n\n      this._onScrollMemoizer({\n        callback: function callback(_ref7) {\n          var scrollLeft = _ref7.scrollLeft,\n              scrollTop = _ref7.scrollTop;\n          var _this3$props = _this3.props,\n              height = _this3$props.height,\n              onScroll = _this3$props.onScroll,\n              width = _this3$props.width;\n          onScroll({\n            clientHeight: height,\n            clientWidth: width,\n            scrollHeight: totalRowsHeight,\n            scrollLeft: scrollLeft,\n            scrollTop: scrollTop,\n            scrollWidth: totalColumnsWidth\n          });\n        },\n        indices: {\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        }\n      });\n    }\n  }, {\n    key: \"_isScrolling\",\n    value: function _isScrolling() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      // If isScrolling is defined in props, use it to override the value in state\n      // This is a performance optimization for WindowScroller + Grid\n      return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);\n    }\n  }, {\n    key: \"_maybeCallOnScrollbarPresenceChange\",\n    value: function _maybeCallOnScrollbarPresenceChange() {\n      if (this._scrollbarPresenceChanged) {\n        var onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;\n        this._scrollbarPresenceChanged = false;\n        onScrollbarPresenceChange({\n          horizontal: this._horizontalScrollBarSize > 0,\n          size: this.state.instanceProps.scrollbarSize,\n          vertical: this._verticalScrollBarSize > 0\n        });\n      }\n    }\n  }, {\n    key: \"scrollToPosition\",\n\n    /**\n     * Scroll to the specified offset(s).\n     * Useful for animating position changes.\n     */\n    value: function scrollToPosition(_ref8) {\n      var scrollLeft = _ref8.scrollLeft,\n          scrollTop = _ref8.scrollTop;\n\n      var stateUpdate = Grid._getScrollToPositionStateUpdate({\n        prevState: this.state,\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop\n      });\n\n      if (stateUpdate) {\n        stateUpdate.needToResetStyleCache = false;\n        this.setState(stateUpdate);\n      }\n    }\n  }, {\n    key: \"_getCalculatedScrollLeft\",\n    value: function _getCalculatedScrollLeft() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      return Grid._getCalculatedScrollLeft(props, state);\n    }\n  }, {\n    key: \"_updateScrollLeftForScrollToColumn\",\n    value: function _updateScrollLeftForScrollToColumn() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n      var stateUpdate = Grid._getScrollLeftForScrollToColumnStateUpdate(props, state);\n\n      if (stateUpdate) {\n        stateUpdate.needToResetStyleCache = false;\n        this.setState(stateUpdate);\n      }\n    }\n  }, {\n    key: \"_getCalculatedScrollTop\",\n    value: function _getCalculatedScrollTop() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n      return Grid._getCalculatedScrollTop(props, state);\n    }\n  }, {\n    key: \"_resetStyleCache\",\n    value: function _resetStyleCache() {\n      var styleCache = this._styleCache;\n      var cellCache = this._cellCache;\n      var isScrollingOptOut = this.props.isScrollingOptOut; // Reset cell and style caches once scrolling stops.\n      // This makes Grid simpler to use (since cells commonly change).\n      // And it keeps the caches from growing too large.\n      // Performance is most sensitive when a user is scrolling.\n      // Don't clear visible cells from cellCache if isScrollingOptOut is specified.\n      // This keeps the cellCache to a resonable size.\n\n      this._cellCache = {};\n      this._styleCache = {}; // Copy over the visible cell styles so avoid unnecessary re-render.\n\n      for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {\n        for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {\n          var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n          this._styleCache[key] = styleCache[key];\n\n          if (isScrollingOptOut) {\n            this._cellCache[key] = cellCache[key];\n          }\n        }\n      }\n    }\n  }, {\n    key: \"_updateScrollTopForScrollToRow\",\n    value: function _updateScrollTopForScrollToRow() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n      var stateUpdate = Grid._getScrollTopForScrollToRowStateUpdate(props, state);\n\n      if (stateUpdate) {\n        stateUpdate.needToResetStyleCache = false;\n        this.setState(stateUpdate);\n      }\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var newState = {};\n\n      if (nextProps.columnCount === 0 && prevState.scrollLeft !== 0 || nextProps.rowCount === 0 && prevState.scrollTop !== 0) {\n        newState.scrollLeft = 0;\n        newState.scrollTop = 0; // only use scroll{Left,Top} from props if scrollTo{Column,Row} isn't specified\n        // scrollTo{Column,Row} should override scroll{Left,Top}\n      } else if (nextProps.scrollLeft !== prevState.scrollLeft && nextProps.scrollToColumn < 0 || nextProps.scrollTop !== prevState.scrollTop && nextProps.scrollToRow < 0) {\n        Object.assign(newState, Grid._getScrollToPositionStateUpdate({\n          prevState: prevState,\n          scrollLeft: nextProps.scrollLeft,\n          scrollTop: nextProps.scrollTop\n        }));\n      }\n\n      var instanceProps = prevState.instanceProps; // Initially we should not clearStyleCache\n\n      newState.needToResetStyleCache = false;\n\n      if (nextProps.columnWidth !== instanceProps.prevColumnWidth || nextProps.rowHeight !== instanceProps.prevRowHeight) {\n        // Reset cache. set it to {} in render\n        newState.needToResetStyleCache = true;\n      }\n\n      instanceProps.columnSizeAndPositionManager.configure({\n        cellCount: nextProps.columnCount,\n        estimatedCellSize: Grid._getEstimatedColumnSize(nextProps),\n        cellSizeGetter: Grid._wrapSizeGetter(nextProps.columnWidth)\n      });\n      instanceProps.rowSizeAndPositionManager.configure({\n        cellCount: nextProps.rowCount,\n        estimatedCellSize: Grid._getEstimatedRowSize(nextProps),\n        cellSizeGetter: Grid._wrapSizeGetter(nextProps.rowHeight)\n      });\n\n      if (instanceProps.prevColumnCount === 0 || instanceProps.prevRowCount === 0) {\n        instanceProps.prevColumnCount = 0;\n        instanceProps.prevRowCount = 0;\n      } // If scrolling is controlled outside this component, clear cache when scrolling stops\n\n\n      if (nextProps.autoHeight && nextProps.isScrolling === false && instanceProps.prevIsScrolling === true) {\n        Object.assign(newState, {\n          isScrolling: false\n        });\n      }\n\n      var maybeStateA;\n      var maybeStateB;\n      calculateSizeAndPositionDataAndUpdateScrollOffset({\n        cellCount: instanceProps.prevColumnCount,\n        cellSize: typeof instanceProps.prevColumnWidth === 'number' ? instanceProps.prevColumnWidth : null,\n        computeMetadataCallback: function computeMetadataCallback() {\n          return instanceProps.columnSizeAndPositionManager.resetCell(0);\n        },\n        computeMetadataCallbackProps: nextProps,\n        nextCellsCount: nextProps.columnCount,\n        nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,\n        nextScrollToIndex: nextProps.scrollToColumn,\n        scrollToIndex: instanceProps.prevScrollToColumn,\n        updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n          maybeStateA = Grid._getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState);\n        }\n      });\n      calculateSizeAndPositionDataAndUpdateScrollOffset({\n        cellCount: instanceProps.prevRowCount,\n        cellSize: typeof instanceProps.prevRowHeight === 'number' ? instanceProps.prevRowHeight : null,\n        computeMetadataCallback: function computeMetadataCallback() {\n          return instanceProps.rowSizeAndPositionManager.resetCell(0);\n        },\n        computeMetadataCallbackProps: nextProps,\n        nextCellsCount: nextProps.rowCount,\n        nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,\n        nextScrollToIndex: nextProps.scrollToRow,\n        scrollToIndex: instanceProps.prevScrollToRow,\n        updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n          maybeStateB = Grid._getScrollTopForScrollToRowStateUpdate(nextProps, prevState);\n        }\n      });\n      instanceProps.prevColumnCount = nextProps.columnCount;\n      instanceProps.prevColumnWidth = nextProps.columnWidth;\n      instanceProps.prevIsScrolling = nextProps.isScrolling === true;\n      instanceProps.prevRowCount = nextProps.rowCount;\n      instanceProps.prevRowHeight = nextProps.rowHeight;\n      instanceProps.prevScrollToColumn = nextProps.scrollToColumn;\n      instanceProps.prevScrollToRow = nextProps.scrollToRow; // getting scrollBarSize (moved from componentWillMount)\n\n      instanceProps.scrollbarSize = nextProps.getScrollbarSize();\n\n      if (instanceProps.scrollbarSize === undefined) {\n        instanceProps.scrollbarSizeMeasured = false;\n        instanceProps.scrollbarSize = 0;\n      } else {\n        instanceProps.scrollbarSizeMeasured = true;\n      }\n\n      newState.instanceProps = instanceProps;\n      return _objectSpread({}, newState, {}, maybeStateA, {}, maybeStateB);\n    }\n  }, {\n    key: \"_getEstimatedColumnSize\",\n    value: function _getEstimatedColumnSize(props) {\n      return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;\n    }\n  }, {\n    key: \"_getEstimatedRowSize\",\n    value: function _getEstimatedRowSize(props) {\n      return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;\n    }\n  }, {\n    key: \"_getScrollToPositionStateUpdate\",\n\n    /**\n     * Get the updated state after scrolling to\n     * scrollLeft and scrollTop\n     */\n    value: function _getScrollToPositionStateUpdate(_ref9) {\n      var prevState = _ref9.prevState,\n          scrollLeft = _ref9.scrollLeft,\n          scrollTop = _ref9.scrollTop;\n      var newState = {\n        scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n      };\n\n      if (typeof scrollLeft === 'number' && scrollLeft >= 0) {\n        newState.scrollDirectionHorizontal = scrollLeft > prevState.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n        newState.scrollLeft = scrollLeft;\n      }\n\n      if (typeof scrollTop === 'number' && scrollTop >= 0) {\n        newState.scrollDirectionVertical = scrollTop > prevState.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n        newState.scrollTop = scrollTop;\n      }\n\n      if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== prevState.scrollTop) {\n        return newState;\n      }\n\n      return {};\n    }\n  }, {\n    key: \"_wrapSizeGetter\",\n    value: function _wrapSizeGetter(value) {\n      return typeof value === 'function' ? value : function () {\n        return value;\n      };\n    }\n  }, {\n    key: \"_getCalculatedScrollLeft\",\n    value: function _getCalculatedScrollLeft(nextProps, prevState) {\n      var columnCount = nextProps.columnCount,\n          height = nextProps.height,\n          scrollToAlignment = nextProps.scrollToAlignment,\n          scrollToColumn = nextProps.scrollToColumn,\n          width = nextProps.width;\n      var scrollLeft = prevState.scrollLeft,\n          instanceProps = prevState.instanceProps;\n\n      if (columnCount > 0) {\n        var finalColumn = columnCount - 1;\n        var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);\n        var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n        var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n        return instanceProps.columnSizeAndPositionManager.getUpdatedOffsetForIndex({\n          align: scrollToAlignment,\n          containerSize: width - scrollBarSize,\n          currentOffset: scrollLeft,\n          targetIndex: targetIndex\n        });\n      }\n\n      return 0;\n    }\n  }, {\n    key: \"_getScrollLeftForScrollToColumnStateUpdate\",\n    value: function _getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState) {\n      var scrollLeft = prevState.scrollLeft;\n\n      var calculatedScrollLeft = Grid._getCalculatedScrollLeft(nextProps, prevState);\n\n      if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {\n        return Grid._getScrollToPositionStateUpdate({\n          prevState: prevState,\n          scrollLeft: calculatedScrollLeft,\n          scrollTop: -1\n        });\n      }\n\n      return {};\n    }\n  }, {\n    key: \"_getCalculatedScrollTop\",\n    value: function _getCalculatedScrollTop(nextProps, prevState) {\n      var height = nextProps.height,\n          rowCount = nextProps.rowCount,\n          scrollToAlignment = nextProps.scrollToAlignment,\n          scrollToRow = nextProps.scrollToRow,\n          width = nextProps.width;\n      var scrollTop = prevState.scrollTop,\n          instanceProps = prevState.instanceProps;\n\n      if (rowCount > 0) {\n        var finalRow = rowCount - 1;\n        var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);\n        var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n        var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n        return instanceProps.rowSizeAndPositionManager.getUpdatedOffsetForIndex({\n          align: scrollToAlignment,\n          containerSize: height - scrollBarSize,\n          currentOffset: scrollTop,\n          targetIndex: targetIndex\n        });\n      }\n\n      return 0;\n    }\n  }, {\n    key: \"_getScrollTopForScrollToRowStateUpdate\",\n    value: function _getScrollTopForScrollToRowStateUpdate(nextProps, prevState) {\n      var scrollTop = prevState.scrollTop;\n\n      var calculatedScrollTop = Grid._getCalculatedScrollTop(nextProps, prevState);\n\n      if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {\n        return Grid._getScrollToPositionStateUpdate({\n          prevState: prevState,\n          scrollLeft: -1,\n          scrollTop: calculatedScrollTop\n        });\n      }\n\n      return {};\n    }\n  }]);\n\n  return Grid;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"aria-label\": PropTypes.string.isRequired,\n  \"aria-readonly\": PropTypes.bool,\n\n  /**\n   * Set the width of the inner scrollable container to 'auto'.\n   * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.\n   */\n  \"autoContainerWidth\": PropTypes.bool.isRequired,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.\n   * Intended for use with WindowScroller\n   */\n  \"autoHeight\": PropTypes.bool.isRequired,\n\n  /**\n   * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.\n   * Intended for use with WindowScroller\n   */\n  \"autoWidth\": PropTypes.bool.isRequired,\n\n  /** Responsible for rendering a cell given an row and column index.  */\n  \"cellRenderer\": function cellRenderer() {\n    return (typeof bpfrpt_proptype_CellRenderer === \"function\" ? bpfrpt_proptype_CellRenderer.isRequired ? bpfrpt_proptype_CellRenderer.isRequired : bpfrpt_proptype_CellRenderer : PropTypes.shape(bpfrpt_proptype_CellRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Responsible for rendering a group of cells given their index ranges.  */\n  \"cellRangeRenderer\": function cellRangeRenderer() {\n    return (typeof bpfrpt_proptype_CellRangeRenderer === \"function\" ? bpfrpt_proptype_CellRangeRenderer.isRequired ? bpfrpt_proptype_CellRangeRenderer.isRequired : bpfrpt_proptype_CellRangeRenderer : PropTypes.shape(bpfrpt_proptype_CellRangeRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Optional custom CSS class name to attach to root Grid element.  */\n  \"className\": PropTypes.string,\n\n  /** Number of columns in grid.  */\n  \"columnCount\": PropTypes.number.isRequired,\n\n  /** Either a fixed column width (number) or a function that returns the width of a column given its index.  */\n  \"columnWidth\": function columnWidth() {\n    return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n  },\n\n  /** Unfiltered props for the Grid container. */\n  \"containerProps\": PropTypes.object,\n\n  /** ARIA role for the cell-container.  */\n  \"containerRole\": PropTypes.string.isRequired,\n\n  /** Optional inline style applied to inner cell-container */\n  \"containerStyle\": PropTypes.object.isRequired,\n\n  /**\n   * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.\n   * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.\n   */\n  \"deferredMeasurementCache\": PropTypes.object,\n\n  /**\n   * Used to estimate the total width of a Grid before all of its columns have actually been measured.\n   * The estimated total width is adjusted as columns are rendered.\n   */\n  \"estimatedColumnSize\": PropTypes.number.isRequired,\n\n  /**\n   * Used to estimate the total height of a Grid before all of its rows have actually been measured.\n   * The estimated total height is adjusted as rows are rendered.\n   */\n  \"estimatedRowSize\": PropTypes.number.isRequired,\n\n  /** Exposed for testing purposes only.  */\n  \"getScrollbarSize\": PropTypes.func.isRequired,\n\n  /** Height of Grid; this property determines the number of visible (vs virtualized) rows.  */\n  \"height\": PropTypes.number.isRequired,\n\n  /** Optional custom id to attach to root Grid element.  */\n  \"id\": PropTypes.string,\n\n  /**\n   * Override internal is-scrolling state tracking.\n   * This property is primarily intended for use with the WindowScroller component.\n   */\n  \"isScrolling\": PropTypes.bool,\n\n  /**\n   * Opt-out of isScrolling param passed to cellRangeRenderer.\n   * To avoid the extra render when scroll stops.\n   */\n  \"isScrollingOptOut\": PropTypes.bool.isRequired,\n\n  /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0.  */\n  \"noContentRenderer\": function noContentRenderer() {\n    return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n  },\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   */\n  \"onScroll\": PropTypes.func.isRequired,\n\n  /**\n   * Called whenever a horizontal or vertical scrollbar is added or removed.\n   * This prop is not intended for end-user use;\n   * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.\n   */\n  \"onScrollbarPresenceChange\": PropTypes.func.isRequired,\n\n  /** Callback invoked with information about the section of the Grid that was just rendered.  */\n  \"onSectionRendered\": PropTypes.func.isRequired,\n\n  /**\n   * Number of columns to render before/after the visible section of the grid.\n   * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n   */\n  \"overscanColumnCount\": PropTypes.number.isRequired,\n\n  /**\n   * Calculates the number of cells to overscan before and after a specified range.\n   * This function ensures that overscanning doesn't exceed the available cells.\n   */\n  \"overscanIndicesGetter\": function overscanIndicesGetter() {\n    return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n  },\n\n  /**\n   * Number of rows to render above/below the visible section of the grid.\n   * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n   */\n  \"overscanRowCount\": PropTypes.number.isRequired,\n\n  /** ARIA role for the grid element.  */\n  \"role\": PropTypes.string.isRequired,\n\n  /**\n   * Either a fixed row height (number) or a function that returns the height of a row given its index.\n   * Should implement the following interface: ({ index: number }): number\n   */\n  \"rowHeight\": function rowHeight() {\n    return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n  },\n\n  /** Number of rows in grid.  */\n  \"rowCount\": PropTypes.number.isRequired,\n\n  /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */\n  \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n  /** Horizontal offset. */\n  \"scrollLeft\": PropTypes.number,\n\n  /**\n   * Controls scroll-to-cell behavior of the Grid.\n   * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n   * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n   */\n  \"scrollToAlignment\": function scrollToAlignment() {\n    return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n  },\n\n  /** Column index to ensure visible (by forcefully scrolling if necessary) */\n  \"scrollToColumn\": PropTypes.number.isRequired,\n\n  /** Vertical offset. */\n  \"scrollTop\": PropTypes.number,\n\n  /** Row index to ensure visible (by forcefully scrolling if necessary) */\n  \"scrollToRow\": PropTypes.number.isRequired,\n\n  /** Optional inline style */\n  \"style\": PropTypes.object.isRequired,\n\n  /** Tab index for focus */\n  \"tabIndex\": PropTypes.number,\n\n  /** Width of Grid; this property determines the number of visible (vs virtualized) columns.  */\n  \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(Grid, \"defaultProps\", {\n  'aria-label': 'grid',\n  'aria-readonly': true,\n  autoContainerWidth: false,\n  autoHeight: false,\n  autoWidth: false,\n  cellRangeRenderer: defaultCellRangeRenderer,\n  containerRole: 'rowgroup',\n  containerStyle: {},\n  estimatedColumnSize: 100,\n  estimatedRowSize: 30,\n  getScrollbarSize: scrollbarSize,\n  noContentRenderer: renderNull,\n  onScroll: function onScroll() {},\n  onScrollbarPresenceChange: function onScrollbarPresenceChange() {},\n  onSectionRendered: function onSectionRendered() {},\n  overscanColumnCount: 0,\n  overscanIndicesGetter: defaultOverscanIndicesGetter,\n  overscanRowCount: 10,\n  role: 'grid',\n  scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n  scrollToAlignment: 'auto',\n  scrollToColumn: -1,\n  scrollToRow: -1,\n  style: {},\n  tabIndex: 0,\n  isScrollingOptOut: false\n});\n\npolyfill(Grid);\nexport default Grid;\nimport { bpfrpt_proptype_CellRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellRangeRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellPosition } from \"./types\";\nimport { bpfrpt_proptype_CellSize } from \"./types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"./types\";\nimport { bpfrpt_proptype_NoContentRenderer } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport { bpfrpt_proptype_ScrollbarPresenceChange } from \"./types\";\nimport { bpfrpt_proptype_RenderedSection } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"./types\";\nimport { bpfrpt_proptype_Alignment } from \"./types\";\nimport { bpfrpt_proptype_CellCache } from \"./types\";\nimport { bpfrpt_proptype_StyleCache } from \"./types\";\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";","import { caf, raf } from './animationFrame';\nvar bpfrpt_proptype_AnimationTimeoutId = process.env.NODE_ENV === 'production' ? null : {\n  \"id\": PropTypes.number.isRequired\n};\nexport var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n  return caf(frame.id);\n};\n/**\n * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.\n * When the delay time has been reached the function you're timing out will be called.\n *\n * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)\n */\n\nexport var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n  var start; // wait for end of processing current event handler, because event handler may be long\n\n  Promise.resolve().then(function () {\n    start = Date.now();\n  });\n\n  var timeout = function timeout() {\n    if (Date.now() - start >= delay) {\n      callback.call();\n    } else {\n      frame.id = raf(timeout);\n    }\n  };\n\n  var frame = {\n    id: raf(timeout)\n  };\n  return frame;\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_AnimationTimeoutId };","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n  var cellCount = _ref.cellCount,\n      overscanCellsCount = _ref.overscanCellsCount,\n      scrollDirection = _ref.scrollDirection,\n      startIndex = _ref.startIndex,\n      stopIndex = _ref.stopIndex;\n\n  if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n    return {\n      overscanStartIndex: Math.max(0, startIndex),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n    };\n  } else {\n    return {\n      overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex)\n    };\n  }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","/**\n * Default implementation of cellRangeRenderer used by Grid.\n * This renderer supports cell-caching while the user is scrolling.\n */\nexport default function defaultCellRangeRenderer(_ref) {\n  var cellCache = _ref.cellCache,\n      cellRenderer = _ref.cellRenderer,\n      columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,\n      columnStartIndex = _ref.columnStartIndex,\n      columnStopIndex = _ref.columnStopIndex,\n      deferredMeasurementCache = _ref.deferredMeasurementCache,\n      horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,\n      isScrolling = _ref.isScrolling,\n      isScrollingOptOut = _ref.isScrollingOptOut,\n      parent = _ref.parent,\n      rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,\n      rowStartIndex = _ref.rowStartIndex,\n      rowStopIndex = _ref.rowStopIndex,\n      styleCache = _ref.styleCache,\n      verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,\n      visibleColumnIndices = _ref.visibleColumnIndices,\n      visibleRowIndices = _ref.visibleRowIndices;\n  var renderedCells = []; // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).\n  // User cannot scroll beyond these size limitations.\n  // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.\n  // We should never cache styles for compressed offsets though as this can lead to bugs.\n  // See issue #576 for more.\n\n  var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();\n  var canCacheStyle = !isScrolling && !areOffsetsAdjusted;\n\n  for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n    var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);\n\n    for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n      var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);\n      var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;\n      var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n      var style = void 0; // Cache style objects so shallow-compare doesn't re-render unnecessarily.\n\n      if (canCacheStyle && styleCache[key]) {\n        style = styleCache[key];\n      } else {\n        // In deferred mode, cells will be initially rendered before we know their size.\n        // Don't interfere with CellMeasurer's measurements by setting an invalid size.\n        if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {\n          // Position not-yet-measured cells at top/left 0,0,\n          // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.\n          // Positioning them further to the right/bottom influences their measured size.\n          style = {\n            height: 'auto',\n            left: 0,\n            position: 'absolute',\n            top: 0,\n            width: 'auto'\n          };\n        } else {\n          style = {\n            height: rowDatum.size,\n            left: columnDatum.offset + horizontalOffsetAdjustment,\n            position: 'absolute',\n            top: rowDatum.offset + verticalOffsetAdjustment,\n            width: columnDatum.size\n          };\n          styleCache[key] = style;\n        }\n      }\n\n      var cellRendererParams = {\n        columnIndex: columnIndex,\n        isScrolling: isScrolling,\n        isVisible: isVisible,\n        key: key,\n        parent: parent,\n        rowIndex: rowIndex,\n        style: style\n      };\n      var renderedCell = void 0; // Avoid re-creating cells while scrolling.\n      // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n      // If a scroll is in progress- cache and reuse cells.\n      // This cache will be thrown away once scrolling completes.\n      // However if we are scaling scroll positions and sizes, we should also avoid caching.\n      // This is because the offset changes slightly as scroll position changes and caching leads to stale values.\n      // For more info refer to issue #395\n      //\n      // If isScrollingOptOut is specified, we always cache cells.\n      // For more info refer to issue #1028\n\n      if ((isScrollingOptOut || isScrolling) && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {\n        if (!cellCache[key]) {\n          cellCache[key] = cellRenderer(cellRendererParams);\n        }\n\n        renderedCell = cellCache[key]; // If the user is no longer scrolling, don't cache cells.\n        // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.\n      } else {\n        renderedCell = cellRenderer(cellRendererParams);\n      }\n\n      if (renderedCell == null || renderedCell === false) {\n        continue;\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        warnAboutMissingStyle(parent, renderedCell);\n      }\n\n      renderedCells.push(renderedCell);\n    }\n  }\n\n  return renderedCells;\n}\n\nfunction warnAboutMissingStyle(parent, renderedCell) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderedCell) {\n      // If the direct child is a CellMeasurer, then we should check its child\n      // See issue #611\n      if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {\n        renderedCell = renderedCell.props.children;\n      }\n\n      if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {\n        parent.__warnedAboutMissingStyle = true;\n        console.warn('Rendered cell should include style property for positioning.');\n      }\n    }\n  }\n}\n\nimport { bpfrpt_proptype_CellRangeRendererParams } from \"./types\";","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n  var cellCount = _ref.cellCount,\n      overscanCellsCount = _ref.overscanCellsCount,\n      scrollDirection = _ref.scrollDirection,\n      startIndex = _ref.startIndex,\n      stopIndex = _ref.stopIndex;\n  // Make sure we render at least 1 cell extra before and after (except near boundaries)\n  // This is necessary in order to support keyboard navigation (TAB/SHIFT+TAB) in some cases\n  // For more info see issues #625\n  overscanCellsCount = Math.max(1, overscanCellsCount);\n\n  if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n    return {\n      overscanStartIndex: Math.max(0, startIndex - 1),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n    };\n  } else {\n    return {\n      overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n      overscanStopIndex: Math.min(cellCount - 1, stopIndex + 1)\n    };\n  }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","var bpfrpt_proptype_ScrollIndices = process.env.NODE_ENV === 'production' ? null : {\n  \"scrollToColumn\": PropTypes.number.isRequired,\n  \"scrollToRow\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_ScrollIndices };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\n/**\n * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time.\n */\n\nvar ArrowKeyStepper = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(ArrowKeyStepper, _React$PureComponent);\n\n  function ArrowKeyStepper() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, ArrowKeyStepper);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ArrowKeyStepper)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      scrollToColumn: 0,\n      scrollToRow: 0,\n      instanceProps: {\n        prevScrollToColumn: 0,\n        prevScrollToRow: 0\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", function (event) {\n      var _this$props = _this.props,\n          columnCount = _this$props.columnCount,\n          disabled = _this$props.disabled,\n          mode = _this$props.mode,\n          rowCount = _this$props.rowCount;\n\n      if (disabled) {\n        return;\n      }\n\n      var _this$_getScrollState = _this._getScrollState(),\n          scrollToColumnPrevious = _this$_getScrollState.scrollToColumn,\n          scrollToRowPrevious = _this$_getScrollState.scrollToRow;\n\n      var _this$_getScrollState2 = _this._getScrollState(),\n          scrollToColumn = _this$_getScrollState2.scrollToColumn,\n          scrollToRow = _this$_getScrollState2.scrollToRow; // The above cases all prevent default event event behavior.\n      // This is to keep the grid from scrolling after the snap-to update.\n\n\n      switch (event.key) {\n        case 'ArrowDown':\n          scrollToRow = mode === 'cells' ? Math.min(scrollToRow + 1, rowCount - 1) : Math.min(_this._rowStopIndex + 1, rowCount - 1);\n          break;\n\n        case 'ArrowLeft':\n          scrollToColumn = mode === 'cells' ? Math.max(scrollToColumn - 1, 0) : Math.max(_this._columnStartIndex - 1, 0);\n          break;\n\n        case 'ArrowRight':\n          scrollToColumn = mode === 'cells' ? Math.min(scrollToColumn + 1, columnCount - 1) : Math.min(_this._columnStopIndex + 1, columnCount - 1);\n          break;\n\n        case 'ArrowUp':\n          scrollToRow = mode === 'cells' ? Math.max(scrollToRow - 1, 0) : Math.max(_this._rowStartIndex - 1, 0);\n          break;\n      }\n\n      if (scrollToColumn !== scrollToColumnPrevious || scrollToRow !== scrollToRowPrevious) {\n        event.preventDefault();\n\n        _this._updateScrollState({\n          scrollToColumn: scrollToColumn,\n          scrollToRow: scrollToRow\n        });\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref) {\n      var columnStartIndex = _ref.columnStartIndex,\n          columnStopIndex = _ref.columnStopIndex,\n          rowStartIndex = _ref.rowStartIndex,\n          rowStopIndex = _ref.rowStopIndex;\n      _this._columnStartIndex = columnStartIndex;\n      _this._columnStopIndex = columnStopIndex;\n      _this._rowStartIndex = rowStartIndex;\n      _this._rowStopIndex = rowStopIndex;\n    });\n\n    return _this;\n  }\n\n  _createClass(ArrowKeyStepper, [{\n    key: \"setScrollIndexes\",\n    value: function setScrollIndexes(_ref2) {\n      var scrollToColumn = _ref2.scrollToColumn,\n          scrollToRow = _ref2.scrollToRow;\n      this.setState({\n        scrollToRow: scrollToRow,\n        scrollToColumn: scrollToColumn\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          className = _this$props2.className,\n          children = _this$props2.children;\n\n      var _this$_getScrollState3 = this._getScrollState(),\n          scrollToColumn = _this$_getScrollState3.scrollToColumn,\n          scrollToRow = _this$_getScrollState3.scrollToRow;\n\n      return React.createElement(\"div\", {\n        className: className,\n        onKeyDown: this._onKeyDown\n      }, children({\n        onSectionRendered: this._onSectionRendered,\n        scrollToColumn: scrollToColumn,\n        scrollToRow: scrollToRow\n      }));\n    }\n  }, {\n    key: \"_getScrollState\",\n    value: function _getScrollState() {\n      return this.props.isControlled ? this.props : this.state;\n    }\n  }, {\n    key: \"_updateScrollState\",\n    value: function _updateScrollState(_ref3) {\n      var scrollToColumn = _ref3.scrollToColumn,\n          scrollToRow = _ref3.scrollToRow;\n      var _this$props3 = this.props,\n          isControlled = _this$props3.isControlled,\n          onScrollToChange = _this$props3.onScrollToChange;\n\n      if (typeof onScrollToChange === 'function') {\n        onScrollToChange({\n          scrollToColumn: scrollToColumn,\n          scrollToRow: scrollToRow\n        });\n      }\n\n      if (!isControlled) {\n        this.setState({\n          scrollToColumn: scrollToColumn,\n          scrollToRow: scrollToRow\n        });\n      }\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.isControlled) {\n        return {};\n      }\n\n      if (nextProps.scrollToColumn !== prevState.instanceProps.prevScrollToColumn || nextProps.scrollToRow !== prevState.instanceProps.prevScrollToRow) {\n        return _objectSpread({}, prevState, {\n          scrollToColumn: nextProps.scrollToColumn,\n          scrollToRow: nextProps.scrollToRow,\n          instanceProps: {\n            prevScrollToColumn: nextProps.scrollToColumn,\n            prevScrollToRow: nextProps.scrollToRow\n          }\n        });\n      }\n\n      return {};\n    }\n  }]);\n\n  return ArrowKeyStepper;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"children\": PropTypes.func.isRequired,\n  \"className\": PropTypes.string,\n  \"columnCount\": PropTypes.number.isRequired,\n  \"disabled\": PropTypes.bool.isRequired,\n  \"isControlled\": PropTypes.bool.isRequired,\n  \"mode\": PropTypes.oneOf([\"cells\", \"edges\"]).isRequired,\n  \"onScrollToChange\": PropTypes.func,\n  \"rowCount\": PropTypes.number.isRequired,\n  \"scrollToColumn\": PropTypes.number.isRequired,\n  \"scrollToRow\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(ArrowKeyStepper, \"defaultProps\", {\n  disabled: false,\n  isControlled: false,\n  mode: 'edges',\n  scrollToColumn: 0,\n  scrollToRow: 0\n});\n\npolyfill(ArrowKeyStepper);\nexport default ArrowKeyStepper;\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_ScrollIndices } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport createDetectElementResize from '../vendor/detectElementResize';\nvar AutoSizer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inherits(AutoSizer, _React$Component);\n\n  function AutoSizer() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, AutoSizer);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AutoSizer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      height: _this.props.defaultHeight || 0,\n      width: _this.props.defaultWidth || 0\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_parentNode\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_autoSizer\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_window\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n      var _this$props = _this.props,\n          disableHeight = _this$props.disableHeight,\n          disableWidth = _this$props.disableWidth,\n          onResize = _this$props.onResize;\n\n      if (_this._parentNode) {\n        // Guard against AutoSizer component being removed from the DOM immediately after being added.\n        // This can result in invalid style values which can result in NaN values if we don't handle them.\n        // See issue #150 for more context.\n        var height = _this._parentNode.offsetHeight || 0;\n        var width = _this._parentNode.offsetWidth || 0;\n        var win = _this._window || window;\n        var style = win.getComputedStyle(_this._parentNode) || {};\n        var paddingLeft = parseInt(style.paddingLeft, 10) || 0;\n        var paddingRight = parseInt(style.paddingRight, 10) || 0;\n        var paddingTop = parseInt(style.paddingTop, 10) || 0;\n        var paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n        var newHeight = height - paddingTop - paddingBottom;\n        var newWidth = width - paddingLeft - paddingRight;\n\n        if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n          _this.setState({\n            height: height - paddingTop - paddingBottom,\n            width: width - paddingLeft - paddingRight\n          });\n\n          onResize({\n            height: height,\n            width: width\n          });\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (autoSizer) {\n      _this._autoSizer = autoSizer;\n    });\n\n    return _this;\n  }\n\n  _createClass(AutoSizer, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var nonce = this.props.nonce;\n\n      if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n        // Delay access of parentNode until mount.\n        // This handles edge-cases where the component has already been unmounted before its ref has been set,\n        // As well as libraries like react-lite which have a slightly different lifecycle.\n        this._parentNode = this._autoSizer.parentNode;\n        this._window = this._autoSizer.parentNode.ownerDocument.defaultView; // Defer requiring resize handler in order to support server-side rendering.\n        // See issue #41\n\n        this._detectElementResize = createDetectElementResize(nonce, this._window);\n\n        this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n        this._onResize();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._detectElementResize && this._parentNode) {\n        this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          children = _this$props2.children,\n          className = _this$props2.className,\n          disableHeight = _this$props2.disableHeight,\n          disableWidth = _this$props2.disableWidth,\n          style = _this$props2.style;\n      var _this$state = this.state,\n          height = _this$state.height,\n          width = _this$state.width; // Outer div should not force width/height since that may prevent containers from shrinking.\n      // Inner component should overflow and use calculated width/height.\n      // See issue #68 for more information.\n\n      var outerStyle = {\n        overflow: 'visible'\n      };\n      var childParams = {};\n\n      if (!disableHeight) {\n        outerStyle.height = 0;\n        childParams.height = height;\n      }\n\n      if (!disableWidth) {\n        outerStyle.width = 0;\n        childParams.width = width;\n      }\n      /**\n       * TODO: Avoid rendering children before the initial measurements have been collected.\n       * At best this would just be wasting cycles.\n       * Add this check into version 10 though as it could break too many ref callbacks in version 9.\n       * Note that if default width/height props were provided this would still work with SSR.\n      if (\n        height !== 0 &&\n        width !== 0\n      ) {\n        child = children({ height, width })\n      }\n      */\n\n\n      return React.createElement(\"div\", {\n        className: className,\n        ref: this._setRef,\n        style: _objectSpread({}, outerStyle, {}, style)\n      }, children(childParams));\n    }\n  }]);\n\n  return AutoSizer;\n}(React.Component), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  /** Function responsible for rendering children.*/\n  \"children\": PropTypes.func.isRequired,\n\n  /** Optional custom CSS class name to attach to root AutoSizer element.  */\n  \"className\": PropTypes.string,\n\n  /** Default height to use for initial render; useful for SSR */\n  \"defaultHeight\": PropTypes.number,\n\n  /** Default width to use for initial render; useful for SSR */\n  \"defaultWidth\": PropTypes.number,\n\n  /** Disable dynamic :height property */\n  \"disableHeight\": PropTypes.bool.isRequired,\n\n  /** Disable dynamic :width property */\n  \"disableWidth\": PropTypes.bool.isRequired,\n\n  /** Nonce of the inlined stylesheet for Content Security Policy */\n  \"nonce\": PropTypes.string,\n\n  /** Callback to be invoked on-resize */\n  \"onResize\": PropTypes.func.isRequired,\n\n  /** Optional inline style */\n  \"style\": PropTypes.object\n}), _temp);\n\n_defineProperty(AutoSizer, \"defaultProps\", {\n  onResize: function onResize() {},\n  disableHeight: false,\n  disableWidth: false,\n  style: {}\n});\n\nexport { AutoSizer as default };\nimport PropTypes from \"prop-types\";","var bpfrpt_proptype_CellMeasureCache = process.env.NODE_ENV === 'production' ? null : {\n  \"hasFixedWidth\": PropTypes.func.isRequired,\n  \"hasFixedHeight\": PropTypes.func.isRequired,\n  \"has\": PropTypes.func.isRequired,\n  \"set\": PropTypes.func.isRequired,\n  \"getHeight\": PropTypes.func.isRequired,\n  \"getWidth\": PropTypes.func.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellMeasureCache };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n\n/**\n * Wraps a cell and measures its rendered content.\n * Measurements are stored in a per-cell cache.\n * Cached-content is not be re-measured.\n */\nvar CellMeasurer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(CellMeasurer, _React$PureComponent);\n\n  function CellMeasurer() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, CellMeasurer);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CellMeasurer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_measure\", function () {\n      var _this$props = _this.props,\n          cache = _this$props.cache,\n          _this$props$columnInd = _this$props.columnIndex,\n          columnIndex = _this$props$columnInd === void 0 ? 0 : _this$props$columnInd,\n          parent = _this$props.parent,\n          _this$props$rowIndex = _this$props.rowIndex,\n          rowIndex = _this$props$rowIndex === void 0 ? _this.props.index || 0 : _this$props$rowIndex;\n\n      var _this$_getCellMeasure = _this._getCellMeasurements(),\n          height = _this$_getCellMeasure.height,\n          width = _this$_getCellMeasure.width;\n\n      if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {\n        cache.set(rowIndex, columnIndex, width, height);\n\n        if (parent && typeof parent.recomputeGridSize === 'function') {\n          parent.recomputeGridSize({\n            columnIndex: columnIndex,\n            rowIndex: rowIndex\n          });\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n      if (element && !(element instanceof Element)) {\n        console.warn('CellMeasurer registerChild expects to be passed Element or null');\n      }\n\n      _this._child = element;\n\n      if (element) {\n        _this._maybeMeasureCell();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(CellMeasurer, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._maybeMeasureCell();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this._maybeMeasureCell();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return typeof children === 'function' ? children({\n        measure: this._measure,\n        registerChild: this._registerChild\n      }) : children;\n    }\n  }, {\n    key: \"_getCellMeasurements\",\n    value: function _getCellMeasurements() {\n      var cache = this.props.cache;\n      var node = this._child || findDOMNode(this); // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height\n\n      if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n        var styleWidth = node.style.width;\n        var styleHeight = node.style.height; // If we are re-measuring a cell that has already been measured,\n        // It will have a hard-coded width/height from the previous measurement.\n        // The fact that we are measuring indicates this measurement is probably stale,\n        // So explicitly clear it out (eg set to \"auto\") so we can recalculate.\n        // See issue #593 for more info.\n        // Even if we are measuring initially- if we're inside of a MultiGrid component,\n        // Explicitly clear width/height before measuring to avoid being tainted by another Grid.\n        // eg top/left Grid renders before bottom/right Grid\n        // Since the CellMeasurerCache is shared between them this taints derived cell size values.\n\n        if (!cache.hasFixedWidth()) {\n          node.style.width = 'auto';\n        }\n\n        if (!cache.hasFixedHeight()) {\n          node.style.height = 'auto';\n        }\n\n        var height = Math.ceil(node.offsetHeight);\n        var width = Math.ceil(node.offsetWidth); // Reset after measuring to avoid breaking styles; see #660\n\n        if (styleWidth) {\n          node.style.width = styleWidth;\n        }\n\n        if (styleHeight) {\n          node.style.height = styleHeight;\n        }\n\n        return {\n          height: height,\n          width: width\n        };\n      } else {\n        return {\n          height: 0,\n          width: 0\n        };\n      }\n    }\n  }, {\n    key: \"_maybeMeasureCell\",\n    value: function _maybeMeasureCell() {\n      var _this$props2 = this.props,\n          cache = _this$props2.cache,\n          _this$props2$columnIn = _this$props2.columnIndex,\n          columnIndex = _this$props2$columnIn === void 0 ? 0 : _this$props2$columnIn,\n          parent = _this$props2.parent,\n          _this$props2$rowIndex = _this$props2.rowIndex,\n          rowIndex = _this$props2$rowIndex === void 0 ? this.props.index || 0 : _this$props2$rowIndex;\n\n      if (!cache.has(rowIndex, columnIndex)) {\n        var _this$_getCellMeasure2 = this._getCellMeasurements(),\n            height = _this$_getCellMeasure2.height,\n            width = _this$_getCellMeasure2.width;\n\n        cache.set(rowIndex, columnIndex, width, height); // If size has changed, let Grid know to re-render.\n\n        if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {\n          parent.invalidateCellSizeAfterRender({\n            columnIndex: columnIndex,\n            rowIndex: rowIndex\n          });\n        }\n      }\n    }\n  }]);\n\n  return CellMeasurer;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"cache\": function cache() {\n    return (typeof bpfrpt_proptype_CellMeasureCache === \"function\" ? bpfrpt_proptype_CellMeasureCache.isRequired ? bpfrpt_proptype_CellMeasureCache.isRequired : bpfrpt_proptype_CellMeasureCache : PropTypes.shape(bpfrpt_proptype_CellMeasureCache).isRequired).apply(this, arguments);\n  },\n  \"children\": PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\n  \"columnIndex\": PropTypes.number,\n  \"index\": PropTypes.number,\n  \"parent\": PropTypes.shape({\n    invalidateCellSizeAfterRender: PropTypes.func,\n    recomputeGridSize: PropTypes.func\n  }).isRequired,\n  \"rowIndex\": PropTypes.number\n}), _temp); // Used for DEV mode warning check\n\n_defineProperty(CellMeasurer, \"__internalCellMeasurerFlag\", false);\n\nexport { CellMeasurer as default };\n\nif (process.env.NODE_ENV !== 'production') {\n  CellMeasurer.__internalCellMeasurerFlag = true;\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var DEFAULT_HEIGHT = 30;\nexport var DEFAULT_WIDTH = 100; // Enables more intelligent mapping of a given column and row index to an item ID.\n// This prevents a cell cache from being invalidated when its parent collection is modified.\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCache =\n/*#__PURE__*/\nfunction () {\n  function CellMeasurerCache() {\n    var _this = this;\n\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, CellMeasurerCache);\n\n    _defineProperty(this, \"_cellHeightCache\", {});\n\n    _defineProperty(this, \"_cellWidthCache\", {});\n\n    _defineProperty(this, \"_columnWidthCache\", {});\n\n    _defineProperty(this, \"_rowHeightCache\", {});\n\n    _defineProperty(this, \"_defaultHeight\", void 0);\n\n    _defineProperty(this, \"_defaultWidth\", void 0);\n\n    _defineProperty(this, \"_minHeight\", void 0);\n\n    _defineProperty(this, \"_minWidth\", void 0);\n\n    _defineProperty(this, \"_keyMapper\", void 0);\n\n    _defineProperty(this, \"_hasFixedHeight\", void 0);\n\n    _defineProperty(this, \"_hasFixedWidth\", void 0);\n\n    _defineProperty(this, \"_columnCount\", 0);\n\n    _defineProperty(this, \"_rowCount\", 0);\n\n    _defineProperty(this, \"columnWidth\", function (_ref) {\n      var index = _ref.index;\n\n      var key = _this._keyMapper(0, index);\n\n      return _this._columnWidthCache[key] !== undefined ? _this._columnWidthCache[key] : _this._defaultWidth;\n    });\n\n    _defineProperty(this, \"rowHeight\", function (_ref2) {\n      var index = _ref2.index;\n\n      var key = _this._keyMapper(index, 0);\n\n      return _this._rowHeightCache[key] !== undefined ? _this._rowHeightCache[key] : _this._defaultHeight;\n    });\n\n    var defaultHeight = params.defaultHeight,\n        defaultWidth = params.defaultWidth,\n        fixedHeight = params.fixedHeight,\n        fixedWidth = params.fixedWidth,\n        keyMapper = params.keyMapper,\n        minHeight = params.minHeight,\n        minWidth = params.minWidth;\n    this._hasFixedHeight = fixedHeight === true;\n    this._hasFixedWidth = fixedWidth === true;\n    this._minHeight = minHeight || 0;\n    this._minWidth = minWidth || 0;\n    this._keyMapper = keyMapper || defaultKeyMapper;\n    this._defaultHeight = Math.max(this._minHeight, typeof defaultHeight === 'number' ? defaultHeight : DEFAULT_HEIGHT);\n    this._defaultWidth = Math.max(this._minWidth, typeof defaultWidth === 'number' ? defaultWidth : DEFAULT_WIDTH);\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (this._hasFixedHeight === false && this._hasFixedWidth === false) {\n        console.warn(\"CellMeasurerCache should only measure a cell's width or height. \" + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');\n      }\n\n      if (this._hasFixedHeight === false && this._defaultHeight === 0) {\n        console.warn('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n      }\n\n      if (this._hasFixedWidth === false && this._defaultWidth === 0) {\n        console.warn('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n      }\n    }\n  }\n\n  _createClass(CellMeasurerCache, [{\n    key: \"clear\",\n    value: function clear(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var key = this._keyMapper(rowIndex, columnIndex);\n\n      delete this._cellHeightCache[key];\n      delete this._cellWidthCache[key];\n\n      this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n    }\n  }, {\n    key: \"clearAll\",\n    value: function clearAll() {\n      this._cellHeightCache = {};\n      this._cellWidthCache = {};\n      this._columnWidthCache = {};\n      this._rowHeightCache = {};\n      this._rowCount = 0;\n      this._columnCount = 0;\n    }\n  }, {\n    key: \"hasFixedHeight\",\n    value: function hasFixedHeight() {\n      return this._hasFixedHeight;\n    }\n  }, {\n    key: \"hasFixedWidth\",\n    value: function hasFixedWidth() {\n      return this._hasFixedWidth;\n    }\n  }, {\n    key: \"getHeight\",\n    value: function getHeight(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (this._hasFixedHeight) {\n        return this._defaultHeight;\n      } else {\n        var _key = this._keyMapper(rowIndex, columnIndex);\n\n        return this._cellHeightCache[_key] !== undefined ? Math.max(this._minHeight, this._cellHeightCache[_key]) : this._defaultHeight;\n      }\n    }\n  }, {\n    key: \"getWidth\",\n    value: function getWidth(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (this._hasFixedWidth) {\n        return this._defaultWidth;\n      } else {\n        var _key2 = this._keyMapper(rowIndex, columnIndex);\n\n        return this._cellWidthCache[_key2] !== undefined ? Math.max(this._minWidth, this._cellWidthCache[_key2]) : this._defaultWidth;\n      }\n    }\n  }, {\n    key: \"has\",\n    value: function has(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var key = this._keyMapper(rowIndex, columnIndex);\n\n      return this._cellHeightCache[key] !== undefined;\n    }\n  }, {\n    key: \"set\",\n    value: function set(rowIndex, columnIndex, width, height) {\n      var key = this._keyMapper(rowIndex, columnIndex);\n\n      if (columnIndex >= this._columnCount) {\n        this._columnCount = columnIndex + 1;\n      }\n\n      if (rowIndex >= this._rowCount) {\n        this._rowCount = rowIndex + 1;\n      } // Size is cached per cell so we don't have to re-measure if cells are re-ordered.\n\n\n      this._cellHeightCache[key] = height;\n      this._cellWidthCache[key] = width;\n\n      this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n    }\n  }, {\n    key: \"_updateCachedColumnAndRowSizes\",\n    value: function _updateCachedColumnAndRowSizes(rowIndex, columnIndex) {\n      // :columnWidth and :rowHeight are derived based on all cells in a column/row.\n      // Pre-cache these derived values for faster lookup later.\n      // Reads are expected to occur more frequently than writes in this case.\n      // Only update non-fixed dimensions though to avoid doing unnecessary work.\n      if (!this._hasFixedWidth) {\n        var columnWidth = 0;\n\n        for (var i = 0; i < this._rowCount; i++) {\n          columnWidth = Math.max(columnWidth, this.getWidth(i, columnIndex));\n        }\n\n        var columnKey = this._keyMapper(0, columnIndex);\n\n        this._columnWidthCache[columnKey] = columnWidth;\n      }\n\n      if (!this._hasFixedHeight) {\n        var rowHeight = 0;\n\n        for (var _i = 0; _i < this._columnCount; _i++) {\n          rowHeight = Math.max(rowHeight, this.getHeight(rowIndex, _i));\n        }\n\n        var rowKey = this._keyMapper(rowIndex, 0);\n\n        this._rowHeightCache[rowKey] = rowHeight;\n      }\n    }\n  }, {\n    key: \"defaultHeight\",\n    get: function get() {\n      return this._defaultHeight;\n    }\n  }, {\n    key: \"defaultWidth\",\n    get: function get() {\n      return this._defaultWidth;\n    }\n  }]);\n\n  return CellMeasurerCache;\n}();\n\nexport { CellMeasurerCache as default };\n\nfunction defaultKeyMapper(rowIndex, columnIndex) {\n  return \"\".concat(rowIndex, \"-\").concat(columnIndex);\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize'; // @TODO Merge Collection and CollectionView\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nvar IS_SCROLLING_TIMEOUT = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n  OBSERVED: 'observed',\n  REQUESTED: 'requested'\n};\n/**\n * Monitors changes in properties (eg. cellCount) and state (eg. scroll offsets) to determine when rendering needs to occur.\n * This component does not render any visible content itself; it defers to the specified :cellLayoutManager.\n */\n\nvar CollectionView =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(CollectionView, _React$PureComponent);\n\n  // Invokes callbacks only when their values have changed.\n  function CollectionView() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, CollectionView);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CollectionView)).call.apply(_getPrototypeOf2, [this].concat(args))); // If this component is being rendered server-side, getScrollbarSize() will return undefined.\n    // We handle this case in componentDidMount()\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      isScrolling: false,\n      scrollLeft: 0,\n      scrollTop: 0\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_calculateSizeAndPositionDataOnNextUpdate\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onSectionRenderedMemoizer\", createCallbackMemoizer());\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n    _defineProperty(_assertThisInitialized(_this), \"_invokeOnSectionRenderedHelper\", function () {\n      var _this$props = _this.props,\n          cellLayoutManager = _this$props.cellLayoutManager,\n          onSectionRendered = _this$props.onSectionRendered;\n\n      _this._onSectionRenderedMemoizer({\n        callback: onSectionRendered,\n        indices: {\n          indices: cellLayoutManager.getLastRenderedIndices()\n        }\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n      _this._scrollingContainer = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_updateScrollPositionForScrollToCell\", function () {\n      var _this$props2 = _this.props,\n          cellLayoutManager = _this$props2.cellLayoutManager,\n          height = _this$props2.height,\n          scrollToAlignment = _this$props2.scrollToAlignment,\n          scrollToCell = _this$props2.scrollToCell,\n          width = _this$props2.width;\n      var _this$state = _this.state,\n          scrollLeft = _this$state.scrollLeft,\n          scrollTop = _this$state.scrollTop;\n\n      if (scrollToCell >= 0) {\n        var scrollPosition = cellLayoutManager.getScrollPositionForCell({\n          align: scrollToAlignment,\n          cellIndex: scrollToCell,\n          height: height,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          width: width\n        });\n\n        if (scrollPosition.scrollLeft !== scrollLeft || scrollPosition.scrollTop !== scrollTop) {\n          _this._setScrollPosition(scrollPosition);\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n      // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n      // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n      // See issue #404 for more information.\n      if (event.target !== _this._scrollingContainer) {\n        return;\n      } // Prevent pointer events from interrupting a smooth scroll\n\n\n      _this._enablePointerEventsAfterDelay(); // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n      // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n      // This causes a series of rapid renders that is slow for long lists.\n      // We can avoid that by doing some simple bounds checking to ensure that scrollTop never exceeds the total height.\n\n\n      var _this$props3 = _this.props,\n          cellLayoutManager = _this$props3.cellLayoutManager,\n          height = _this$props3.height,\n          isScrollingChange = _this$props3.isScrollingChange,\n          width = _this$props3.width;\n      var scrollbarSize = _this._scrollbarSize;\n\n      var _cellLayoutManager$ge = cellLayoutManager.getTotalSize(),\n          totalHeight = _cellLayoutManager$ge.height,\n          totalWidth = _cellLayoutManager$ge.width;\n\n      var scrollLeft = Math.max(0, Math.min(totalWidth - width + scrollbarSize, event.target.scrollLeft));\n      var scrollTop = Math.max(0, Math.min(totalHeight - height + scrollbarSize, event.target.scrollTop)); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n      // Don't force a re-render if this is the case.\n      // The mouse may move faster then the animation frame does.\n      // Use requestAnimationFrame to avoid over-updating.\n\n      if (_this.state.scrollLeft !== scrollLeft || _this.state.scrollTop !== scrollTop) {\n        // Browsers with cancelable scroll events (eg. Firefox) interrupt scrolling animations if scrollTop/scrollLeft is set.\n        // Other browsers (eg. Safari) don't scroll as well without the help under certain conditions (DOM or style changes during scrolling).\n        // All things considered, this seems to be the best current work around that I'm aware of.\n        // For more information see https://github.com/bvaughn/react-virtualized/pull/124\n        var scrollPositionChangeReason = event.cancelable ? SCROLL_POSITION_CHANGE_REASONS.OBSERVED : SCROLL_POSITION_CHANGE_REASONS.REQUESTED; // Synchronously set :isScrolling the first time (since _setNextState will reschedule its animation frame each time it's called)\n\n        if (!_this.state.isScrolling) {\n          isScrollingChange(true);\n        }\n\n        _this.setState({\n          isScrolling: true,\n          scrollLeft: scrollLeft,\n          scrollPositionChangeReason: scrollPositionChangeReason,\n          scrollTop: scrollTop\n        });\n      }\n\n      _this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        totalWidth: totalWidth,\n        totalHeight: totalHeight\n      });\n    });\n\n    _this._scrollbarSize = getScrollbarSize();\n\n    if (_this._scrollbarSize === undefined) {\n      _this._scrollbarSizeMeasured = false;\n      _this._scrollbarSize = 0;\n    } else {\n      _this._scrollbarSizeMeasured = true;\n    }\n\n    return _this;\n  }\n  /**\n   * Forced recompute of cell sizes and positions.\n   * This function should be called if cell sizes have changed but nothing else has.\n   * Since cell positions are calculated by callbacks, the collection view has no way of detecting when the underlying data has changed.\n   */\n\n\n  _createClass(CollectionView, [{\n    key: \"recomputeCellSizesAndPositions\",\n    value: function recomputeCellSizesAndPositions() {\n      this._calculateSizeAndPositionDataOnNextUpdate = true;\n      this.forceUpdate();\n    }\n    /* ---------------------------- Component lifecycle methods ---------------------------- */\n\n    /**\n     * @private\n     * This method updates scrollLeft/scrollTop in state for the following conditions:\n     * 1) Empty content (0 rows or columns)\n     * 2) New scroll props overriding the current state\n     * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n     */\n\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props4 = this.props,\n          cellLayoutManager = _this$props4.cellLayoutManager,\n          scrollLeft = _this$props4.scrollLeft,\n          scrollToCell = _this$props4.scrollToCell,\n          scrollTop = _this$props4.scrollTop; // If this component was first rendered server-side, scrollbar size will be undefined.\n      // In that event we need to remeasure.\n\n      if (!this._scrollbarSizeMeasured) {\n        this._scrollbarSize = getScrollbarSize();\n        this._scrollbarSizeMeasured = true;\n        this.setState({});\n      }\n\n      if (scrollToCell >= 0) {\n        this._updateScrollPositionForScrollToCell();\n      } else if (scrollLeft >= 0 || scrollTop >= 0) {\n        this._setScrollPosition({\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        });\n      } // Update onSectionRendered callback.\n\n\n      this._invokeOnSectionRenderedHelper();\n\n      var _cellLayoutManager$ge2 = cellLayoutManager.getTotalSize(),\n          totalHeight = _cellLayoutManager$ge2.height,\n          totalWidth = _cellLayoutManager$ge2.width; // Initialize onScroll callback.\n\n\n      this._invokeOnScrollMemoizer({\n        scrollLeft: scrollLeft || 0,\n        scrollTop: scrollTop || 0,\n        totalHeight: totalHeight,\n        totalWidth: totalWidth\n      });\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this$props5 = this.props,\n          height = _this$props5.height,\n          scrollToAlignment = _this$props5.scrollToAlignment,\n          scrollToCell = _this$props5.scrollToCell,\n          width = _this$props5.width;\n      var _this$state2 = this.state,\n          scrollLeft = _this$state2.scrollLeft,\n          scrollPositionChangeReason = _this$state2.scrollPositionChangeReason,\n          scrollTop = _this$state2.scrollTop; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n      // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n      // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n      // So we only set these when we require an adjustment of the scroll position.\n      // See issue #2 for more information.\n\n      if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n        if (scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft && scrollLeft !== this._scrollingContainer.scrollLeft) {\n          this._scrollingContainer.scrollLeft = scrollLeft;\n        }\n\n        if (scrollTop >= 0 && scrollTop !== prevState.scrollTop && scrollTop !== this._scrollingContainer.scrollTop) {\n          this._scrollingContainer.scrollTop = scrollTop;\n        }\n      } // Update scroll offsets if the current :scrollToCell values requires it\n\n\n      if (height !== prevProps.height || scrollToAlignment !== prevProps.scrollToAlignment || scrollToCell !== prevProps.scrollToCell || width !== prevProps.width) {\n        this._updateScrollPositionForScrollToCell();\n      } // Update onRowsRendered callback if start/stop indices have changed\n\n\n      this._invokeOnSectionRenderedHelper();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._disablePointerEventsTimeoutId) {\n        clearTimeout(this._disablePointerEventsTimeoutId);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props6 = this.props,\n          autoHeight = _this$props6.autoHeight,\n          cellCount = _this$props6.cellCount,\n          cellLayoutManager = _this$props6.cellLayoutManager,\n          className = _this$props6.className,\n          height = _this$props6.height,\n          horizontalOverscanSize = _this$props6.horizontalOverscanSize,\n          id = _this$props6.id,\n          noContentRenderer = _this$props6.noContentRenderer,\n          style = _this$props6.style,\n          verticalOverscanSize = _this$props6.verticalOverscanSize,\n          width = _this$props6.width;\n      var _this$state3 = this.state,\n          isScrolling = _this$state3.isScrolling,\n          scrollLeft = _this$state3.scrollLeft,\n          scrollTop = _this$state3.scrollTop; // Memoization reset\n\n      if (this._lastRenderedCellCount !== cellCount || this._lastRenderedCellLayoutManager !== cellLayoutManager || this._calculateSizeAndPositionDataOnNextUpdate) {\n        this._lastRenderedCellCount = cellCount;\n        this._lastRenderedCellLayoutManager = cellLayoutManager;\n        this._calculateSizeAndPositionDataOnNextUpdate = false;\n        cellLayoutManager.calculateSizeAndPositionData();\n      }\n\n      var _cellLayoutManager$ge3 = cellLayoutManager.getTotalSize(),\n          totalHeight = _cellLayoutManager$ge3.height,\n          totalWidth = _cellLayoutManager$ge3.width; // Safely expand the rendered area by the specified overscan amount\n\n\n      var left = Math.max(0, scrollLeft - horizontalOverscanSize);\n      var top = Math.max(0, scrollTop - verticalOverscanSize);\n      var right = Math.min(totalWidth, scrollLeft + width + horizontalOverscanSize);\n      var bottom = Math.min(totalHeight, scrollTop + height + verticalOverscanSize);\n      var childrenToDisplay = height > 0 && width > 0 ? cellLayoutManager.cellRenderers({\n        height: bottom - top,\n        isScrolling: isScrolling,\n        width: right - left,\n        x: left,\n        y: top\n      }) : [];\n      var collectionStyle = {\n        boxSizing: 'border-box',\n        direction: 'ltr',\n        height: autoHeight ? 'auto' : height,\n        position: 'relative',\n        WebkitOverflowScrolling: 'touch',\n        width: width,\n        willChange: 'transform'\n      }; // Force browser to hide scrollbars when we know they aren't necessary.\n      // Otherwise once scrollbars appear they may not disappear again.\n      // For more info see issue #116\n\n      var verticalScrollBarSize = totalHeight > height ? this._scrollbarSize : 0;\n      var horizontalScrollBarSize = totalWidth > width ? this._scrollbarSize : 0; // Also explicitly init styles to 'auto' if scrollbars are required.\n      // This works around an obscure edge case where external CSS styles have not yet been loaded,\n      // But an initial scroll index of offset is set as an external prop.\n      // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n      // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n      collectionStyle.overflowX = totalWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n      collectionStyle.overflowY = totalHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n      return React.createElement(\"div\", {\n        ref: this._setScrollingContainerRef,\n        \"aria-label\": this.props['aria-label'],\n        className: clsx('ReactVirtualized__Collection', className),\n        id: id,\n        onScroll: this._onScroll,\n        role: \"grid\",\n        style: _objectSpread({}, collectionStyle, {}, style),\n        tabIndex: 0\n      }, cellCount > 0 && React.createElement(\"div\", {\n        className: \"ReactVirtualized__Collection__innerScrollContainer\",\n        style: {\n          height: totalHeight,\n          maxHeight: totalHeight,\n          maxWidth: totalWidth,\n          overflow: 'hidden',\n          pointerEvents: isScrolling ? 'none' : '',\n          width: totalWidth\n        }\n      }, childrenToDisplay), cellCount === 0 && noContentRenderer());\n    }\n    /* ---------------------------- Helper methods ---------------------------- */\n\n    /**\n     * Sets an :isScrolling flag for a small window of time.\n     * This flag is used to disable pointer events on the scrollable portion of the Collection.\n     * This prevents jerky/stuttery mouse-wheel scrolling.\n     */\n\n  }, {\n    key: \"_enablePointerEventsAfterDelay\",\n    value: function _enablePointerEventsAfterDelay() {\n      var _this2 = this;\n\n      if (this._disablePointerEventsTimeoutId) {\n        clearTimeout(this._disablePointerEventsTimeoutId);\n      }\n\n      this._disablePointerEventsTimeoutId = setTimeout(function () {\n        var isScrollingChange = _this2.props.isScrollingChange;\n        isScrollingChange(false);\n        _this2._disablePointerEventsTimeoutId = null;\n\n        _this2.setState({\n          isScrolling: false\n        });\n      }, IS_SCROLLING_TIMEOUT);\n    }\n  }, {\n    key: \"_invokeOnScrollMemoizer\",\n    value: function _invokeOnScrollMemoizer(_ref) {\n      var _this3 = this;\n\n      var scrollLeft = _ref.scrollLeft,\n          scrollTop = _ref.scrollTop,\n          totalHeight = _ref.totalHeight,\n          totalWidth = _ref.totalWidth;\n\n      this._onScrollMemoizer({\n        callback: function callback(_ref2) {\n          var scrollLeft = _ref2.scrollLeft,\n              scrollTop = _ref2.scrollTop;\n          var _this3$props = _this3.props,\n              height = _this3$props.height,\n              onScroll = _this3$props.onScroll,\n              width = _this3$props.width;\n          onScroll({\n            clientHeight: height,\n            clientWidth: width,\n            scrollHeight: totalHeight,\n            scrollLeft: scrollLeft,\n            scrollTop: scrollTop,\n            scrollWidth: totalWidth\n          });\n        },\n        indices: {\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        }\n      });\n    }\n  }, {\n    key: \"_setScrollPosition\",\n    value: function _setScrollPosition(_ref3) {\n      var scrollLeft = _ref3.scrollLeft,\n          scrollTop = _ref3.scrollTop;\n      var newState = {\n        scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n      };\n\n      if (scrollLeft >= 0) {\n        newState.scrollLeft = scrollLeft;\n      }\n\n      if (scrollTop >= 0) {\n        newState.scrollTop = scrollTop;\n      }\n\n      if (scrollLeft >= 0 && scrollLeft !== this.state.scrollLeft || scrollTop >= 0 && scrollTop !== this.state.scrollTop) {\n        this.setState(newState);\n      }\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.cellCount === 0 && (prevState.scrollLeft !== 0 || prevState.scrollTop !== 0)) {\n        return {\n          scrollLeft: 0,\n          scrollTop: 0,\n          scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n        };\n      } else if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n        return {\n          scrollLeft: nextProps.scrollLeft != null ? nextProps.scrollLeft : prevState.scrollLeft,\n          scrollTop: nextProps.scrollTop != null ? nextProps.scrollTop : prevState.scrollTop,\n          scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return CollectionView;\n}(React.PureComponent);\n\n_defineProperty(CollectionView, \"defaultProps\", {\n  'aria-label': 'grid',\n  horizontalOverscanSize: 0,\n  noContentRenderer: function noContentRenderer() {\n    return null;\n  },\n  onScroll: function onScroll() {\n    return null;\n  },\n  onSectionRendered: function onSectionRendered() {\n    return null;\n  },\n  scrollToAlignment: 'auto',\n  scrollToCell: -1,\n  style: {},\n  verticalOverscanSize: 0\n});\n\nCollectionView.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  'aria-label': PropTypes.string,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height\n   * of rows can stretch the window. Intended for use with WindowScroller\n   */\n  autoHeight: PropTypes.bool,\n\n  /**\n   * Number of cells in collection.\n   */\n  cellCount: PropTypes.number.isRequired,\n\n  /**\n   * Calculates cell sizes and positions and manages rendering the appropriate cells given a specified window.\n   */\n  cellLayoutManager: PropTypes.object.isRequired,\n\n  /**\n   * Optional custom CSS class name to attach to root Collection element.\n   */\n  className: PropTypes.string,\n\n  /**\n   * Height of Collection; this property determines the number of visible (vs virtualized) rows.\n   */\n  height: PropTypes.number.isRequired,\n\n  /**\n   * Optional custom id to attach to root Collection element.\n   */\n  id: PropTypes.string,\n\n  /**\n   * Enables the `Collection` to horiontally \"overscan\" its content similar to how `Grid` does.\n   * This can reduce flicker around the edges when a user scrolls quickly.\n   */\n  horizontalOverscanSize: PropTypes.number.isRequired,\n  isScrollingChange: PropTypes.func,\n\n  /**\n   * Optional renderer to be used in place of rows when either :rowCount or :cellCount is 0.\n   */\n  noContentRenderer: PropTypes.func.isRequired,\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   * ({ clientHeight, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth }): void\n   */\n  onScroll: PropTypes.func.isRequired,\n\n  /**\n   * Callback invoked with information about the section of the Collection that was just rendered.\n   * This callback is passed a named :indices parameter which is an Array of the most recently rendered section indices.\n   */\n  onSectionRendered: PropTypes.func.isRequired,\n\n  /**\n   * Horizontal offset.\n   */\n  scrollLeft: PropTypes.number,\n\n  /**\n   * Controls scroll-to-cell behavior of the Grid.\n   * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n   * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n   */\n  scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n  /**\n   * Cell index to ensure visible (by forcefully scrolling if necessary).\n   */\n  scrollToCell: PropTypes.number.isRequired,\n\n  /**\n   * Vertical offset.\n   */\n  scrollTop: PropTypes.number,\n\n  /**\n   * Optional custom inline style to attach to root Collection element.\n   */\n  style: PropTypes.object,\n\n  /**\n   * Enables the `Collection` to vertically \"overscan\" its content similar to how `Grid` does.\n   * This can reduce flicker around the edges when a user scrolls quickly.\n   */\n  verticalOverscanSize: PropTypes.number.isRequired,\n\n  /**\n   * Width of Collection; this property determines the number of visible (vs virtualized) columns.\n   */\n  width: PropTypes.number.isRequired\n} : {};\npolyfill(CollectionView);\nexport default CollectionView;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * A section of the Window.\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * Sections have a fixed size and contain 0 to many cells (tracked by their indices).\n */\nvar Section =\n/*#__PURE__*/\nfunction () {\n  function Section(_ref) {\n    var height = _ref.height,\n        width = _ref.width,\n        x = _ref.x,\n        y = _ref.y;\n\n    _classCallCheck(this, Section);\n\n    this.height = height;\n    this.width = width;\n    this.x = x;\n    this.y = y;\n    this._indexMap = {};\n    this._indices = [];\n  }\n  /** Add a cell to this section. */\n\n\n  _createClass(Section, [{\n    key: \"addCellIndex\",\n    value: function addCellIndex(_ref2) {\n      var index = _ref2.index;\n\n      if (!this._indexMap[index]) {\n        this._indexMap[index] = true;\n\n        this._indices.push(index);\n      }\n    }\n    /** Get all cell indices that have been added to this section. */\n\n  }, {\n    key: \"getCellIndices\",\n    value: function getCellIndices() {\n      return this._indices;\n    }\n    /** Intended for debugger/test purposes only */\n\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return \"\".concat(this.x, \",\").concat(this.y, \" \").concat(this.width, \"x\").concat(this.height);\n    }\n  }]);\n\n  return Section;\n}();\n\nexport { Section as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * \n */\nimport Section from './Section';\nvar SECTION_SIZE = 100;\n\n/**\n * Contains 0 to many Sections.\n * Grows (and adds Sections) dynamically as cells are registered.\n * Automatically adds cells to the appropriate Section(s).\n */\nvar SectionManager =\n/*#__PURE__*/\nfunction () {\n  function SectionManager() {\n    var sectionSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SECTION_SIZE;\n\n    _classCallCheck(this, SectionManager);\n\n    this._sectionSize = sectionSize;\n    this._cellMetadata = [];\n    this._sections = {};\n  }\n  /**\n   * Gets all cell indices contained in the specified region.\n   * A region may encompass 1 or more Sections.\n   */\n\n\n  _createClass(SectionManager, [{\n    key: \"getCellIndices\",\n    value: function getCellIndices(_ref) {\n      var height = _ref.height,\n          width = _ref.width,\n          x = _ref.x,\n          y = _ref.y;\n      var indices = {};\n      this.getSections({\n        height: height,\n        width: width,\n        x: x,\n        y: y\n      }).forEach(function (section) {\n        return section.getCellIndices().forEach(function (index) {\n          indices[index] = index;\n        });\n      }); // Object keys are strings; this function returns numbers\n\n      return Object.keys(indices).map(function (index) {\n        return indices[index];\n      });\n    }\n    /** Get size and position information for the cell specified. */\n\n  }, {\n    key: \"getCellMetadata\",\n    value: function getCellMetadata(_ref2) {\n      var index = _ref2.index;\n      return this._cellMetadata[index];\n    }\n    /** Get all Sections overlapping the specified region. */\n\n  }, {\n    key: \"getSections\",\n    value: function getSections(_ref3) {\n      var height = _ref3.height,\n          width = _ref3.width,\n          x = _ref3.x,\n          y = _ref3.y;\n      var sectionXStart = Math.floor(x / this._sectionSize);\n      var sectionXStop = Math.floor((x + width - 1) / this._sectionSize);\n      var sectionYStart = Math.floor(y / this._sectionSize);\n      var sectionYStop = Math.floor((y + height - 1) / this._sectionSize);\n      var sections = [];\n\n      for (var sectionX = sectionXStart; sectionX <= sectionXStop; sectionX++) {\n        for (var sectionY = sectionYStart; sectionY <= sectionYStop; sectionY++) {\n          var key = \"\".concat(sectionX, \".\").concat(sectionY);\n\n          if (!this._sections[key]) {\n            this._sections[key] = new Section({\n              height: this._sectionSize,\n              width: this._sectionSize,\n              x: sectionX * this._sectionSize,\n              y: sectionY * this._sectionSize\n            });\n          }\n\n          sections.push(this._sections[key]);\n        }\n      }\n\n      return sections;\n    }\n    /** Total number of Sections based on the currently registered cells. */\n\n  }, {\n    key: \"getTotalSectionCount\",\n    value: function getTotalSectionCount() {\n      return Object.keys(this._sections).length;\n    }\n    /** Intended for debugger/test purposes only */\n\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      var _this = this;\n\n      return Object.keys(this._sections).map(function (index) {\n        return _this._sections[index].toString();\n      });\n    }\n    /** Adds a cell to the appropriate Sections and registers it metadata for later retrievable. */\n\n  }, {\n    key: \"registerCell\",\n    value: function registerCell(_ref4) {\n      var cellMetadatum = _ref4.cellMetadatum,\n          index = _ref4.index;\n      this._cellMetadata[index] = cellMetadatum;\n      this.getSections(cellMetadatum).forEach(function (section) {\n        return section.addCellIndex({\n          index: index\n        });\n      });\n    }\n  }]);\n\n  return SectionManager;\n}();\n\nexport { SectionManager as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","/**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param cellOffset Offset (x or y) position for cell\n * @param cellSize Size (width or height) of cell\n * @param containerSize Total size (width or height) of the container\n * @param currentOffset Container's current (x or y) offset\n * @return Offset to use to ensure the specified cell is visible\n */\nexport default function getUpdatedOffsetForIndex(_ref) {\n  var _ref$align = _ref.align,\n      align = _ref$align === void 0 ? 'auto' : _ref$align,\n      cellOffset = _ref.cellOffset,\n      cellSize = _ref.cellSize,\n      containerSize = _ref.containerSize,\n      currentOffset = _ref.currentOffset;\n  var maxOffset = cellOffset;\n  var minOffset = maxOffset - containerSize + cellSize;\n\n  switch (align) {\n    case 'start':\n      return maxOffset;\n\n    case 'end':\n      return minOffset;\n\n    case 'center':\n      return maxOffset - (containerSize - cellSize) / 2;\n\n    default:\n      return Math.max(minOffset, Math.min(maxOffset, currentOffset));\n  }\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport CollectionView from './CollectionView';\nimport _calculateSizeAndPositionData from './utils/calculateSizeAndPositionData';\nimport getUpdatedOffsetForIndex from '../utils/getUpdatedOffsetForIndex';\n\n/**\n * Renders scattered or non-linear data.\n * Unlike Grid, which renders checkerboard data, Collection can render arbitrarily positioned- even overlapping- data.\n */\nvar Collection =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(Collection, _React$PureComponent);\n\n  function Collection(props, context) {\n    var _this;\n\n    _classCallCheck(this, Collection);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Collection).call(this, props, context));\n    _this._cellMetadata = [];\n    _this._lastRenderedCellIndices = []; // Cell cache during scroll (for performance)\n\n    _this._cellCache = [];\n    _this._isScrollingChange = _this._isScrollingChange.bind(_assertThisInitialized(_this));\n    _this._setCollectionViewRef = _this._setCollectionViewRef.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(Collection, [{\n    key: \"forceUpdate\",\n    value: function forceUpdate() {\n      if (this._collectionView !== undefined) {\n        this._collectionView.forceUpdate();\n      }\n    }\n    /** See Collection#recomputeCellSizesAndPositions */\n\n  }, {\n    key: \"recomputeCellSizesAndPositions\",\n    value: function recomputeCellSizesAndPositions() {\n      this._cellCache = [];\n\n      this._collectionView.recomputeCellSizesAndPositions();\n    }\n    /** React lifecycle methods */\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var props = _extends({}, this.props);\n\n      return React.createElement(CollectionView, _extends({\n        cellLayoutManager: this,\n        isScrollingChange: this._isScrollingChange,\n        ref: this._setCollectionViewRef\n      }, props));\n    }\n    /** CellLayoutManager interface */\n\n  }, {\n    key: \"calculateSizeAndPositionData\",\n    value: function calculateSizeAndPositionData() {\n      var _this$props = this.props,\n          cellCount = _this$props.cellCount,\n          cellSizeAndPositionGetter = _this$props.cellSizeAndPositionGetter,\n          sectionSize = _this$props.sectionSize;\n\n      var data = _calculateSizeAndPositionData({\n        cellCount: cellCount,\n        cellSizeAndPositionGetter: cellSizeAndPositionGetter,\n        sectionSize: sectionSize\n      });\n\n      this._cellMetadata = data.cellMetadata;\n      this._sectionManager = data.sectionManager;\n      this._height = data.height;\n      this._width = data.width;\n    }\n    /**\n     * Returns the most recently rendered set of cell indices.\n     */\n\n  }, {\n    key: \"getLastRenderedIndices\",\n    value: function getLastRenderedIndices() {\n      return this._lastRenderedCellIndices;\n    }\n    /**\n     * Calculates the minimum amount of change from the current scroll position to ensure the specified cell is (fully) visible.\n     */\n\n  }, {\n    key: \"getScrollPositionForCell\",\n    value: function getScrollPositionForCell(_ref) {\n      var align = _ref.align,\n          cellIndex = _ref.cellIndex,\n          height = _ref.height,\n          scrollLeft = _ref.scrollLeft,\n          scrollTop = _ref.scrollTop,\n          width = _ref.width;\n      var cellCount = this.props.cellCount;\n\n      if (cellIndex >= 0 && cellIndex < cellCount) {\n        var cellMetadata = this._cellMetadata[cellIndex];\n        scrollLeft = getUpdatedOffsetForIndex({\n          align: align,\n          cellOffset: cellMetadata.x,\n          cellSize: cellMetadata.width,\n          containerSize: width,\n          currentOffset: scrollLeft,\n          targetIndex: cellIndex\n        });\n        scrollTop = getUpdatedOffsetForIndex({\n          align: align,\n          cellOffset: cellMetadata.y,\n          cellSize: cellMetadata.height,\n          containerSize: height,\n          currentOffset: scrollTop,\n          targetIndex: cellIndex\n        });\n      }\n\n      return {\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop\n      };\n    }\n  }, {\n    key: \"getTotalSize\",\n    value: function getTotalSize() {\n      return {\n        height: this._height,\n        width: this._width\n      };\n    }\n  }, {\n    key: \"cellRenderers\",\n    value: function cellRenderers(_ref2) {\n      var _this2 = this;\n\n      var height = _ref2.height,\n          isScrolling = _ref2.isScrolling,\n          width = _ref2.width,\n          x = _ref2.x,\n          y = _ref2.y;\n      var _this$props2 = this.props,\n          cellGroupRenderer = _this$props2.cellGroupRenderer,\n          cellRenderer = _this$props2.cellRenderer; // Store for later calls to getLastRenderedIndices()\n\n      this._lastRenderedCellIndices = this._sectionManager.getCellIndices({\n        height: height,\n        width: width,\n        x: x,\n        y: y\n      });\n      return cellGroupRenderer({\n        cellCache: this._cellCache,\n        cellRenderer: cellRenderer,\n        cellSizeAndPositionGetter: function cellSizeAndPositionGetter(_ref3) {\n          var index = _ref3.index;\n          return _this2._sectionManager.getCellMetadata({\n            index: index\n          });\n        },\n        indices: this._lastRenderedCellIndices,\n        isScrolling: isScrolling\n      });\n    }\n  }, {\n    key: \"_isScrollingChange\",\n    value: function _isScrollingChange(isScrolling) {\n      if (!isScrolling) {\n        this._cellCache = [];\n      }\n    }\n  }, {\n    key: \"_setCollectionViewRef\",\n    value: function _setCollectionViewRef(ref) {\n      this._collectionView = ref;\n    }\n  }]);\n\n  return Collection;\n}(React.PureComponent);\n\n_defineProperty(Collection, \"defaultProps\", {\n  'aria-label': 'grid',\n  cellGroupRenderer: defaultCellGroupRenderer\n});\n\nexport { Collection as default };\nCollection.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  'aria-label': PropTypes.string,\n\n  /**\n   * Number of cells in Collection.\n   */\n  cellCount: PropTypes.number.isRequired,\n\n  /**\n   * Responsible for rendering a group of cells given their indices.\n   * Should implement the following interface: ({\n   *   cellSizeAndPositionGetter:Function,\n   *   indices: Array<number>,\n   *   cellRenderer: Function\n   * }): Array<PropTypes.node>\n   */\n  cellGroupRenderer: PropTypes.func.isRequired,\n\n  /**\n   * Responsible for rendering a cell given an row and column index.\n   * Should implement the following interface: ({ index: number, key: string, style: object }): PropTypes.element\n   */\n  cellRenderer: PropTypes.func.isRequired,\n\n  /**\n   * Callback responsible for returning size and offset/position information for a given cell (index).\n   * ({ index: number }): { height: number, width: number, x: number, y: number }\n   */\n  cellSizeAndPositionGetter: PropTypes.func.isRequired,\n\n  /**\n   * Optionally override the size of the sections a Collection's cells are split into.\n   */\n  sectionSize: PropTypes.number\n} : {};\n\nfunction defaultCellGroupRenderer(_ref4) {\n  var cellCache = _ref4.cellCache,\n      cellRenderer = _ref4.cellRenderer,\n      cellSizeAndPositionGetter = _ref4.cellSizeAndPositionGetter,\n      indices = _ref4.indices,\n      isScrolling = _ref4.isScrolling;\n  return indices.map(function (index) {\n    var cellMetadata = cellSizeAndPositionGetter({\n      index: index\n    });\n    var cellRendererProps = {\n      index: index,\n      isScrolling: isScrolling,\n      key: index,\n      style: {\n        height: cellMetadata.height,\n        left: cellMetadata.x,\n        position: 'absolute',\n        top: cellMetadata.y,\n        width: cellMetadata.width\n      }\n    }; // Avoid re-creating cells while scrolling.\n    // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n    // If a scroll is in progress- cache and reuse cells.\n    // This cache will be thrown away once scrolling complets.\n\n    if (isScrolling) {\n      if (!(index in cellCache)) {\n        cellCache[index] = cellRenderer(cellRendererProps);\n      }\n\n      return cellCache[index];\n    } else {\n      return cellRenderer(cellRendererProps);\n    }\n  }).filter(function (renderedCell) {\n    return !!renderedCell;\n  });\n}\n\nimport { bpfrpt_proptype_ScrollPosition } from \"./types\";\nimport { bpfrpt_proptype_SizeInfo } from \"./types\";","import SectionManager from '../SectionManager';\nexport default function calculateSizeAndPositionData(_ref) {\n  var cellCount = _ref.cellCount,\n      cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,\n      sectionSize = _ref.sectionSize;\n  var cellMetadata = [];\n  var sectionManager = new SectionManager(sectionSize);\n  var height = 0;\n  var width = 0;\n\n  for (var index = 0; index < cellCount; index++) {\n    var cellMetadatum = cellSizeAndPositionGetter({\n      index: index\n    });\n\n    if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) {\n      throw Error(\"Invalid metadata returned for cell \".concat(index, \":\\n        x:\").concat(cellMetadatum.x, \", y:\").concat(cellMetadatum.y, \", width:\").concat(cellMetadatum.width, \", height:\").concat(cellMetadatum.height));\n    }\n\n    height = Math.max(height, cellMetadatum.y + cellMetadatum.height);\n    width = Math.max(width, cellMetadatum.x + cellMetadatum.width);\n    cellMetadata[index] = cellMetadatum;\n    sectionManager.registerCell({\n      cellMetadatum: cellMetadatum,\n      index: index\n    });\n  }\n\n  return {\n    cellMetadata: cellMetadata,\n    height: height,\n    sectionManager: sectionManager,\n    width: width\n  };\n}","import Collection from './Collection';\nexport default Collection;\nexport { Collection };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * High-order component that auto-calculates column-widths for `Grid` cells.\n */\n\nvar ColumnSizer =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(ColumnSizer, _React$PureComponent);\n\n  function ColumnSizer(props, context) {\n    var _this;\n\n    _classCallCheck(this, ColumnSizer);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ColumnSizer).call(this, props, context));\n    _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(ColumnSizer, [{\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props = this.props,\n          columnMaxWidth = _this$props.columnMaxWidth,\n          columnMinWidth = _this$props.columnMinWidth,\n          columnCount = _this$props.columnCount,\n          width = _this$props.width;\n\n      if (columnMaxWidth !== prevProps.columnMaxWidth || columnMinWidth !== prevProps.columnMinWidth || columnCount !== prevProps.columnCount || width !== prevProps.width) {\n        if (this._registeredChild) {\n          this._registeredChild.recomputeGridSize();\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          children = _this$props2.children,\n          columnMaxWidth = _this$props2.columnMaxWidth,\n          columnMinWidth = _this$props2.columnMinWidth,\n          columnCount = _this$props2.columnCount,\n          width = _this$props2.width;\n      var safeColumnMinWidth = columnMinWidth || 1;\n      var safeColumnMaxWidth = columnMaxWidth ? Math.min(columnMaxWidth, width) : width;\n      var columnWidth = width / columnCount;\n      columnWidth = Math.max(safeColumnMinWidth, columnWidth);\n      columnWidth = Math.min(safeColumnMaxWidth, columnWidth);\n      columnWidth = Math.floor(columnWidth);\n      var adjustedWidth = Math.min(width, columnWidth * columnCount);\n      return children({\n        adjustedWidth: adjustedWidth,\n        columnWidth: columnWidth,\n        getColumnWidth: function getColumnWidth() {\n          return columnWidth;\n        },\n        registerChild: this._registerChild\n      });\n    }\n  }, {\n    key: \"_registerChild\",\n    value: function _registerChild(child) {\n      if (child && typeof child.recomputeGridSize !== 'function') {\n        throw Error('Unexpected child type registered; only Grid/MultiGrid children are supported.');\n      }\n\n      this._registeredChild = child;\n\n      if (this._registeredChild) {\n        this._registeredChild.recomputeGridSize();\n      }\n    }\n  }]);\n\n  return ColumnSizer;\n}(React.PureComponent);\n\nexport { ColumnSizer as default };\nColumnSizer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * Function responsible for rendering a virtualized Grid.\n   * This function should implement the following signature:\n   * ({ adjustedWidth, getColumnWidth, registerChild }) => PropTypes.element\n   *\n   * The specified :getColumnWidth function should be passed to the Grid's :columnWidth property.\n   * The :registerChild should be passed to the Grid's :ref property.\n   * The :adjustedWidth property is optional; it reflects the lesser of the overall width or the width of all columns.\n   */\n  children: PropTypes.func.isRequired,\n\n  /** Optional maximum allowed column width */\n  columnMaxWidth: PropTypes.number,\n\n  /** Optional minimum allowed column width */\n  columnMinWidth: PropTypes.number,\n\n  /** Number of columns in Grid or Table child */\n  columnCount: PropTypes.number.isRequired,\n\n  /** Width of Grid or Table child */\n  width: PropTypes.number.isRequired\n} : {};","import ColumnSizer from './ColumnSizer';\nexport default ColumnSizer;\nexport { ColumnSizer };","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\n/**\n * Higher-order component that manages lazy-loading for \"infinite\" data.\n * This component decorates a virtual component and just-in-time prefetches rows as a user scrolls.\n * It is intended as a convenience component; fork it if you'd like finer-grained control over data-loading.\n */\n\nvar InfiniteLoader =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(InfiniteLoader, _React$PureComponent);\n\n  function InfiniteLoader(props, context) {\n    var _this;\n\n    _classCallCheck(this, InfiniteLoader);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(InfiniteLoader).call(this, props, context));\n    _this._loadMoreRowsMemoizer = createCallbackMemoizer();\n    _this._onRowsRendered = _this._onRowsRendered.bind(_assertThisInitialized(_this));\n    _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(InfiniteLoader, [{\n    key: \"resetLoadMoreRowsCache\",\n    value: function resetLoadMoreRowsCache(autoReload) {\n      this._loadMoreRowsMemoizer = createCallbackMemoizer();\n\n      if (autoReload) {\n        this._doStuff(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return children({\n        onRowsRendered: this._onRowsRendered,\n        registerChild: this._registerChild\n      });\n    }\n  }, {\n    key: \"_loadUnloadedRanges\",\n    value: function _loadUnloadedRanges(unloadedRanges) {\n      var _this2 = this;\n\n      var loadMoreRows = this.props.loadMoreRows;\n      unloadedRanges.forEach(function (unloadedRange) {\n        var promise = loadMoreRows(unloadedRange);\n\n        if (promise) {\n          promise.then(function () {\n            // Refresh the visible rows if any of them have just been loaded.\n            // Otherwise they will remain in their unloaded visual state.\n            if (isRangeVisible({\n              lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n              lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n              startIndex: unloadedRange.startIndex,\n              stopIndex: unloadedRange.stopIndex\n            })) {\n              if (_this2._registeredChild) {\n                forceUpdateReactVirtualizedComponent(_this2._registeredChild, _this2._lastRenderedStartIndex);\n              }\n            }\n          });\n        }\n      });\n    }\n  }, {\n    key: \"_onRowsRendered\",\n    value: function _onRowsRendered(_ref) {\n      var startIndex = _ref.startIndex,\n          stopIndex = _ref.stopIndex;\n      this._lastRenderedStartIndex = startIndex;\n      this._lastRenderedStopIndex = stopIndex;\n\n      this._doStuff(startIndex, stopIndex);\n    }\n  }, {\n    key: \"_doStuff\",\n    value: function _doStuff(startIndex, stopIndex) {\n      var _ref2,\n          _this3 = this;\n\n      var _this$props = this.props,\n          isRowLoaded = _this$props.isRowLoaded,\n          minimumBatchSize = _this$props.minimumBatchSize,\n          rowCount = _this$props.rowCount,\n          threshold = _this$props.threshold;\n      var unloadedRanges = scanForUnloadedRanges({\n        isRowLoaded: isRowLoaded,\n        minimumBatchSize: minimumBatchSize,\n        rowCount: rowCount,\n        startIndex: Math.max(0, startIndex - threshold),\n        stopIndex: Math.min(rowCount - 1, stopIndex + threshold)\n      }); // For memoize comparison\n\n      var squashedUnloadedRanges = (_ref2 = []).concat.apply(_ref2, _toConsumableArray(unloadedRanges.map(function (_ref3) {\n        var startIndex = _ref3.startIndex,\n            stopIndex = _ref3.stopIndex;\n        return [startIndex, stopIndex];\n      })));\n\n      this._loadMoreRowsMemoizer({\n        callback: function callback() {\n          _this3._loadUnloadedRanges(unloadedRanges);\n        },\n        indices: {\n          squashedUnloadedRanges: squashedUnloadedRanges\n        }\n      });\n    }\n  }, {\n    key: \"_registerChild\",\n    value: function _registerChild(registeredChild) {\n      this._registeredChild = registeredChild;\n    }\n  }]);\n\n  return InfiniteLoader;\n}(React.PureComponent);\n/**\n * Determines if the specified start/stop range is visible based on the most recently rendered range.\n */\n\n\n_defineProperty(InfiniteLoader, \"defaultProps\", {\n  minimumBatchSize: 10,\n  rowCount: 0,\n  threshold: 15\n});\n\nexport { InfiniteLoader as default };\nInfiniteLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * Function responsible for rendering a virtualized component.\n   * This function should implement the following signature:\n   * ({ onRowsRendered, registerChild }) => PropTypes.element\n   *\n   * The specified :onRowsRendered function should be passed through to the child's :onRowsRendered property.\n   * The :registerChild callback should be set as the virtualized component's :ref.\n   */\n  children: PropTypes.func.isRequired,\n\n  /**\n   * Function responsible for tracking the loaded state of each row.\n   * It should implement the following signature: ({ index: number }): boolean\n   */\n  isRowLoaded: PropTypes.func.isRequired,\n\n  /**\n   * Callback to be invoked when more rows must be loaded.\n   * It should implement the following signature: ({ startIndex, stopIndex }): Promise\n   * The returned Promise should be resolved once row data has finished loading.\n   * It will be used to determine when to refresh the list with the newly-loaded data.\n   * This callback may be called multiple times in reaction to a single scroll event.\n   */\n  loadMoreRows: PropTypes.func.isRequired,\n\n  /**\n   * Minimum number of rows to be loaded at a time.\n   * This property can be used to batch requests to reduce HTTP requests.\n   */\n  minimumBatchSize: PropTypes.number.isRequired,\n\n  /**\n   * Number of rows in list; can be arbitrary high number if actual number is unknown.\n   */\n  rowCount: PropTypes.number.isRequired,\n\n  /**\n   * Threshold at which to pre-fetch data.\n   * A threshold X means that data will start loading when a user scrolls within X rows.\n   * This value defaults to 15.\n   */\n  threshold: PropTypes.number.isRequired\n} : {};\nexport function isRangeVisible(_ref4) {\n  var lastRenderedStartIndex = _ref4.lastRenderedStartIndex,\n      lastRenderedStopIndex = _ref4.lastRenderedStopIndex,\n      startIndex = _ref4.startIndex,\n      stopIndex = _ref4.stopIndex;\n  return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n/**\n * Returns all of the ranges within a larger range that contain unloaded rows.\n */\n\nexport function scanForUnloadedRanges(_ref5) {\n  var isRowLoaded = _ref5.isRowLoaded,\n      minimumBatchSize = _ref5.minimumBatchSize,\n      rowCount = _ref5.rowCount,\n      startIndex = _ref5.startIndex,\n      stopIndex = _ref5.stopIndex;\n  var unloadedRanges = [];\n  var rangeStartIndex = null;\n  var rangeStopIndex = null;\n\n  for (var index = startIndex; index <= stopIndex; index++) {\n    var loaded = isRowLoaded({\n      index: index\n    });\n\n    if (!loaded) {\n      rangeStopIndex = index;\n\n      if (rangeStartIndex === null) {\n        rangeStartIndex = index;\n      }\n    } else if (rangeStopIndex !== null) {\n      unloadedRanges.push({\n        startIndex: rangeStartIndex,\n        stopIndex: rangeStopIndex\n      });\n      rangeStartIndex = rangeStopIndex = null;\n    }\n  } // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n  // Scan forward to try filling our :minimumBatchSize.\n\n\n  if (rangeStopIndex !== null) {\n    var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), rowCount - 1);\n\n    for (var _index = rangeStopIndex + 1; _index <= potentialStopIndex; _index++) {\n      if (!isRowLoaded({\n        index: _index\n      })) {\n        rangeStopIndex = _index;\n      } else {\n        break;\n      }\n    }\n\n    unloadedRanges.push({\n      startIndex: rangeStartIndex,\n      stopIndex: rangeStopIndex\n    });\n  } // Check to see if our first range ended prematurely.\n  // In this case we should scan backwards to try filling our :minimumBatchSize.\n\n\n  if (unloadedRanges.length) {\n    var firstUnloadedRange = unloadedRanges[0];\n\n    while (firstUnloadedRange.stopIndex - firstUnloadedRange.startIndex + 1 < minimumBatchSize && firstUnloadedRange.startIndex > 0) {\n      var _index2 = firstUnloadedRange.startIndex - 1;\n\n      if (!isRowLoaded({\n        index: _index2\n      })) {\n        firstUnloadedRange.startIndex = _index2;\n      } else {\n        break;\n      }\n    }\n  }\n\n  return unloadedRanges;\n}\n/**\n * Since RV components use shallowCompare we need to force a render (even though props haven't changed).\n * However InfiniteLoader may wrap a Grid or it may wrap a Table or List.\n * In the first case the built-in React forceUpdate() method is sufficient to force a re-render,\n * But in the latter cases we need to use the RV-specific forceUpdateGrid() method.\n * Else the inner Grid will not be re-rendered and visuals may be stale.\n *\n * Additionally, while a Grid is scrolling the cells can be cached,\n * So it's important to invalidate that cache by recalculating sizes\n * before forcing a rerender.\n */\n\nexport function forceUpdateReactVirtualizedComponent(component) {\n  var currentIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var recomputeSize = typeof component.recomputeGridSize === 'function' ? component.recomputeGridSize : component.recomputeRowHeights;\n\n  if (recomputeSize) {\n    recomputeSize.call(component, currentIndex);\n  } else {\n    component.forceUpdate();\n  }\n}","import InfiniteLoader from './InfiniteLoader';\nexport default InfiniteLoader;\nexport { InfiniteLoader };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport * as React from 'react';\nimport clsx from 'clsx';\n/**\n * It is inefficient to create and manage a large list of DOM elements within a scrolling container\n * if only a few of those elements are visible. The primary purpose of this component is to improve\n * performance by only rendering the DOM nodes that a user is able to see based on their current\n * scroll position.\n *\n * This component renders a virtualized list of elements with either fixed or dynamic heights.\n */\n\nvar List = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(List, _React$PureComponent);\n\n  function List() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, List);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(List)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"Grid\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellRenderer\", function (_ref) {\n      var parent = _ref.parent,\n          rowIndex = _ref.rowIndex,\n          style = _ref.style,\n          isScrolling = _ref.isScrolling,\n          isVisible = _ref.isVisible,\n          key = _ref.key;\n      var rowRenderer = _this.props.rowRenderer; // TRICKY The style object is sometimes cached by Grid.\n      // This prevents new style objects from bypassing shallowCompare().\n      // However as of React 16, style props are auto-frozen (at least in dev mode)\n      // Check to make sure we can still modify the style before proceeding.\n      // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713\n\n      var widthDescriptor = Object.getOwnPropertyDescriptor(style, 'width');\n\n      if (widthDescriptor && widthDescriptor.writable) {\n        // By default, List cells should be 100% width.\n        // This prevents them from flowing under a scrollbar (if present).\n        style.width = '100%';\n      }\n\n      return rowRenderer({\n        index: rowIndex,\n        style: style,\n        isScrolling: isScrolling,\n        isVisible: isVisible,\n        key: key,\n        parent: parent\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (ref) {\n      _this.Grid = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (_ref2) {\n      var clientHeight = _ref2.clientHeight,\n          scrollHeight = _ref2.scrollHeight,\n          scrollTop = _ref2.scrollTop;\n      var onScroll = _this.props.onScroll;\n      onScroll({\n        clientHeight: clientHeight,\n        scrollHeight: scrollHeight,\n        scrollTop: scrollTop\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref3) {\n      var rowOverscanStartIndex = _ref3.rowOverscanStartIndex,\n          rowOverscanStopIndex = _ref3.rowOverscanStopIndex,\n          rowStartIndex = _ref3.rowStartIndex,\n          rowStopIndex = _ref3.rowStopIndex;\n      var onRowsRendered = _this.props.onRowsRendered;\n      onRowsRendered({\n        overscanStartIndex: rowOverscanStartIndex,\n        overscanStopIndex: rowOverscanStopIndex,\n        startIndex: rowStartIndex,\n        stopIndex: rowStopIndex\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(List, [{\n    key: \"forceUpdateGrid\",\n    value: function forceUpdateGrid() {\n      if (this.Grid) {\n        this.Grid.forceUpdate();\n      }\n    }\n    /** See Grid#getOffsetForCell */\n\n  }, {\n    key: \"getOffsetForRow\",\n    value: function getOffsetForRow(_ref4) {\n      var alignment = _ref4.alignment,\n          index = _ref4.index;\n\n      if (this.Grid) {\n        var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n          alignment: alignment,\n          rowIndex: index,\n          columnIndex: 0\n        }),\n            scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n        return scrollTop;\n      }\n\n      return 0;\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref5) {\n      var columnIndex = _ref5.columnIndex,\n          rowIndex = _ref5.rowIndex;\n\n      if (this.Grid) {\n        this.Grid.invalidateCellSizeAfterRender({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#measureAllCells */\n\n  }, {\n    key: \"measureAllRows\",\n    value: function measureAllRows() {\n      if (this.Grid) {\n        this.Grid.measureAllCells();\n      }\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref6$columnIndex = _ref6.columnIndex,\n          columnIndex = _ref6$columnIndex === void 0 ? 0 : _ref6$columnIndex,\n          _ref6$rowIndex = _ref6.rowIndex,\n          rowIndex = _ref6$rowIndex === void 0 ? 0 : _ref6$rowIndex;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#recomputeGridSize */\n\n  }, {\n    key: \"recomputeRowHeights\",\n    value: function recomputeRowHeights() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: index,\n          columnIndex: 0\n        });\n      }\n    }\n    /** See Grid#scrollToPosition */\n\n  }, {\n    key: \"scrollToPosition\",\n    value: function scrollToPosition() {\n      var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToPosition({\n          scrollTop: scrollTop\n        });\n      }\n    }\n    /** See Grid#scrollToCell */\n\n  }, {\n    key: \"scrollToRow\",\n    value: function scrollToRow() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToCell({\n          columnIndex: 0,\n          rowIndex: index\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          className = _this$props.className,\n          noRowsRenderer = _this$props.noRowsRenderer,\n          scrollToIndex = _this$props.scrollToIndex,\n          width = _this$props.width;\n      var classNames = clsx('ReactVirtualized__List', className);\n      return React.createElement(Grid, _extends({}, this.props, {\n        autoContainerWidth: true,\n        cellRenderer: this._cellRenderer,\n        className: classNames,\n        columnWidth: width,\n        columnCount: 1,\n        noContentRenderer: noRowsRenderer,\n        onScroll: this._onScroll,\n        onSectionRendered: this._onSectionRendered,\n        ref: this._setRef,\n        scrollToRow: scrollToIndex\n      }));\n    }\n  }]);\n\n  return List;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"aria-label\": PropTypes.string,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height\n   * of rows can stretch the window. Intended for use with WindowScroller\n   */\n  \"autoHeight\": PropTypes.bool.isRequired,\n\n  /** Optional CSS class name */\n  \"className\": PropTypes.string,\n\n  /**\n   * Used to estimate the total height of a List before all of its rows have actually been measured.\n   * The estimated total height is adjusted as rows are rendered.\n   */\n  \"estimatedRowSize\": PropTypes.number.isRequired,\n\n  /** Height constraint for list (determines how many actual rows are rendered) */\n  \"height\": PropTypes.number.isRequired,\n\n  /** Optional renderer to be used in place of rows when rowCount is 0 */\n  \"noRowsRenderer\": function noRowsRenderer() {\n    return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Callback invoked with information about the slice of rows that were just rendered.  */\n  \"onRowsRendered\": PropTypes.func.isRequired,\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   */\n  \"onScroll\": PropTypes.func.isRequired,\n\n  /** See Grid#overscanIndicesGetter */\n  \"overscanIndicesGetter\": function overscanIndicesGetter() {\n    return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n  },\n\n  /**\n   * Number of rows to render above/below the visible bounds of the list.\n   * These rows can help for smoother scrolling on touch devices.\n   */\n  \"overscanRowCount\": PropTypes.number.isRequired,\n\n  /** Either a fixed row height (number) or a function that returns the height of a row given its index.  */\n  \"rowHeight\": function rowHeight() {\n    return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n  },\n\n  /** Responsible for rendering a row given an index; ({ index: number }): node */\n  \"rowRenderer\": function rowRenderer() {\n    return (typeof bpfrpt_proptype_RowRenderer === \"function\" ? bpfrpt_proptype_RowRenderer.isRequired ? bpfrpt_proptype_RowRenderer.isRequired : bpfrpt_proptype_RowRenderer : PropTypes.shape(bpfrpt_proptype_RowRenderer).isRequired).apply(this, arguments);\n  },\n\n  /** Number of rows in list. */\n  \"rowCount\": PropTypes.number.isRequired,\n\n  /** See Grid#scrollToAlignment */\n  \"scrollToAlignment\": function scrollToAlignment() {\n    return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n  },\n\n  /** Row index to ensure visible (by forcefully scrolling if necessary) */\n  \"scrollToIndex\": PropTypes.number.isRequired,\n\n  /** Vertical offset. */\n  \"scrollTop\": PropTypes.number,\n\n  /** Optional inline style */\n  \"style\": PropTypes.object.isRequired,\n\n  /** Tab index for focus */\n  \"tabIndex\": PropTypes.number,\n\n  /** Width of list */\n  \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(List, \"defaultProps\", {\n  autoHeight: false,\n  estimatedRowSize: 30,\n  onScroll: function onScroll() {},\n  noRowsRenderer: function noRowsRenderer() {\n    return null;\n  },\n  onRowsRendered: function onRowsRendered() {},\n  overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n  overscanRowCount: 10,\n  scrollToAlignment: 'auto',\n  scrollToIndex: -1,\n  style: {}\n});\n\nexport { List as default };\nimport { bpfrpt_proptype_NoContentRenderer } from \"../Grid\";\nimport { bpfrpt_proptype_Alignment } from \"../Grid\";\nimport { bpfrpt_proptype_CellSize } from \"../Grid\";\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"../Grid\";\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_CellRendererParams } from \"../Grid\";\nimport { bpfrpt_proptype_Scroll as bpfrpt_proptype_GridScroll } from \"../Grid\";\nimport { bpfrpt_proptype_RowRenderer } from \"./types\";\nimport { bpfrpt_proptype_RenderedRows } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport PropTypes from \"prop-types\";","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/binary-search-bounds\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nfunction _GEA(a, l, h, y) {\n  var i = h + 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x >= y) {\n      i = m;\n      h = m - 1;\n    } else {\n      l = m + 1;\n    }\n  }\n\n  return i;\n}\n\nfunction _GEP(a, l, h, y, c) {\n  var i = h + 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (c(x, y) >= 0) {\n      i = m;\n      h = m - 1;\n    } else {\n      l = m + 1;\n    }\n  }\n\n  return i;\n}\n\nfunction dispatchBsearchGE(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _GEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _GEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nfunction _GTA(a, l, h, y) {\n  var i = h + 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x > y) {\n      i = m;\n      h = m - 1;\n    } else {\n      l = m + 1;\n    }\n  }\n\n  return i;\n}\n\nfunction _GTP(a, l, h, y, c) {\n  var i = h + 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (c(x, y) > 0) {\n      i = m;\n      h = m - 1;\n    } else {\n      l = m + 1;\n    }\n  }\n\n  return i;\n}\n\nfunction dispatchBsearchGT(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _GTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _GTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nfunction _LTA(a, l, h, y) {\n  var i = l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x < y) {\n      i = m;\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return i;\n}\n\nfunction _LTP(a, l, h, y, c) {\n  var i = l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (c(x, y) < 0) {\n      i = m;\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return i;\n}\n\nfunction dispatchBsearchLT(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _LTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _LTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nfunction _LEA(a, l, h, y) {\n  var i = l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x <= y) {\n      i = m;\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return i;\n}\n\nfunction _LEP(a, l, h, y, c) {\n  var i = l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (c(x, y) <= 0) {\n      i = m;\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return i;\n}\n\nfunction dispatchBsearchLE(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _LEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _LEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nfunction _EQA(a, l, h, y) {\n  l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n\n    if (x === y) {\n      return m;\n    } else if (x <= y) {\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return -1;\n}\n\nfunction _EQP(a, l, h, y, c) {\n  l - 1;\n\n  while (l <= h) {\n    var m = l + h >>> 1,\n        x = a[m];\n    var p = c(x, y);\n\n    if (p === 0) {\n      return m;\n    } else if (p <= 0) {\n      l = m + 1;\n    } else {\n      h = m - 1;\n    }\n  }\n\n  return -1;\n}\n\nfunction dispatchBsearchEQ(a, y, c, l, h) {\n  if (typeof c === 'function') {\n    return _EQP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n  } else {\n    return _EQA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n  }\n}\n\nexport default {\n  ge: dispatchBsearchGE,\n  gt: dispatchBsearchGT,\n  lt: dispatchBsearchLT,\n  le: dispatchBsearchLE,\n  eq: dispatchBsearchEQ\n};","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/interval-tree-1d\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax in an upstream dependency.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nimport bounds from './binarySearchBounds';\nvar NOT_FOUND = 0;\nvar SUCCESS = 1;\nvar EMPTY = 2;\n\nfunction IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {\n  this.mid = mid;\n  this.left = left;\n  this.right = right;\n  this.leftPoints = leftPoints;\n  this.rightPoints = rightPoints;\n  this.count = (left ? left.count : 0) + (right ? right.count : 0) + leftPoints.length;\n}\n\nvar proto = IntervalTreeNode.prototype;\n\nfunction copy(a, b) {\n  a.mid = b.mid;\n  a.left = b.left;\n  a.right = b.right;\n  a.leftPoints = b.leftPoints;\n  a.rightPoints = b.rightPoints;\n  a.count = b.count;\n}\n\nfunction rebuild(node, intervals) {\n  var ntree = createIntervalTree(intervals);\n  node.mid = ntree.mid;\n  node.left = ntree.left;\n  node.right = ntree.right;\n  node.leftPoints = ntree.leftPoints;\n  node.rightPoints = ntree.rightPoints;\n  node.count = ntree.count;\n}\n\nfunction rebuildWithInterval(node, interval) {\n  var intervals = node.intervals([]);\n  intervals.push(interval);\n  rebuild(node, intervals);\n}\n\nfunction rebuildWithoutInterval(node, interval) {\n  var intervals = node.intervals([]);\n  var idx = intervals.indexOf(interval);\n\n  if (idx < 0) {\n    return NOT_FOUND;\n  }\n\n  intervals.splice(idx, 1);\n  rebuild(node, intervals);\n  return SUCCESS;\n}\n\nproto.intervals = function (result) {\n  result.push.apply(result, this.leftPoints);\n\n  if (this.left) {\n    this.left.intervals(result);\n  }\n\n  if (this.right) {\n    this.right.intervals(result);\n  }\n\n  return result;\n};\n\nproto.insert = function (interval) {\n  var weight = this.count - this.leftPoints.length;\n  this.count += 1;\n\n  if (interval[1] < this.mid) {\n    if (this.left) {\n      if (4 * (this.left.count + 1) > 3 * (weight + 1)) {\n        rebuildWithInterval(this, interval);\n      } else {\n        this.left.insert(interval);\n      }\n    } else {\n      this.left = createIntervalTree([interval]);\n    }\n  } else if (interval[0] > this.mid) {\n    if (this.right) {\n      if (4 * (this.right.count + 1) > 3 * (weight + 1)) {\n        rebuildWithInterval(this, interval);\n      } else {\n        this.right.insert(interval);\n      }\n    } else {\n      this.right = createIntervalTree([interval]);\n    }\n  } else {\n    var l = bounds.ge(this.leftPoints, interval, compareBegin);\n    var r = bounds.ge(this.rightPoints, interval, compareEnd);\n    this.leftPoints.splice(l, 0, interval);\n    this.rightPoints.splice(r, 0, interval);\n  }\n};\n\nproto.remove = function (interval) {\n  var weight = this.count - this.leftPoints;\n\n  if (interval[1] < this.mid) {\n    if (!this.left) {\n      return NOT_FOUND;\n    }\n\n    var rw = this.right ? this.right.count : 0;\n\n    if (4 * rw > 3 * (weight - 1)) {\n      return rebuildWithoutInterval(this, interval);\n    }\n\n    var r = this.left.remove(interval);\n\n    if (r === EMPTY) {\n      this.left = null;\n      this.count -= 1;\n      return SUCCESS;\n    } else if (r === SUCCESS) {\n      this.count -= 1;\n    }\n\n    return r;\n  } else if (interval[0] > this.mid) {\n    if (!this.right) {\n      return NOT_FOUND;\n    }\n\n    var lw = this.left ? this.left.count : 0;\n\n    if (4 * lw > 3 * (weight - 1)) {\n      return rebuildWithoutInterval(this, interval);\n    }\n\n    var r = this.right.remove(interval);\n\n    if (r === EMPTY) {\n      this.right = null;\n      this.count -= 1;\n      return SUCCESS;\n    } else if (r === SUCCESS) {\n      this.count -= 1;\n    }\n\n    return r;\n  } else {\n    if (this.count === 1) {\n      if (this.leftPoints[0] === interval) {\n        return EMPTY;\n      } else {\n        return NOT_FOUND;\n      }\n    }\n\n    if (this.leftPoints.length === 1 && this.leftPoints[0] === interval) {\n      if (this.left && this.right) {\n        var p = this;\n        var n = this.left;\n\n        while (n.right) {\n          p = n;\n          n = n.right;\n        }\n\n        if (p === this) {\n          n.right = this.right;\n        } else {\n          var l = this.left;\n          var r = this.right;\n          p.count -= n.count;\n          p.right = n.left;\n          n.left = l;\n          n.right = r;\n        }\n\n        copy(this, n);\n        this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;\n      } else if (this.left) {\n        copy(this, this.left);\n      } else {\n        copy(this, this.right);\n      }\n\n      return SUCCESS;\n    }\n\n    for (var l = bounds.ge(this.leftPoints, interval, compareBegin); l < this.leftPoints.length; ++l) {\n      if (this.leftPoints[l][0] !== interval[0]) {\n        break;\n      }\n\n      if (this.leftPoints[l] === interval) {\n        this.count -= 1;\n        this.leftPoints.splice(l, 1);\n\n        for (var r = bounds.ge(this.rightPoints, interval, compareEnd); r < this.rightPoints.length; ++r) {\n          if (this.rightPoints[r][1] !== interval[1]) {\n            break;\n          } else if (this.rightPoints[r] === interval) {\n            this.rightPoints.splice(r, 1);\n            return SUCCESS;\n          }\n        }\n      }\n    }\n\n    return NOT_FOUND;\n  }\n};\n\nfunction reportLeftRange(arr, hi, cb) {\n  for (var i = 0; i < arr.length && arr[i][0] <= hi; ++i) {\n    var r = cb(arr[i]);\n\n    if (r) {\n      return r;\n    }\n  }\n}\n\nfunction reportRightRange(arr, lo, cb) {\n  for (var i = arr.length - 1; i >= 0 && arr[i][1] >= lo; --i) {\n    var r = cb(arr[i]);\n\n    if (r) {\n      return r;\n    }\n  }\n}\n\nfunction reportRange(arr, cb) {\n  for (var i = 0; i < arr.length; ++i) {\n    var r = cb(arr[i]);\n\n    if (r) {\n      return r;\n    }\n  }\n}\n\nproto.queryPoint = function (x, cb) {\n  if (x < this.mid) {\n    if (this.left) {\n      var r = this.left.queryPoint(x, cb);\n\n      if (r) {\n        return r;\n      }\n    }\n\n    return reportLeftRange(this.leftPoints, x, cb);\n  } else if (x > this.mid) {\n    if (this.right) {\n      var r = this.right.queryPoint(x, cb);\n\n      if (r) {\n        return r;\n      }\n    }\n\n    return reportRightRange(this.rightPoints, x, cb);\n  } else {\n    return reportRange(this.leftPoints, cb);\n  }\n};\n\nproto.queryInterval = function (lo, hi, cb) {\n  if (lo < this.mid && this.left) {\n    var r = this.left.queryInterval(lo, hi, cb);\n\n    if (r) {\n      return r;\n    }\n  }\n\n  if (hi > this.mid && this.right) {\n    var r = this.right.queryInterval(lo, hi, cb);\n\n    if (r) {\n      return r;\n    }\n  }\n\n  if (hi < this.mid) {\n    return reportLeftRange(this.leftPoints, hi, cb);\n  } else if (lo > this.mid) {\n    return reportRightRange(this.rightPoints, lo, cb);\n  } else {\n    return reportRange(this.leftPoints, cb);\n  }\n};\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\nfunction compareBegin(a, b) {\n  var d = a[0] - b[0];\n\n  if (d) {\n    return d;\n  }\n\n  return a[1] - b[1];\n}\n\nfunction compareEnd(a, b) {\n  var d = a[1] - b[1];\n\n  if (d) {\n    return d;\n  }\n\n  return a[0] - b[0];\n}\n\nfunction createIntervalTree(intervals) {\n  if (intervals.length === 0) {\n    return null;\n  }\n\n  var pts = [];\n\n  for (var i = 0; i < intervals.length; ++i) {\n    pts.push(intervals[i][0], intervals[i][1]);\n  }\n\n  pts.sort(compareNumbers);\n  var mid = pts[pts.length >> 1];\n  var leftIntervals = [];\n  var rightIntervals = [];\n  var centerIntervals = [];\n\n  for (var i = 0; i < intervals.length; ++i) {\n    var s = intervals[i];\n\n    if (s[1] < mid) {\n      leftIntervals.push(s);\n    } else if (mid < s[0]) {\n      rightIntervals.push(s);\n    } else {\n      centerIntervals.push(s);\n    }\n  } //Split center intervals\n\n\n  var leftPoints = centerIntervals;\n  var rightPoints = centerIntervals.slice();\n  leftPoints.sort(compareBegin);\n  rightPoints.sort(compareEnd);\n  return new IntervalTreeNode(mid, createIntervalTree(leftIntervals), createIntervalTree(rightIntervals), leftPoints, rightPoints);\n} //User friendly wrapper that makes it possible to support empty trees\n\n\nfunction IntervalTree(root) {\n  this.root = root;\n}\n\nvar tproto = IntervalTree.prototype;\n\ntproto.insert = function (interval) {\n  if (this.root) {\n    this.root.insert(interval);\n  } else {\n    this.root = new IntervalTreeNode(interval[0], null, null, [interval], [interval]);\n  }\n};\n\ntproto.remove = function (interval) {\n  if (this.root) {\n    var r = this.root.remove(interval);\n\n    if (r === EMPTY) {\n      this.root = null;\n    }\n\n    return r !== NOT_FOUND;\n  }\n\n  return false;\n};\n\ntproto.queryPoint = function (p, cb) {\n  if (this.root) {\n    return this.root.queryPoint(p, cb);\n  }\n};\n\ntproto.queryInterval = function (lo, hi, cb) {\n  if (lo <= hi && this.root) {\n    return this.root.queryInterval(lo, hi, cb);\n  }\n};\n\nObject.defineProperty(tproto, 'count', {\n  get: function get() {\n    if (this.root) {\n      return this.root.count;\n    }\n\n    return 0;\n  }\n});\nObject.defineProperty(tproto, 'intervals', {\n  get: function get() {\n    if (this.root) {\n      return this.root.intervals([]);\n    }\n\n    return [];\n  }\n});\nexport default function createWrapper(intervals) {\n  if (!intervals || intervals.length === 0) {\n    return new IntervalTree(null);\n  }\n\n  return new IntervalTree(createIntervalTree(intervals));\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport createIntervalTree from '../vendor/intervalTree';\n\n// Position cache requirements:\n//   O(log(n)) lookup of cells to render for a given viewport size\n//   O(1) lookup of shortest measured column (so we know when to enter phase 1)\nvar PositionCache =\n/*#__PURE__*/\nfunction () {\n  function PositionCache() {\n    _classCallCheck(this, PositionCache);\n\n    _defineProperty(this, \"_columnSizeMap\", {});\n\n    _defineProperty(this, \"_intervalTree\", createIntervalTree());\n\n    _defineProperty(this, \"_leftMap\", {});\n  }\n\n  _createClass(PositionCache, [{\n    key: \"estimateTotalHeight\",\n    value: function estimateTotalHeight(cellCount, columnCount, defaultCellHeight) {\n      var unmeasuredCellCount = cellCount - this.count;\n      return this.tallestColumnSize + Math.ceil(unmeasuredCellCount / columnCount) * defaultCellHeight;\n    } // Render all cells visible within the viewport range defined.\n\n  }, {\n    key: \"range\",\n    value: function range(scrollTop, clientHeight, renderCallback) {\n      var _this = this;\n\n      this._intervalTree.queryInterval(scrollTop, scrollTop + clientHeight, function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 3),\n            top = _ref2[0],\n            _ = _ref2[1],\n            index = _ref2[2];\n\n        return renderCallback(index, _this._leftMap[index], top);\n      });\n    }\n  }, {\n    key: \"setPosition\",\n    value: function setPosition(index, left, top, height) {\n      this._intervalTree.insert([top, top + height, index]);\n\n      this._leftMap[index] = left;\n      var columnSizeMap = this._columnSizeMap;\n      var columnHeight = columnSizeMap[left];\n\n      if (columnHeight === undefined) {\n        columnSizeMap[left] = top + height;\n      } else {\n        columnSizeMap[left] = Math.max(columnHeight, top + height);\n      }\n    }\n  }, {\n    key: \"count\",\n    get: function get() {\n      return this._intervalTree.count;\n    }\n  }, {\n    key: \"shortestColumnSize\",\n    get: function get() {\n      var columnSizeMap = this._columnSizeMap;\n      var size = 0;\n\n      for (var i in columnSizeMap) {\n        var height = columnSizeMap[i];\n        size = size === 0 ? height : Math.min(size, height);\n      }\n\n      return size;\n    }\n  }, {\n    key: \"tallestColumnSize\",\n    get: function get() {\n      var columnSizeMap = this._columnSizeMap;\n      var size = 0;\n\n      for (var i in columnSizeMap) {\n        var height = columnSizeMap[i];\n        size = Math.max(size, height);\n      }\n\n      return size;\n    }\n  }]);\n\n  return PositionCache;\n}();\n\nexport { PositionCache as default };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PositionCache from './PositionCache';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\nvar emptyObject = {};\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * This component efficiently displays arbitrarily positioned cells using windowing techniques.\n * Cell position is determined by an injected `cellPositioner` property.\n * Windowing is vertical; this component does not support horizontal scrolling.\n *\n * Rendering occurs in two phases:\n * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.\n *    Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.\n *    After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells\n *    in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).\n *    All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.\n * 2) Second pass uses the external `cellPositioner` to layout cells.\n *    At this time the positioner has access to cached size measurements for all cells.\n *    The positions it returns are cached by Masonry for fast access later.\n *    Phase one is repeated if the user scrolls beyond the current layout's bounds.\n *    If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.\n *\n * Animation constraints:\n *   Simple animations are supported (eg translate/slide into place on initial reveal).\n *   More complex animations are not (eg flying from one position to another on resize).\n *\n * Layout constraints:\n *   This component supports multi-column layout.\n *   The height of each item may vary.\n *   The width of each item must not exceed the width of the column it is \"in\".\n *   The left position of all items within a column must align.\n *   (Items may not span multiple columns.)\n */\n\nvar Masonry = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(Masonry, _React$PureComponent);\n\n  function Masonry() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, Masonry);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Masonry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      isScrolling: false,\n      scrollTop: 0\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingId\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStartIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStopIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_positionCache\", new PositionCache());\n\n    _defineProperty(_assertThisInitialized(_this), \"_startIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_startIndexMemoized\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_stopIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_stopIndexMemoized\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingCallback\", function () {\n      _this.setState({\n        isScrolling: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n      _this._scrollingContainer = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n      var height = _this.props.height;\n      var eventScrollTop = event.currentTarget.scrollTop; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n      // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n      // This causes a series of rapid renders that is slow for long lists.\n      // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n      var scrollTop = Math.min(Math.max(0, _this._getEstimatedTotalHeight() - height), eventScrollTop); // On iOS, we can arrive at negative offsets by swiping past the start or end.\n      // Avoid re-rendering in this case as it can cause problems; see #532 for more.\n\n      if (eventScrollTop !== scrollTop) {\n        return;\n      } // Prevent pointer events from interrupting a smooth scroll\n\n\n      _this._debounceResetIsScrolling(); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n      // Don't force a re-render if this is the case.\n      // The mouse may move faster then the animation frame does.\n      // Use requestAnimationFrame to avoid over-updating.\n\n\n      if (_this.state.scrollTop !== scrollTop) {\n        _this.setState({\n          isScrolling: true,\n          scrollTop: scrollTop\n        });\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(Masonry, [{\n    key: \"clearCellPositions\",\n    value: function clearCellPositions() {\n      this._positionCache = new PositionCache();\n      this.forceUpdate();\n    } // HACK This method signature was intended for Grid\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref) {\n      var index = _ref.rowIndex;\n\n      if (this._invalidateOnUpdateStartIndex === null) {\n        this._invalidateOnUpdateStartIndex = index;\n        this._invalidateOnUpdateStopIndex = index;\n      } else {\n        this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);\n        this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);\n      }\n    }\n  }, {\n    key: \"recomputeCellPositions\",\n    value: function recomputeCellPositions() {\n      var stopIndex = this._positionCache.count - 1;\n      this._positionCache = new PositionCache();\n\n      this._populatePositionCache(0, stopIndex);\n\n      this.forceUpdate();\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._checkInvalidateOnUpdate();\n\n      this._invokeOnScrollCallback();\n\n      this._invokeOnCellsRenderedCallback();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      this._checkInvalidateOnUpdate();\n\n      this._invokeOnScrollCallback();\n\n      this._invokeOnCellsRenderedCallback();\n\n      if (this.props.scrollTop !== prevProps.scrollTop) {\n        this._debounceResetIsScrolling();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._debounceResetIsScrollingId) {\n        cancelAnimationTimeout(this._debounceResetIsScrollingId);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          autoHeight = _this$props.autoHeight,\n          cellCount = _this$props.cellCount,\n          cellMeasurerCache = _this$props.cellMeasurerCache,\n          cellRenderer = _this$props.cellRenderer,\n          className = _this$props.className,\n          height = _this$props.height,\n          id = _this$props.id,\n          keyMapper = _this$props.keyMapper,\n          overscanByPixels = _this$props.overscanByPixels,\n          role = _this$props.role,\n          style = _this$props.style,\n          tabIndex = _this$props.tabIndex,\n          width = _this$props.width,\n          rowDirection = _this$props.rowDirection;\n      var _this$state = this.state,\n          isScrolling = _this$state.isScrolling,\n          scrollTop = _this$state.scrollTop;\n      var children = [];\n\n      var estimateTotalHeight = this._getEstimatedTotalHeight();\n\n      var shortestColumnSize = this._positionCache.shortestColumnSize;\n      var measuredCellCount = this._positionCache.count;\n      var startIndex = 0;\n      var stopIndex;\n\n      this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index, left, top) {\n        var _style;\n\n        if (typeof stopIndex === 'undefined') {\n          startIndex = index;\n          stopIndex = index;\n        } else {\n          startIndex = Math.min(startIndex, index);\n          stopIndex = Math.max(stopIndex, index);\n        }\n\n        children.push(cellRenderer({\n          index: index,\n          isScrolling: isScrolling,\n          key: keyMapper(index),\n          parent: _this2,\n          style: (_style = {\n            height: cellMeasurerCache.getHeight(index)\n          }, _defineProperty(_style, rowDirection === 'ltr' ? 'left' : 'right', left), _defineProperty(_style, \"position\", 'absolute'), _defineProperty(_style, \"top\", top), _defineProperty(_style, \"width\", cellMeasurerCache.getWidth(index)), _style)\n        }));\n      }); // We need to measure additional cells for this layout\n\n\n      if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {\n        var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));\n\n        for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {\n          stopIndex = _index;\n          children.push(cellRenderer({\n            index: _index,\n            isScrolling: isScrolling,\n            key: keyMapper(_index),\n            parent: this,\n            style: {\n              width: cellMeasurerCache.getWidth(_index)\n            }\n          }));\n        }\n      }\n\n      this._startIndex = startIndex;\n      this._stopIndex = stopIndex;\n      return React.createElement(\"div\", {\n        ref: this._setScrollingContainerRef,\n        \"aria-label\": this.props['aria-label'],\n        className: clsx('ReactVirtualized__Masonry', className),\n        id: id,\n        onScroll: this._onScroll,\n        role: role,\n        style: _objectSpread({\n          boxSizing: 'border-box',\n          direction: 'ltr',\n          height: autoHeight ? 'auto' : height,\n          overflowX: 'hidden',\n          overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',\n          position: 'relative',\n          width: width,\n          WebkitOverflowScrolling: 'touch',\n          willChange: 'transform'\n        }, style),\n        tabIndex: tabIndex\n      }, React.createElement(\"div\", {\n        className: \"ReactVirtualized__Masonry__innerScrollContainer\",\n        style: {\n          width: '100%',\n          height: estimateTotalHeight,\n          maxWidth: '100%',\n          maxHeight: estimateTotalHeight,\n          overflow: 'hidden',\n          pointerEvents: isScrolling ? 'none' : '',\n          position: 'relative'\n        }\n      }, children));\n    }\n  }, {\n    key: \"_checkInvalidateOnUpdate\",\n    value: function _checkInvalidateOnUpdate() {\n      if (typeof this._invalidateOnUpdateStartIndex === 'number') {\n        var startIndex = this._invalidateOnUpdateStartIndex;\n        var stopIndex = this._invalidateOnUpdateStopIndex;\n        this._invalidateOnUpdateStartIndex = null;\n        this._invalidateOnUpdateStopIndex = null; // Query external layout logic for position of newly-measured cells\n\n        this._populatePositionCache(startIndex, stopIndex);\n\n        this.forceUpdate();\n      }\n    }\n  }, {\n    key: \"_debounceResetIsScrolling\",\n    value: function _debounceResetIsScrolling() {\n      var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n      if (this._debounceResetIsScrollingId) {\n        cancelAnimationTimeout(this._debounceResetIsScrollingId);\n      }\n\n      this._debounceResetIsScrollingId = requestAnimationTimeout(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);\n    }\n  }, {\n    key: \"_getEstimatedTotalHeight\",\n    value: function _getEstimatedTotalHeight() {\n      var _this$props2 = this.props,\n          cellCount = _this$props2.cellCount,\n          cellMeasurerCache = _this$props2.cellMeasurerCache,\n          width = _this$props2.width;\n      var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));\n      return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);\n    }\n  }, {\n    key: \"_invokeOnScrollCallback\",\n    value: function _invokeOnScrollCallback() {\n      var _this$props3 = this.props,\n          height = _this$props3.height,\n          onScroll = _this$props3.onScroll;\n      var scrollTop = this.state.scrollTop;\n\n      if (this._onScrollMemoized !== scrollTop) {\n        onScroll({\n          clientHeight: height,\n          scrollHeight: this._getEstimatedTotalHeight(),\n          scrollTop: scrollTop\n        });\n        this._onScrollMemoized = scrollTop;\n      }\n    }\n  }, {\n    key: \"_invokeOnCellsRenderedCallback\",\n    value: function _invokeOnCellsRenderedCallback() {\n      if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {\n        var onCellsRendered = this.props.onCellsRendered;\n        onCellsRendered({\n          startIndex: this._startIndex,\n          stopIndex: this._stopIndex\n        });\n        this._startIndexMemoized = this._startIndex;\n        this._stopIndexMemoized = this._stopIndex;\n      }\n    }\n  }, {\n    key: \"_populatePositionCache\",\n    value: function _populatePositionCache(startIndex, stopIndex) {\n      var _this$props4 = this.props,\n          cellMeasurerCache = _this$props4.cellMeasurerCache,\n          cellPositioner = _this$props4.cellPositioner;\n\n      for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {\n        var _cellPositioner = cellPositioner(_index2),\n            left = _cellPositioner.left,\n            top = _cellPositioner.top;\n\n        this._positionCache.setPosition(_index2, left, top, cellMeasurerCache.getHeight(_index2));\n      }\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.scrollTop !== undefined && prevState.scrollTop !== nextProps.scrollTop) {\n        return {\n          isScrolling: true,\n          scrollTop: nextProps.scrollTop\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Masonry;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  \"autoHeight\": PropTypes.bool.isRequired,\n  \"cellCount\": PropTypes.number.isRequired,\n  \"cellMeasurerCache\": function cellMeasurerCache() {\n    return (typeof CellMeasurerCache === \"function\" ? PropTypes.instanceOf(CellMeasurerCache).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"cellPositioner\": function cellPositioner() {\n    return (typeof Positioner === \"function\" ? PropTypes.instanceOf(Positioner).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"cellRenderer\": function cellRenderer() {\n    return (typeof CellRenderer === \"function\" ? PropTypes.instanceOf(CellRenderer).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"className\": PropTypes.string,\n  \"height\": PropTypes.number.isRequired,\n  \"id\": PropTypes.string,\n  \"keyMapper\": function keyMapper() {\n    return (typeof KeyMapper === \"function\" ? PropTypes.instanceOf(KeyMapper).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n  },\n  \"onCellsRendered\": function onCellsRendered() {\n    return (typeof OnCellsRenderedCallback === \"function\" ? PropTypes.instanceOf(OnCellsRenderedCallback) : PropTypes.any).apply(this, arguments);\n  },\n  \"onScroll\": function onScroll() {\n    return (typeof OnScrollCallback === \"function\" ? PropTypes.instanceOf(OnScrollCallback) : PropTypes.any).apply(this, arguments);\n  },\n  \"overscanByPixels\": PropTypes.number.isRequired,\n  \"role\": PropTypes.string.isRequired,\n  \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n  \"style\": function style(props, propName, componentName) {\n    if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n      throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n    }\n  },\n  \"tabIndex\": PropTypes.number.isRequired,\n  \"width\": PropTypes.number.isRequired,\n  \"rowDirection\": PropTypes.string.isRequired,\n  \"scrollTop\": PropTypes.number\n}), _temp);\n\n_defineProperty(Masonry, \"defaultProps\", {\n  autoHeight: false,\n  keyMapper: identity,\n  onCellsRendered: noop,\n  onScroll: noop,\n  overscanByPixels: 20,\n  role: 'grid',\n  scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n  style: emptyObject,\n  tabIndex: 0,\n  rowDirection: 'ltr'\n});\n\nfunction identity(value) {\n  return value;\n}\n\nfunction noop() {}\n\nvar bpfrpt_proptype_CellMeasurerCache = process.env.NODE_ENV === 'production' ? null : {\n  \"defaultHeight\": PropTypes.number.isRequired,\n  \"defaultWidth\": PropTypes.number.isRequired,\n  \"getHeight\": PropTypes.func.isRequired,\n  \"getWidth\": PropTypes.func.isRequired\n};\npolyfill(Masonry);\nexport default Masonry;\nvar bpfrpt_proptype_Positioner = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellMeasurerCache };\nexport { bpfrpt_proptype_Positioner };","import createCellPositioner from './createCellPositioner';\nimport Masonry from './Masonry';\nexport default Masonry;\nexport { createCellPositioner, Masonry };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { CellMeasurerCache } from '../CellMeasurer';\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCacheDecorator =\n/*#__PURE__*/\nfunction () {\n  function CellMeasurerCacheDecorator() {\n    var _this = this;\n\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, CellMeasurerCacheDecorator);\n\n    _defineProperty(this, \"_cellMeasurerCache\", void 0);\n\n    _defineProperty(this, \"_columnIndexOffset\", void 0);\n\n    _defineProperty(this, \"_rowIndexOffset\", void 0);\n\n    _defineProperty(this, \"columnWidth\", function (_ref) {\n      var index = _ref.index;\n\n      _this._cellMeasurerCache.columnWidth({\n        index: index + _this._columnIndexOffset\n      });\n    });\n\n    _defineProperty(this, \"rowHeight\", function (_ref2) {\n      var index = _ref2.index;\n\n      _this._cellMeasurerCache.rowHeight({\n        index: index + _this._rowIndexOffset\n      });\n    });\n\n    var cellMeasurerCache = params.cellMeasurerCache,\n        _params$columnIndexOf = params.columnIndexOffset,\n        columnIndexOffset = _params$columnIndexOf === void 0 ? 0 : _params$columnIndexOf,\n        _params$rowIndexOffse = params.rowIndexOffset,\n        rowIndexOffset = _params$rowIndexOffse === void 0 ? 0 : _params$rowIndexOffse;\n    this._cellMeasurerCache = cellMeasurerCache;\n    this._columnIndexOffset = columnIndexOffset;\n    this._rowIndexOffset = rowIndexOffset;\n  }\n\n  _createClass(CellMeasurerCacheDecorator, [{\n    key: \"clear\",\n    value: function clear(rowIndex, columnIndex) {\n      this._cellMeasurerCache.clear(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n    }\n  }, {\n    key: \"clearAll\",\n    value: function clearAll() {\n      this._cellMeasurerCache.clearAll();\n    }\n  }, {\n    key: \"hasFixedHeight\",\n    value: function hasFixedHeight() {\n      return this._cellMeasurerCache.hasFixedHeight();\n    }\n  }, {\n    key: \"hasFixedWidth\",\n    value: function hasFixedWidth() {\n      return this._cellMeasurerCache.hasFixedWidth();\n    }\n  }, {\n    key: \"getHeight\",\n    value: function getHeight(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      return this._cellMeasurerCache.getHeight(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n    }\n  }, {\n    key: \"getWidth\",\n    value: function getWidth(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      return this._cellMeasurerCache.getWidth(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n    }\n  }, {\n    key: \"has\",\n    value: function has(rowIndex) {\n      var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      return this._cellMeasurerCache.has(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n    }\n  }, {\n    key: \"set\",\n    value: function set(rowIndex, columnIndex, width, height) {\n      this._cellMeasurerCache.set(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset, width, height);\n    }\n  }, {\n    key: \"defaultHeight\",\n    get: function get() {\n      return this._cellMeasurerCache.defaultHeight;\n    }\n  }, {\n    key: \"defaultWidth\",\n    get: function get() {\n      return this._cellMeasurerCache.defaultWidth;\n    }\n  }]);\n\n  return CellMeasurerCacheDecorator;\n}();\n\nexport { CellMeasurerCacheDecorator as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport CellMeasurerCacheDecorator from './CellMeasurerCacheDecorator';\nimport Grid from '../Grid';\nvar SCROLLBAR_SIZE_BUFFER = 20;\n/**\n * Renders 1, 2, or 4 Grids depending on configuration.\n * A main (body) Grid will always be rendered.\n * Optionally, 1-2 Grids for sticky header rows will also be rendered.\n * If no sticky columns, only 1 sticky header Grid will be rendered.\n * If sticky columns, 2 sticky header Grids will be rendered.\n */\n\nvar MultiGrid =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(MultiGrid, _React$PureComponent);\n\n  function MultiGrid(props, context) {\n    var _this;\n\n    _classCallCheck(this, MultiGrid);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(MultiGrid).call(this, props, context));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      scrollLeft: 0,\n      scrollTop: 0,\n      scrollbarSize: 0,\n      showHorizontalScrollbar: false,\n      showVerticalScrollbar: false\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"_bottomLeftGridRef\", function (ref) {\n      _this._bottomLeftGrid = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_bottomRightGridRef\", function (ref) {\n      _this._bottomRightGrid = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomLeftGrid\", function (_ref) {\n      var rowIndex = _ref.rowIndex,\n          rest = _objectWithoutProperties(_ref, [\"rowIndex\"]);\n\n      var _this$props = _this.props,\n          cellRenderer = _this$props.cellRenderer,\n          fixedRowCount = _this$props.fixedRowCount,\n          rowCount = _this$props.rowCount;\n\n      if (rowIndex === rowCount - fixedRowCount) {\n        return React.createElement(\"div\", {\n          key: rest.key,\n          style: _objectSpread({}, rest.style, {\n            height: SCROLLBAR_SIZE_BUFFER\n          })\n        });\n      } else {\n        return cellRenderer(_objectSpread({}, rest, {\n          parent: _assertThisInitialized(_this),\n          rowIndex: rowIndex + fixedRowCount\n        }));\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomRightGrid\", function (_ref2) {\n      var columnIndex = _ref2.columnIndex,\n          rowIndex = _ref2.rowIndex,\n          rest = _objectWithoutProperties(_ref2, [\"columnIndex\", \"rowIndex\"]);\n\n      var _this$props2 = _this.props,\n          cellRenderer = _this$props2.cellRenderer,\n          fixedColumnCount = _this$props2.fixedColumnCount,\n          fixedRowCount = _this$props2.fixedRowCount;\n      return cellRenderer(_objectSpread({}, rest, {\n        columnIndex: columnIndex + fixedColumnCount,\n        parent: _assertThisInitialized(_this),\n        rowIndex: rowIndex + fixedRowCount\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_cellRendererTopRightGrid\", function (_ref3) {\n      var columnIndex = _ref3.columnIndex,\n          rest = _objectWithoutProperties(_ref3, [\"columnIndex\"]);\n\n      var _this$props3 = _this.props,\n          cellRenderer = _this$props3.cellRenderer,\n          columnCount = _this$props3.columnCount,\n          fixedColumnCount = _this$props3.fixedColumnCount;\n\n      if (columnIndex === columnCount - fixedColumnCount) {\n        return React.createElement(\"div\", {\n          key: rest.key,\n          style: _objectSpread({}, rest.style, {\n            width: SCROLLBAR_SIZE_BUFFER\n          })\n        });\n      } else {\n        return cellRenderer(_objectSpread({}, rest, {\n          columnIndex: columnIndex + fixedColumnCount,\n          parent: _assertThisInitialized(_this)\n        }));\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_columnWidthRightGrid\", function (_ref4) {\n      var index = _ref4.index;\n      var _this$props4 = _this.props,\n          columnCount = _this$props4.columnCount,\n          fixedColumnCount = _this$props4.fixedColumnCount,\n          columnWidth = _this$props4.columnWidth;\n      var _this$state = _this.state,\n          scrollbarSize = _this$state.scrollbarSize,\n          showHorizontalScrollbar = _this$state.showHorizontalScrollbar; // An extra cell is added to the count\n      // This gives the smaller Grid extra room for offset,\n      // In case the main (bottom right) Grid has a scrollbar\n      // If no scrollbar, the extra space is overflow:hidden anyway\n\n      if (showHorizontalScrollbar && index === columnCount - fixedColumnCount) {\n        return scrollbarSize;\n      }\n\n      return typeof columnWidth === 'function' ? columnWidth({\n        index: index + fixedColumnCount\n      }) : columnWidth;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (scrollInfo) {\n      var scrollLeft = scrollInfo.scrollLeft,\n          scrollTop = scrollInfo.scrollTop;\n\n      _this.setState({\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop\n      });\n\n      var onScroll = _this.props.onScroll;\n\n      if (onScroll) {\n        onScroll(scrollInfo);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollbarPresenceChange\", function (_ref5) {\n      var horizontal = _ref5.horizontal,\n          size = _ref5.size,\n          vertical = _ref5.vertical;\n      var _this$state2 = _this.state,\n          showHorizontalScrollbar = _this$state2.showHorizontalScrollbar,\n          showVerticalScrollbar = _this$state2.showVerticalScrollbar;\n\n      if (horizontal !== showHorizontalScrollbar || vertical !== showVerticalScrollbar) {\n        _this.setState({\n          scrollbarSize: size,\n          showHorizontalScrollbar: horizontal,\n          showVerticalScrollbar: vertical\n        });\n\n        var onScrollbarPresenceChange = _this.props.onScrollbarPresenceChange;\n\n        if (typeof onScrollbarPresenceChange === 'function') {\n          onScrollbarPresenceChange({\n            horizontal: horizontal,\n            size: size,\n            vertical: vertical\n          });\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollLeft\", function (scrollInfo) {\n      var scrollLeft = scrollInfo.scrollLeft;\n\n      _this._onScroll({\n        scrollLeft: scrollLeft,\n        scrollTop: _this.state.scrollTop\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScrollTop\", function (scrollInfo) {\n      var scrollTop = scrollInfo.scrollTop;\n\n      _this._onScroll({\n        scrollTop: scrollTop,\n        scrollLeft: _this.state.scrollLeft\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_rowHeightBottomGrid\", function (_ref6) {\n      var index = _ref6.index;\n      var _this$props5 = _this.props,\n          fixedRowCount = _this$props5.fixedRowCount,\n          rowCount = _this$props5.rowCount,\n          rowHeight = _this$props5.rowHeight;\n      var _this$state3 = _this.state,\n          scrollbarSize = _this$state3.scrollbarSize,\n          showVerticalScrollbar = _this$state3.showVerticalScrollbar; // An extra cell is added to the count\n      // This gives the smaller Grid extra room for offset,\n      // In case the main (bottom right) Grid has a scrollbar\n      // If no scrollbar, the extra space is overflow:hidden anyway\n\n      if (showVerticalScrollbar && index === rowCount - fixedRowCount) {\n        return scrollbarSize;\n      }\n\n      return typeof rowHeight === 'function' ? rowHeight({\n        index: index + fixedRowCount\n      }) : rowHeight;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_topLeftGridRef\", function (ref) {\n      _this._topLeftGrid = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_topRightGridRef\", function (ref) {\n      _this._topRightGrid = ref;\n    });\n\n    var deferredMeasurementCache = props.deferredMeasurementCache,\n        _fixedColumnCount = props.fixedColumnCount,\n        _fixedRowCount = props.fixedRowCount;\n\n    _this._maybeCalculateCachedStyles(true);\n\n    if (deferredMeasurementCache) {\n      _this._deferredMeasurementCacheBottomLeftGrid = _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n        cellMeasurerCache: deferredMeasurementCache,\n        columnIndexOffset: 0,\n        rowIndexOffset: _fixedRowCount\n      }) : deferredMeasurementCache;\n      _this._deferredMeasurementCacheBottomRightGrid = _fixedColumnCount > 0 || _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n        cellMeasurerCache: deferredMeasurementCache,\n        columnIndexOffset: _fixedColumnCount,\n        rowIndexOffset: _fixedRowCount\n      }) : deferredMeasurementCache;\n      _this._deferredMeasurementCacheTopRightGrid = _fixedColumnCount > 0 ? new CellMeasurerCacheDecorator({\n        cellMeasurerCache: deferredMeasurementCache,\n        columnIndexOffset: _fixedColumnCount,\n        rowIndexOffset: 0\n      }) : deferredMeasurementCache;\n    }\n\n    return _this;\n  }\n\n  _createClass(MultiGrid, [{\n    key: \"forceUpdateGrids\",\n    value: function forceUpdateGrids() {\n      this._bottomLeftGrid && this._bottomLeftGrid.forceUpdate();\n      this._bottomRightGrid && this._bottomRightGrid.forceUpdate();\n      this._topLeftGrid && this._topLeftGrid.forceUpdate();\n      this._topRightGrid && this._topRightGrid.forceUpdate();\n    }\n    /** See Grid#invalidateCellSizeAfterRender */\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender() {\n      var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref7$columnIndex = _ref7.columnIndex,\n          columnIndex = _ref7$columnIndex === void 0 ? 0 : _ref7$columnIndex,\n          _ref7$rowIndex = _ref7.rowIndex,\n          rowIndex = _ref7$rowIndex === void 0 ? 0 : _ref7$rowIndex;\n\n      this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n      this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n    }\n    /** See Grid#measureAllCells */\n\n  }, {\n    key: \"measureAllCells\",\n    value: function measureAllCells() {\n      this._bottomLeftGrid && this._bottomLeftGrid.measureAllCells();\n      this._bottomRightGrid && this._bottomRightGrid.measureAllCells();\n      this._topLeftGrid && this._topLeftGrid.measureAllCells();\n      this._topRightGrid && this._topRightGrid.measureAllCells();\n    }\n    /** See Grid#recomputeGridSize */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref8$columnIndex = _ref8.columnIndex,\n          columnIndex = _ref8$columnIndex === void 0 ? 0 : _ref8$columnIndex,\n          _ref8$rowIndex = _ref8.rowIndex,\n          rowIndex = _ref8$rowIndex === void 0 ? 0 : _ref8$rowIndex;\n\n      var _this$props6 = this.props,\n          fixedColumnCount = _this$props6.fixedColumnCount,\n          fixedRowCount = _this$props6.fixedRowCount;\n      var adjustedColumnIndex = Math.max(0, columnIndex - fixedColumnCount);\n      var adjustedRowIndex = Math.max(0, rowIndex - fixedRowCount);\n      this._bottomLeftGrid && this._bottomLeftGrid.recomputeGridSize({\n        columnIndex: columnIndex,\n        rowIndex: adjustedRowIndex\n      });\n      this._bottomRightGrid && this._bottomRightGrid.recomputeGridSize({\n        columnIndex: adjustedColumnIndex,\n        rowIndex: adjustedRowIndex\n      });\n      this._topLeftGrid && this._topLeftGrid.recomputeGridSize({\n        columnIndex: columnIndex,\n        rowIndex: rowIndex\n      });\n      this._topRightGrid && this._topRightGrid.recomputeGridSize({\n        columnIndex: adjustedColumnIndex,\n        rowIndex: rowIndex\n      });\n      this._leftGridWidth = null;\n      this._topGridHeight = null;\n\n      this._maybeCalculateCachedStyles(true);\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props7 = this.props,\n          scrollLeft = _this$props7.scrollLeft,\n          scrollTop = _this$props7.scrollTop;\n\n      if (scrollLeft > 0 || scrollTop > 0) {\n        var newState = {};\n\n        if (scrollLeft > 0) {\n          newState.scrollLeft = scrollLeft;\n        }\n\n        if (scrollTop > 0) {\n          newState.scrollTop = scrollTop;\n        }\n\n        this.setState(newState);\n      }\n\n      this._handleInvalidatedGridSize();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this._handleInvalidatedGridSize();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props8 = this.props,\n          onScroll = _this$props8.onScroll,\n          onSectionRendered = _this$props8.onSectionRendered,\n          onScrollbarPresenceChange = _this$props8.onScrollbarPresenceChange,\n          scrollLeftProp = _this$props8.scrollLeft,\n          scrollToColumn = _this$props8.scrollToColumn,\n          scrollTopProp = _this$props8.scrollTop,\n          scrollToRow = _this$props8.scrollToRow,\n          rest = _objectWithoutProperties(_this$props8, [\"onScroll\", \"onSectionRendered\", \"onScrollbarPresenceChange\", \"scrollLeft\", \"scrollToColumn\", \"scrollTop\", \"scrollToRow\"]);\n\n      this._prepareForRender(); // Don't render any of our Grids if there are no cells.\n      // This mirrors what Grid does,\n      // And prevents us from recording inaccurage measurements when used with CellMeasurer.\n\n\n      if (this.props.width === 0 || this.props.height === 0) {\n        return null;\n      } // scrollTop and scrollLeft props are explicitly filtered out and ignored\n\n\n      var _this$state4 = this.state,\n          scrollLeft = _this$state4.scrollLeft,\n          scrollTop = _this$state4.scrollTop;\n      return React.createElement(\"div\", {\n        style: this._containerOuterStyle\n      }, React.createElement(\"div\", {\n        style: this._containerTopStyle\n      }, this._renderTopLeftGrid(rest), this._renderTopRightGrid(_objectSpread({}, rest, {\n        onScroll: onScroll,\n        scrollLeft: scrollLeft\n      }))), React.createElement(\"div\", {\n        style: this._containerBottomStyle\n      }, this._renderBottomLeftGrid(_objectSpread({}, rest, {\n        onScroll: onScroll,\n        scrollTop: scrollTop\n      })), this._renderBottomRightGrid(_objectSpread({}, rest, {\n        onScroll: onScroll,\n        onSectionRendered: onSectionRendered,\n        scrollLeft: scrollLeft,\n        scrollToColumn: scrollToColumn,\n        scrollToRow: scrollToRow,\n        scrollTop: scrollTop\n      }))));\n    }\n  }, {\n    key: \"_getBottomGridHeight\",\n    value: function _getBottomGridHeight(props) {\n      var height = props.height;\n\n      var topGridHeight = this._getTopGridHeight(props);\n\n      return height - topGridHeight;\n    }\n  }, {\n    key: \"_getLeftGridWidth\",\n    value: function _getLeftGridWidth(props) {\n      var fixedColumnCount = props.fixedColumnCount,\n          columnWidth = props.columnWidth;\n\n      if (this._leftGridWidth == null) {\n        if (typeof columnWidth === 'function') {\n          var leftGridWidth = 0;\n\n          for (var index = 0; index < fixedColumnCount; index++) {\n            leftGridWidth += columnWidth({\n              index: index\n            });\n          }\n\n          this._leftGridWidth = leftGridWidth;\n        } else {\n          this._leftGridWidth = columnWidth * fixedColumnCount;\n        }\n      }\n\n      return this._leftGridWidth;\n    }\n  }, {\n    key: \"_getRightGridWidth\",\n    value: function _getRightGridWidth(props) {\n      var width = props.width;\n\n      var leftGridWidth = this._getLeftGridWidth(props);\n\n      return width - leftGridWidth;\n    }\n  }, {\n    key: \"_getTopGridHeight\",\n    value: function _getTopGridHeight(props) {\n      var fixedRowCount = props.fixedRowCount,\n          rowHeight = props.rowHeight;\n\n      if (this._topGridHeight == null) {\n        if (typeof rowHeight === 'function') {\n          var topGridHeight = 0;\n\n          for (var index = 0; index < fixedRowCount; index++) {\n            topGridHeight += rowHeight({\n              index: index\n            });\n          }\n\n          this._topGridHeight = topGridHeight;\n        } else {\n          this._topGridHeight = rowHeight * fixedRowCount;\n        }\n      }\n\n      return this._topGridHeight;\n    }\n  }, {\n    key: \"_handleInvalidatedGridSize\",\n    value: function _handleInvalidatedGridSize() {\n      if (typeof this._deferredInvalidateColumnIndex === 'number') {\n        var columnIndex = this._deferredInvalidateColumnIndex;\n        var rowIndex = this._deferredInvalidateRowIndex;\n        this._deferredInvalidateColumnIndex = null;\n        this._deferredInvalidateRowIndex = null;\n        this.recomputeGridSize({\n          columnIndex: columnIndex,\n          rowIndex: rowIndex\n        });\n        this.forceUpdate();\n      }\n    }\n    /**\n     * Avoid recreating inline styles each render; this bypasses Grid's shallowCompare.\n     * This method recalculates styles only when specific props change.\n     */\n\n  }, {\n    key: \"_maybeCalculateCachedStyles\",\n    value: function _maybeCalculateCachedStyles(resetAll) {\n      var _this$props9 = this.props,\n          columnWidth = _this$props9.columnWidth,\n          enableFixedColumnScroll = _this$props9.enableFixedColumnScroll,\n          enableFixedRowScroll = _this$props9.enableFixedRowScroll,\n          height = _this$props9.height,\n          fixedColumnCount = _this$props9.fixedColumnCount,\n          fixedRowCount = _this$props9.fixedRowCount,\n          rowHeight = _this$props9.rowHeight,\n          style = _this$props9.style,\n          styleBottomLeftGrid = _this$props9.styleBottomLeftGrid,\n          styleBottomRightGrid = _this$props9.styleBottomRightGrid,\n          styleTopLeftGrid = _this$props9.styleTopLeftGrid,\n          styleTopRightGrid = _this$props9.styleTopRightGrid,\n          width = _this$props9.width;\n      var sizeChange = resetAll || height !== this._lastRenderedHeight || width !== this._lastRenderedWidth;\n      var leftSizeChange = resetAll || columnWidth !== this._lastRenderedColumnWidth || fixedColumnCount !== this._lastRenderedFixedColumnCount;\n      var topSizeChange = resetAll || fixedRowCount !== this._lastRenderedFixedRowCount || rowHeight !== this._lastRenderedRowHeight;\n\n      if (resetAll || sizeChange || style !== this._lastRenderedStyle) {\n        this._containerOuterStyle = _objectSpread({\n          height: height,\n          overflow: 'visible',\n          // Let :focus outline show through\n          width: width\n        }, style);\n      }\n\n      if (resetAll || sizeChange || topSizeChange) {\n        this._containerTopStyle = {\n          height: this._getTopGridHeight(this.props),\n          position: 'relative',\n          width: width\n        };\n        this._containerBottomStyle = {\n          height: height - this._getTopGridHeight(this.props),\n          overflow: 'visible',\n          // Let :focus outline show through\n          position: 'relative',\n          width: width\n        };\n      }\n\n      if (resetAll || styleBottomLeftGrid !== this._lastRenderedStyleBottomLeftGrid) {\n        this._bottomLeftGridStyle = _objectSpread({\n          left: 0,\n          overflowX: 'hidden',\n          overflowY: enableFixedColumnScroll ? 'auto' : 'hidden',\n          position: 'absolute'\n        }, styleBottomLeftGrid);\n      }\n\n      if (resetAll || leftSizeChange || styleBottomRightGrid !== this._lastRenderedStyleBottomRightGrid) {\n        this._bottomRightGridStyle = _objectSpread({\n          left: this._getLeftGridWidth(this.props),\n          position: 'absolute'\n        }, styleBottomRightGrid);\n      }\n\n      if (resetAll || styleTopLeftGrid !== this._lastRenderedStyleTopLeftGrid) {\n        this._topLeftGridStyle = _objectSpread({\n          left: 0,\n          overflowX: 'hidden',\n          overflowY: 'hidden',\n          position: 'absolute',\n          top: 0\n        }, styleTopLeftGrid);\n      }\n\n      if (resetAll || leftSizeChange || styleTopRightGrid !== this._lastRenderedStyleTopRightGrid) {\n        this._topRightGridStyle = _objectSpread({\n          left: this._getLeftGridWidth(this.props),\n          overflowX: enableFixedRowScroll ? 'auto' : 'hidden',\n          overflowY: 'hidden',\n          position: 'absolute',\n          top: 0\n        }, styleTopRightGrid);\n      }\n\n      this._lastRenderedColumnWidth = columnWidth;\n      this._lastRenderedFixedColumnCount = fixedColumnCount;\n      this._lastRenderedFixedRowCount = fixedRowCount;\n      this._lastRenderedHeight = height;\n      this._lastRenderedRowHeight = rowHeight;\n      this._lastRenderedStyle = style;\n      this._lastRenderedStyleBottomLeftGrid = styleBottomLeftGrid;\n      this._lastRenderedStyleBottomRightGrid = styleBottomRightGrid;\n      this._lastRenderedStyleTopLeftGrid = styleTopLeftGrid;\n      this._lastRenderedStyleTopRightGrid = styleTopRightGrid;\n      this._lastRenderedWidth = width;\n    }\n  }, {\n    key: \"_prepareForRender\",\n    value: function _prepareForRender() {\n      if (this._lastRenderedColumnWidth !== this.props.columnWidth || this._lastRenderedFixedColumnCount !== this.props.fixedColumnCount) {\n        this._leftGridWidth = null;\n      }\n\n      if (this._lastRenderedFixedRowCount !== this.props.fixedRowCount || this._lastRenderedRowHeight !== this.props.rowHeight) {\n        this._topGridHeight = null;\n      }\n\n      this._maybeCalculateCachedStyles();\n\n      this._lastRenderedColumnWidth = this.props.columnWidth;\n      this._lastRenderedFixedColumnCount = this.props.fixedColumnCount;\n      this._lastRenderedFixedRowCount = this.props.fixedRowCount;\n      this._lastRenderedRowHeight = this.props.rowHeight;\n    }\n  }, {\n    key: \"_renderBottomLeftGrid\",\n    value: function _renderBottomLeftGrid(props) {\n      var enableFixedColumnScroll = props.enableFixedColumnScroll,\n          fixedColumnCount = props.fixedColumnCount,\n          fixedRowCount = props.fixedRowCount,\n          rowCount = props.rowCount,\n          hideBottomLeftGridScrollbar = props.hideBottomLeftGridScrollbar;\n      var showVerticalScrollbar = this.state.showVerticalScrollbar;\n\n      if (!fixedColumnCount) {\n        return null;\n      }\n\n      var additionalRowCount = showVerticalScrollbar ? 1 : 0,\n          height = this._getBottomGridHeight(props),\n          width = this._getLeftGridWidth(props),\n          scrollbarSize = this.state.showVerticalScrollbar ? this.state.scrollbarSize : 0,\n          gridWidth = hideBottomLeftGridScrollbar ? width + scrollbarSize : width;\n\n      var bottomLeftGrid = React.createElement(Grid, _extends({}, props, {\n        cellRenderer: this._cellRendererBottomLeftGrid,\n        className: this.props.classNameBottomLeftGrid,\n        columnCount: fixedColumnCount,\n        deferredMeasurementCache: this._deferredMeasurementCacheBottomLeftGrid,\n        height: height,\n        onScroll: enableFixedColumnScroll ? this._onScrollTop : undefined,\n        ref: this._bottomLeftGridRef,\n        rowCount: Math.max(0, rowCount - fixedRowCount) + additionalRowCount,\n        rowHeight: this._rowHeightBottomGrid,\n        style: this._bottomLeftGridStyle,\n        tabIndex: null,\n        width: gridWidth\n      }));\n\n      if (hideBottomLeftGridScrollbar) {\n        return React.createElement(\"div\", {\n          className: \"BottomLeftGrid_ScrollWrapper\",\n          style: _objectSpread({}, this._bottomLeftGridStyle, {\n            height: height,\n            width: width,\n            overflowY: 'hidden'\n          })\n        }, bottomLeftGrid);\n      }\n\n      return bottomLeftGrid;\n    }\n  }, {\n    key: \"_renderBottomRightGrid\",\n    value: function _renderBottomRightGrid(props) {\n      var columnCount = props.columnCount,\n          fixedColumnCount = props.fixedColumnCount,\n          fixedRowCount = props.fixedRowCount,\n          rowCount = props.rowCount,\n          scrollToColumn = props.scrollToColumn,\n          scrollToRow = props.scrollToRow;\n      return React.createElement(Grid, _extends({}, props, {\n        cellRenderer: this._cellRendererBottomRightGrid,\n        className: this.props.classNameBottomRightGrid,\n        columnCount: Math.max(0, columnCount - fixedColumnCount),\n        columnWidth: this._columnWidthRightGrid,\n        deferredMeasurementCache: this._deferredMeasurementCacheBottomRightGrid,\n        height: this._getBottomGridHeight(props),\n        onScroll: this._onScroll,\n        onScrollbarPresenceChange: this._onScrollbarPresenceChange,\n        ref: this._bottomRightGridRef,\n        rowCount: Math.max(0, rowCount - fixedRowCount),\n        rowHeight: this._rowHeightBottomGrid,\n        scrollToColumn: scrollToColumn - fixedColumnCount,\n        scrollToRow: scrollToRow - fixedRowCount,\n        style: this._bottomRightGridStyle,\n        width: this._getRightGridWidth(props)\n      }));\n    }\n  }, {\n    key: \"_renderTopLeftGrid\",\n    value: function _renderTopLeftGrid(props) {\n      var fixedColumnCount = props.fixedColumnCount,\n          fixedRowCount = props.fixedRowCount;\n\n      if (!fixedColumnCount || !fixedRowCount) {\n        return null;\n      }\n\n      return React.createElement(Grid, _extends({}, props, {\n        className: this.props.classNameTopLeftGrid,\n        columnCount: fixedColumnCount,\n        height: this._getTopGridHeight(props),\n        ref: this._topLeftGridRef,\n        rowCount: fixedRowCount,\n        style: this._topLeftGridStyle,\n        tabIndex: null,\n        width: this._getLeftGridWidth(props)\n      }));\n    }\n  }, {\n    key: \"_renderTopRightGrid\",\n    value: function _renderTopRightGrid(props) {\n      var columnCount = props.columnCount,\n          enableFixedRowScroll = props.enableFixedRowScroll,\n          fixedColumnCount = props.fixedColumnCount,\n          fixedRowCount = props.fixedRowCount,\n          scrollLeft = props.scrollLeft,\n          hideTopRightGridScrollbar = props.hideTopRightGridScrollbar;\n      var _this$state5 = this.state,\n          showHorizontalScrollbar = _this$state5.showHorizontalScrollbar,\n          scrollbarSize = _this$state5.scrollbarSize;\n\n      if (!fixedRowCount) {\n        return null;\n      }\n\n      var additionalColumnCount = showHorizontalScrollbar ? 1 : 0,\n          height = this._getTopGridHeight(props),\n          width = this._getRightGridWidth(props),\n          additionalHeight = showHorizontalScrollbar ? scrollbarSize : 0;\n\n      var gridHeight = height,\n          style = this._topRightGridStyle;\n\n      if (hideTopRightGridScrollbar) {\n        gridHeight = height + additionalHeight;\n        style = _objectSpread({}, this._topRightGridStyle, {\n          left: 0\n        });\n      }\n\n      var topRightGrid = React.createElement(Grid, _extends({}, props, {\n        cellRenderer: this._cellRendererTopRightGrid,\n        className: this.props.classNameTopRightGrid,\n        columnCount: Math.max(0, columnCount - fixedColumnCount) + additionalColumnCount,\n        columnWidth: this._columnWidthRightGrid,\n        deferredMeasurementCache: this._deferredMeasurementCacheTopRightGrid,\n        height: gridHeight,\n        onScroll: enableFixedRowScroll ? this._onScrollLeft : undefined,\n        ref: this._topRightGridRef,\n        rowCount: fixedRowCount,\n        scrollLeft: scrollLeft,\n        style: style,\n        tabIndex: null,\n        width: width\n      }));\n\n      if (hideTopRightGridScrollbar) {\n        return React.createElement(\"div\", {\n          className: \"TopRightGrid_ScrollWrapper\",\n          style: _objectSpread({}, this._topRightGridStyle, {\n            height: height,\n            width: width,\n            overflowX: 'hidden'\n          })\n        }, topRightGrid);\n      }\n\n      return topRightGrid;\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n        return {\n          scrollLeft: nextProps.scrollLeft != null && nextProps.scrollLeft >= 0 ? nextProps.scrollLeft : prevState.scrollLeft,\n          scrollTop: nextProps.scrollTop != null && nextProps.scrollTop >= 0 ? nextProps.scrollTop : prevState.scrollTop\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return MultiGrid;\n}(React.PureComponent);\n\n_defineProperty(MultiGrid, \"defaultProps\", {\n  classNameBottomLeftGrid: '',\n  classNameBottomRightGrid: '',\n  classNameTopLeftGrid: '',\n  classNameTopRightGrid: '',\n  enableFixedColumnScroll: false,\n  enableFixedRowScroll: false,\n  fixedColumnCount: 0,\n  fixedRowCount: 0,\n  scrollToColumn: -1,\n  scrollToRow: -1,\n  style: {},\n  styleBottomLeftGrid: {},\n  styleBottomRightGrid: {},\n  styleTopLeftGrid: {},\n  styleTopRightGrid: {},\n  hideTopRightGridScrollbar: false,\n  hideBottomLeftGridScrollbar: false\n});\n\nMultiGrid.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  classNameBottomLeftGrid: PropTypes.string.isRequired,\n  classNameBottomRightGrid: PropTypes.string.isRequired,\n  classNameTopLeftGrid: PropTypes.string.isRequired,\n  classNameTopRightGrid: PropTypes.string.isRequired,\n  enableFixedColumnScroll: PropTypes.bool.isRequired,\n  enableFixedRowScroll: PropTypes.bool.isRequired,\n  fixedColumnCount: PropTypes.number.isRequired,\n  fixedRowCount: PropTypes.number.isRequired,\n  onScrollbarPresenceChange: PropTypes.func,\n  style: PropTypes.object.isRequired,\n  styleBottomLeftGrid: PropTypes.object.isRequired,\n  styleBottomRightGrid: PropTypes.object.isRequired,\n  styleTopLeftGrid: PropTypes.object.isRequired,\n  styleTopRightGrid: PropTypes.object.isRequired,\n  hideTopRightGridScrollbar: PropTypes.bool,\n  hideBottomLeftGridScrollbar: PropTypes.bool\n} : {};\npolyfill(MultiGrid);\nexport default MultiGrid;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * HOC that simplifies the process of synchronizing scrolling between two or more virtualized components.\n */\n\nvar ScrollSync =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(ScrollSync, _React$PureComponent);\n\n  function ScrollSync(props, context) {\n    var _this;\n\n    _classCallCheck(this, ScrollSync);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollSync).call(this, props, context));\n    _this.state = {\n      clientHeight: 0,\n      clientWidth: 0,\n      scrollHeight: 0,\n      scrollLeft: 0,\n      scrollTop: 0,\n      scrollWidth: 0\n    };\n    _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(ScrollSync, [{\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      var _this$state = this.state,\n          clientHeight = _this$state.clientHeight,\n          clientWidth = _this$state.clientWidth,\n          scrollHeight = _this$state.scrollHeight,\n          scrollLeft = _this$state.scrollLeft,\n          scrollTop = _this$state.scrollTop,\n          scrollWidth = _this$state.scrollWidth;\n      return children({\n        clientHeight: clientHeight,\n        clientWidth: clientWidth,\n        onScroll: this._onScroll,\n        scrollHeight: scrollHeight,\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        scrollWidth: scrollWidth\n      });\n    }\n  }, {\n    key: \"_onScroll\",\n    value: function _onScroll(_ref) {\n      var clientHeight = _ref.clientHeight,\n          clientWidth = _ref.clientWidth,\n          scrollHeight = _ref.scrollHeight,\n          scrollLeft = _ref.scrollLeft,\n          scrollTop = _ref.scrollTop,\n          scrollWidth = _ref.scrollWidth;\n      this.setState({\n        clientHeight: clientHeight,\n        clientWidth: clientWidth,\n        scrollHeight: scrollHeight,\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        scrollWidth: scrollWidth\n      });\n    }\n  }]);\n\n  return ScrollSync;\n}(React.PureComponent);\n\nexport { ScrollSync as default };\nScrollSync.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * Function responsible for rendering 2 or more virtualized components.\n   * This function should implement the following signature:\n   * ({ onScroll, scrollLeft, scrollTop }) => PropTypes.element\n   */\n  children: PropTypes.func.isRequired\n} : {};","import * as React from 'react';\nexport default function defaultHeaderRowRenderer(_ref) {\n  var className = _ref.className,\n      columns = _ref.columns,\n      style = _ref.style;\n  return React.createElement(\"div\", {\n    className: className,\n    role: \"row\",\n    style: style\n  }, columns);\n}\ndefaultHeaderRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRowRendererParams;\nimport { bpfrpt_proptype_HeaderRowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","var SortDirection = {\n  /**\n   * Sort items in ascending order.\n   * This means arranging from the lowest value to the highest (e.g. a-z, 0-9).\n   */\n  ASC: 'ASC',\n\n  /**\n   * Sort items in descending order.\n   * This means arranging from the highest value to the lowest (e.g. z-a, 9-0).\n   */\n  DESC: 'DESC'\n};\nexport default SortDirection;","import clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport SortDirection from './SortDirection';\n/**\n * Displayed beside a header to indicate that a Table is currently sorted by this column.\n */\n\nexport default function SortIndicator(_ref) {\n  var sortDirection = _ref.sortDirection;\n  var classNames = clsx('ReactVirtualized__Table__sortableHeaderIcon', {\n    'ReactVirtualized__Table__sortableHeaderIcon--ASC': sortDirection === SortDirection.ASC,\n    'ReactVirtualized__Table__sortableHeaderIcon--DESC': sortDirection === SortDirection.DESC\n  });\n  return React.createElement(\"svg\", {\n    className: classNames,\n    width: 18,\n    height: 18,\n    viewBox: \"0 0 24 24\"\n  }, sortDirection === SortDirection.ASC ? React.createElement(\"path\", {\n    d: \"M7 14l5-5 5 5z\"\n  }) : React.createElement(\"path\", {\n    d: \"M7 10l5 5 5-5z\"\n  }), React.createElement(\"path\", {\n    d: \"M0 0h24v24H0z\",\n    fill: \"none\"\n  }));\n}\nSortIndicator.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC])\n} : {};","import * as React from 'react';\nimport SortIndicator from './SortIndicator';\n\n/**\n * Default table header renderer.\n */\nexport default function defaultHeaderRenderer(_ref) {\n  var dataKey = _ref.dataKey,\n      label = _ref.label,\n      sortBy = _ref.sortBy,\n      sortDirection = _ref.sortDirection;\n  var showSortIndicator = sortBy === dataKey;\n  var children = [React.createElement(\"span\", {\n    className: \"ReactVirtualized__Table__headerTruncatedText\",\n    key: \"label\",\n    title: typeof label === 'string' ? label : null\n  }, label)];\n\n  if (showSortIndicator) {\n    children.push(React.createElement(SortIndicator, {\n      key: \"SortIndicator\",\n      sortDirection: sortDirection\n    }));\n  }\n\n  return children;\n}\ndefaultHeaderRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRendererParams;\nimport { bpfrpt_proptype_HeaderRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\n\n/**\n * Default row renderer for Table.\n */\nexport default function defaultRowRenderer(_ref) {\n  var className = _ref.className,\n      columns = _ref.columns,\n      index = _ref.index,\n      key = _ref.key,\n      onRowClick = _ref.onRowClick,\n      onRowDoubleClick = _ref.onRowDoubleClick,\n      onRowMouseOut = _ref.onRowMouseOut,\n      onRowMouseOver = _ref.onRowMouseOver,\n      onRowRightClick = _ref.onRowRightClick,\n      rowData = _ref.rowData,\n      style = _ref.style;\n  var a11yProps = {\n    'aria-rowindex': index + 1\n  };\n\n  if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {\n    a11yProps['aria-label'] = 'row';\n    a11yProps.tabIndex = 0;\n\n    if (onRowClick) {\n      a11yProps.onClick = function (event) {\n        return onRowClick({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n\n    if (onRowDoubleClick) {\n      a11yProps.onDoubleClick = function (event) {\n        return onRowDoubleClick({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n\n    if (onRowMouseOut) {\n      a11yProps.onMouseOut = function (event) {\n        return onRowMouseOut({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n\n    if (onRowMouseOver) {\n      a11yProps.onMouseOver = function (event) {\n        return onRowMouseOver({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n\n    if (onRowRightClick) {\n      a11yProps.onContextMenu = function (event) {\n        return onRowRightClick({\n          event: event,\n          index: index,\n          rowData: rowData\n        });\n      };\n    }\n  }\n\n  return React.createElement(\"div\", _extends({}, a11yProps, {\n    className: className,\n    key: key,\n    role: \"row\",\n    style: style\n  }), columns);\n}\ndefaultRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_RowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_RowRendererParams;\nimport { bpfrpt_proptype_RowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport SortDirection from './SortDirection';\n/**\n * Describes the header and cell contents of a table column.\n */\n\nvar Column =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inherits(Column, _React$Component);\n\n  function Column() {\n    _classCallCheck(this, Column);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(Column).apply(this, arguments));\n  }\n\n  return Column;\n}(React.Component);\n\n_defineProperty(Column, \"defaultProps\", {\n  cellDataGetter: defaultCellDataGetter,\n  cellRenderer: defaultCellRenderer,\n  defaultSortDirection: SortDirection.ASC,\n  flexGrow: 0,\n  flexShrink: 1,\n  headerRenderer: defaultHeaderRenderer,\n  style: {}\n});\n\nexport { Column as default };\nColumn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /** Optional aria-label value to set on the column header */\n  'aria-label': PropTypes.string,\n\n  /**\n   * Callback responsible for returning a cell's data, given its :dataKey\n   * ({ columnData: any, dataKey: string, rowData: any }): any\n   */\n  cellDataGetter: PropTypes.func,\n\n  /**\n   * Callback responsible for rendering a cell's contents.\n   * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node\n   */\n  cellRenderer: PropTypes.func,\n\n  /** Optional CSS class to apply to cell */\n  className: PropTypes.string,\n\n  /** Optional additional data passed to this column's :cellDataGetter */\n  columnData: PropTypes.object,\n\n  /** Uniquely identifies the row-data attribute corresponding to this cell */\n  dataKey: PropTypes.any.isRequired,\n\n  /** Optional direction to be used when clicked the first time */\n  defaultSortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n  /** If sort is enabled for the table at large, disable it for this column */\n  disableSort: PropTypes.bool,\n\n  /** Flex grow style; defaults to 0 */\n  flexGrow: PropTypes.number,\n\n  /** Flex shrink style; defaults to 1 */\n  flexShrink: PropTypes.number,\n\n  /** Optional CSS class to apply to this column's header */\n  headerClassName: PropTypes.string,\n\n  /**\n   * Optional callback responsible for rendering a column header contents.\n   * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node\n   */\n  headerRenderer: PropTypes.func.isRequired,\n\n  /** Optional inline style to apply to this column's header */\n  headerStyle: PropTypes.object,\n\n  /** Optional id to set on the column header */\n  id: PropTypes.string,\n\n  /** Header label for this column */\n  label: PropTypes.node,\n\n  /** Maximum width of column; this property will only be used if :flexGrow is > 0. */\n  maxWidth: PropTypes.number,\n\n  /** Minimum width of column. */\n  minWidth: PropTypes.number,\n\n  /** Optional inline style to apply to cell */\n  style: PropTypes.object,\n\n  /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */\n  width: PropTypes.number.isRequired\n} : {};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport Column from './Column';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer';\nimport SortDirection from './SortDirection';\n/**\n * Table component with fixed headers and virtualized rows for improved performance with large data sets.\n * This component expects explicit width, height, and padding parameters.\n */\n\nvar Table =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(Table, _React$PureComponent);\n\n  function Table(props) {\n    var _this;\n\n    _classCallCheck(this, Table);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Table).call(this, props));\n    _this.state = {\n      scrollbarWidth: 0\n    };\n    _this._createColumn = _this._createColumn.bind(_assertThisInitialized(_this));\n    _this._createRow = _this._createRow.bind(_assertThisInitialized(_this));\n    _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n    _this._onSectionRendered = _this._onSectionRendered.bind(_assertThisInitialized(_this));\n    _this._setRef = _this._setRef.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(Table, [{\n    key: \"forceUpdateGrid\",\n    value: function forceUpdateGrid() {\n      if (this.Grid) {\n        this.Grid.forceUpdate();\n      }\n    }\n    /** See Grid#getOffsetForCell */\n\n  }, {\n    key: \"getOffsetForRow\",\n    value: function getOffsetForRow(_ref) {\n      var alignment = _ref.alignment,\n          index = _ref.index;\n\n      if (this.Grid) {\n        var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n          alignment: alignment,\n          rowIndex: index\n        }),\n            scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n        return scrollTop;\n      }\n\n      return 0;\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"invalidateCellSizeAfterRender\",\n    value: function invalidateCellSizeAfterRender(_ref2) {\n      var columnIndex = _ref2.columnIndex,\n          rowIndex = _ref2.rowIndex;\n\n      if (this.Grid) {\n        this.Grid.invalidateCellSizeAfterRender({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#measureAllCells */\n\n  }, {\n    key: \"measureAllRows\",\n    value: function measureAllRows() {\n      if (this.Grid) {\n        this.Grid.measureAllCells();\n      }\n    }\n    /** CellMeasurer compatibility */\n\n  }, {\n    key: \"recomputeGridSize\",\n    value: function recomputeGridSize() {\n      var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref3$columnIndex = _ref3.columnIndex,\n          columnIndex = _ref3$columnIndex === void 0 ? 0 : _ref3$columnIndex,\n          _ref3$rowIndex = _ref3.rowIndex,\n          rowIndex = _ref3$rowIndex === void 0 ? 0 : _ref3$rowIndex;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: rowIndex,\n          columnIndex: columnIndex\n        });\n      }\n    }\n    /** See Grid#recomputeGridSize */\n\n  }, {\n    key: \"recomputeRowHeights\",\n    value: function recomputeRowHeights() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.recomputeGridSize({\n          rowIndex: index\n        });\n      }\n    }\n    /** See Grid#scrollToPosition */\n\n  }, {\n    key: \"scrollToPosition\",\n    value: function scrollToPosition() {\n      var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToPosition({\n          scrollTop: scrollTop\n        });\n      }\n    }\n    /** See Grid#scrollToCell */\n\n  }, {\n    key: \"scrollToRow\",\n    value: function scrollToRow() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (this.Grid) {\n        this.Grid.scrollToCell({\n          columnIndex: 0,\n          rowIndex: index\n        });\n      }\n    }\n  }, {\n    key: \"getScrollbarWidth\",\n    value: function getScrollbarWidth() {\n      if (this.Grid) {\n        var _Grid = findDOMNode(this.Grid);\n\n        var clientWidth = _Grid.clientWidth || 0;\n        var offsetWidth = _Grid.offsetWidth || 0;\n        return offsetWidth - clientWidth;\n      }\n\n      return 0;\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._setScrollbarWidth();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this._setScrollbarWidth();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          children = _this$props.children,\n          className = _this$props.className,\n          disableHeader = _this$props.disableHeader,\n          gridClassName = _this$props.gridClassName,\n          gridStyle = _this$props.gridStyle,\n          headerHeight = _this$props.headerHeight,\n          headerRowRenderer = _this$props.headerRowRenderer,\n          height = _this$props.height,\n          id = _this$props.id,\n          noRowsRenderer = _this$props.noRowsRenderer,\n          rowClassName = _this$props.rowClassName,\n          rowStyle = _this$props.rowStyle,\n          scrollToIndex = _this$props.scrollToIndex,\n          style = _this$props.style,\n          width = _this$props.width;\n      var scrollbarWidth = this.state.scrollbarWidth;\n      var availableRowsHeight = disableHeader ? height : height - headerHeight;\n      var rowClass = typeof rowClassName === 'function' ? rowClassName({\n        index: -1\n      }) : rowClassName;\n      var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n        index: -1\n      }) : rowStyle; // Precompute and cache column styles before rendering rows and columns to speed things up\n\n      this._cachedColumnStyles = [];\n      React.Children.toArray(children).forEach(function (column, index) {\n        var flexStyles = _this2._getFlexStyleForColumn(column, column.props.style);\n\n        _this2._cachedColumnStyles[index] = _objectSpread({\n          overflow: 'hidden'\n        }, flexStyles);\n      }); // Note that we specify :rowCount, :scrollbarWidth, :sortBy, and :sortDirection as properties on Grid even though these have nothing to do with Grid.\n      // This is done because Grid is a pure component and won't update unless its properties or state has changed.\n      // Any property that should trigger a re-render of Grid then is specified here to avoid a stale display.\n\n      return React.createElement(\"div\", {\n        \"aria-label\": this.props['aria-label'],\n        \"aria-labelledby\": this.props['aria-labelledby'],\n        \"aria-colcount\": React.Children.toArray(children).length,\n        \"aria-rowcount\": this.props.rowCount,\n        className: clsx('ReactVirtualized__Table', className),\n        id: id,\n        role: \"grid\",\n        style: style\n      }, !disableHeader && headerRowRenderer({\n        className: clsx('ReactVirtualized__Table__headerRow', rowClass),\n        columns: this._getHeaderColumns(),\n        style: _objectSpread({\n          height: headerHeight,\n          overflow: 'hidden',\n          paddingRight: scrollbarWidth,\n          width: width\n        }, rowStyleObject)\n      }), React.createElement(Grid, _extends({}, this.props, {\n        \"aria-readonly\": null,\n        autoContainerWidth: true,\n        className: clsx('ReactVirtualized__Table__Grid', gridClassName),\n        cellRenderer: this._createRow,\n        columnWidth: width,\n        columnCount: 1,\n        height: availableRowsHeight,\n        id: undefined,\n        noContentRenderer: noRowsRenderer,\n        onScroll: this._onScroll,\n        onSectionRendered: this._onSectionRendered,\n        ref: this._setRef,\n        role: \"rowgroup\",\n        scrollbarWidth: scrollbarWidth,\n        scrollToRow: scrollToIndex,\n        style: _objectSpread({}, gridStyle, {\n          overflowX: 'hidden'\n        })\n      })));\n    }\n  }, {\n    key: \"_createColumn\",\n    value: function _createColumn(_ref4) {\n      var column = _ref4.column,\n          columnIndex = _ref4.columnIndex,\n          isScrolling = _ref4.isScrolling,\n          parent = _ref4.parent,\n          rowData = _ref4.rowData,\n          rowIndex = _ref4.rowIndex;\n      var onColumnClick = this.props.onColumnClick;\n      var _column$props = column.props,\n          cellDataGetter = _column$props.cellDataGetter,\n          cellRenderer = _column$props.cellRenderer,\n          className = _column$props.className,\n          columnData = _column$props.columnData,\n          dataKey = _column$props.dataKey,\n          id = _column$props.id;\n      var cellData = cellDataGetter({\n        columnData: columnData,\n        dataKey: dataKey,\n        rowData: rowData\n      });\n      var renderedCell = cellRenderer({\n        cellData: cellData,\n        columnData: columnData,\n        columnIndex: columnIndex,\n        dataKey: dataKey,\n        isScrolling: isScrolling,\n        parent: parent,\n        rowData: rowData,\n        rowIndex: rowIndex\n      });\n\n      var onClick = function onClick(event) {\n        onColumnClick && onColumnClick({\n          columnData: columnData,\n          dataKey: dataKey,\n          event: event\n        });\n      };\n\n      var style = this._cachedColumnStyles[columnIndex];\n      var title = typeof renderedCell === 'string' ? renderedCell : null; // Avoid using object-spread syntax with multiple objects here,\n      // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n      // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n      return React.createElement(\"div\", {\n        \"aria-colindex\": columnIndex + 1,\n        \"aria-describedby\": id,\n        className: clsx('ReactVirtualized__Table__rowColumn', className),\n        key: 'Row' + rowIndex + '-' + 'Col' + columnIndex,\n        onClick: onClick,\n        role: \"gridcell\",\n        style: style,\n        title: title\n      }, renderedCell);\n    }\n  }, {\n    key: \"_createHeader\",\n    value: function _createHeader(_ref5) {\n      var column = _ref5.column,\n          index = _ref5.index;\n      var _this$props2 = this.props,\n          headerClassName = _this$props2.headerClassName,\n          headerStyle = _this$props2.headerStyle,\n          onHeaderClick = _this$props2.onHeaderClick,\n          sort = _this$props2.sort,\n          sortBy = _this$props2.sortBy,\n          sortDirection = _this$props2.sortDirection;\n      var _column$props2 = column.props,\n          columnData = _column$props2.columnData,\n          dataKey = _column$props2.dataKey,\n          defaultSortDirection = _column$props2.defaultSortDirection,\n          disableSort = _column$props2.disableSort,\n          headerRenderer = _column$props2.headerRenderer,\n          id = _column$props2.id,\n          label = _column$props2.label;\n      var sortEnabled = !disableSort && sort;\n      var classNames = clsx('ReactVirtualized__Table__headerColumn', headerClassName, column.props.headerClassName, {\n        ReactVirtualized__Table__sortableHeaderColumn: sortEnabled\n      });\n\n      var style = this._getFlexStyleForColumn(column, _objectSpread({}, headerStyle, {}, column.props.headerStyle));\n\n      var renderedHeader = headerRenderer({\n        columnData: columnData,\n        dataKey: dataKey,\n        disableSort: disableSort,\n        label: label,\n        sortBy: sortBy,\n        sortDirection: sortDirection\n      });\n      var headerOnClick, headerOnKeyDown, headerTabIndex, headerAriaSort, headerAriaLabel;\n\n      if (sortEnabled || onHeaderClick) {\n        // If this is a sortable header, clicking it should update the table data's sorting.\n        var isFirstTimeSort = sortBy !== dataKey; // If this is the firstTime sort of this column, use the column default sort order.\n        // Otherwise, invert the direction of the sort.\n\n        var newSortDirection = isFirstTimeSort ? defaultSortDirection : sortDirection === SortDirection.DESC ? SortDirection.ASC : SortDirection.DESC;\n\n        var onClick = function onClick(event) {\n          sortEnabled && sort({\n            defaultSortDirection: defaultSortDirection,\n            event: event,\n            sortBy: dataKey,\n            sortDirection: newSortDirection\n          });\n          onHeaderClick && onHeaderClick({\n            columnData: columnData,\n            dataKey: dataKey,\n            event: event\n          });\n        };\n\n        var onKeyDown = function onKeyDown(event) {\n          if (event.key === 'Enter' || event.key === ' ') {\n            onClick(event);\n          }\n        };\n\n        headerAriaLabel = column.props['aria-label'] || label || dataKey;\n        headerAriaSort = 'none';\n        headerTabIndex = 0;\n        headerOnClick = onClick;\n        headerOnKeyDown = onKeyDown;\n      }\n\n      if (sortBy === dataKey) {\n        headerAriaSort = sortDirection === SortDirection.ASC ? 'ascending' : 'descending';\n      } // Avoid using object-spread syntax with multiple objects here,\n      // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n      // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n\n      return React.createElement(\"div\", {\n        \"aria-label\": headerAriaLabel,\n        \"aria-sort\": headerAriaSort,\n        className: classNames,\n        id: id,\n        key: 'Header-Col' + index,\n        onClick: headerOnClick,\n        onKeyDown: headerOnKeyDown,\n        role: \"columnheader\",\n        style: style,\n        tabIndex: headerTabIndex\n      }, renderedHeader);\n    }\n  }, {\n    key: \"_createRow\",\n    value: function _createRow(_ref6) {\n      var _this3 = this;\n\n      var index = _ref6.rowIndex,\n          isScrolling = _ref6.isScrolling,\n          key = _ref6.key,\n          parent = _ref6.parent,\n          style = _ref6.style;\n      var _this$props3 = this.props,\n          children = _this$props3.children,\n          onRowClick = _this$props3.onRowClick,\n          onRowDoubleClick = _this$props3.onRowDoubleClick,\n          onRowRightClick = _this$props3.onRowRightClick,\n          onRowMouseOver = _this$props3.onRowMouseOver,\n          onRowMouseOut = _this$props3.onRowMouseOut,\n          rowClassName = _this$props3.rowClassName,\n          rowGetter = _this$props3.rowGetter,\n          rowRenderer = _this$props3.rowRenderer,\n          rowStyle = _this$props3.rowStyle;\n      var scrollbarWidth = this.state.scrollbarWidth;\n      var rowClass = typeof rowClassName === 'function' ? rowClassName({\n        index: index\n      }) : rowClassName;\n      var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n        index: index\n      }) : rowStyle;\n      var rowData = rowGetter({\n        index: index\n      });\n      var columns = React.Children.toArray(children).map(function (column, columnIndex) {\n        return _this3._createColumn({\n          column: column,\n          columnIndex: columnIndex,\n          isScrolling: isScrolling,\n          parent: parent,\n          rowData: rowData,\n          rowIndex: index,\n          scrollbarWidth: scrollbarWidth\n        });\n      });\n      var className = clsx('ReactVirtualized__Table__row', rowClass);\n\n      var flattenedStyle = _objectSpread({}, style, {\n        height: this._getRowHeight(index),\n        overflow: 'hidden',\n        paddingRight: scrollbarWidth\n      }, rowStyleObject);\n\n      return rowRenderer({\n        className: className,\n        columns: columns,\n        index: index,\n        isScrolling: isScrolling,\n        key: key,\n        onRowClick: onRowClick,\n        onRowDoubleClick: onRowDoubleClick,\n        onRowRightClick: onRowRightClick,\n        onRowMouseOver: onRowMouseOver,\n        onRowMouseOut: onRowMouseOut,\n        rowData: rowData,\n        style: flattenedStyle\n      });\n    }\n    /**\n     * Determines the flex-shrink, flex-grow, and width values for a cell (header or column).\n     */\n\n  }, {\n    key: \"_getFlexStyleForColumn\",\n    value: function _getFlexStyleForColumn(column) {\n      var customStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var flexValue = \"\".concat(column.props.flexGrow, \" \").concat(column.props.flexShrink, \" \").concat(column.props.width, \"px\");\n\n      var style = _objectSpread({}, customStyle, {\n        flex: flexValue,\n        msFlex: flexValue,\n        WebkitFlex: flexValue\n      });\n\n      if (column.props.maxWidth) {\n        style.maxWidth = column.props.maxWidth;\n      }\n\n      if (column.props.minWidth) {\n        style.minWidth = column.props.minWidth;\n      }\n\n      return style;\n    }\n  }, {\n    key: \"_getHeaderColumns\",\n    value: function _getHeaderColumns() {\n      var _this4 = this;\n\n      var _this$props4 = this.props,\n          children = _this$props4.children,\n          disableHeader = _this$props4.disableHeader;\n      var items = disableHeader ? [] : React.Children.toArray(children);\n      return items.map(function (column, index) {\n        return _this4._createHeader({\n          column: column,\n          index: index\n        });\n      });\n    }\n  }, {\n    key: \"_getRowHeight\",\n    value: function _getRowHeight(rowIndex) {\n      var rowHeight = this.props.rowHeight;\n      return typeof rowHeight === 'function' ? rowHeight({\n        index: rowIndex\n      }) : rowHeight;\n    }\n  }, {\n    key: \"_onScroll\",\n    value: function _onScroll(_ref7) {\n      var clientHeight = _ref7.clientHeight,\n          scrollHeight = _ref7.scrollHeight,\n          scrollTop = _ref7.scrollTop;\n      var onScroll = this.props.onScroll;\n      onScroll({\n        clientHeight: clientHeight,\n        scrollHeight: scrollHeight,\n        scrollTop: scrollTop\n      });\n    }\n  }, {\n    key: \"_onSectionRendered\",\n    value: function _onSectionRendered(_ref8) {\n      var rowOverscanStartIndex = _ref8.rowOverscanStartIndex,\n          rowOverscanStopIndex = _ref8.rowOverscanStopIndex,\n          rowStartIndex = _ref8.rowStartIndex,\n          rowStopIndex = _ref8.rowStopIndex;\n      var onRowsRendered = this.props.onRowsRendered;\n      onRowsRendered({\n        overscanStartIndex: rowOverscanStartIndex,\n        overscanStopIndex: rowOverscanStopIndex,\n        startIndex: rowStartIndex,\n        stopIndex: rowStopIndex\n      });\n    }\n  }, {\n    key: \"_setRef\",\n    value: function _setRef(ref) {\n      this.Grid = ref;\n    }\n  }, {\n    key: \"_setScrollbarWidth\",\n    value: function _setScrollbarWidth() {\n      var scrollbarWidth = this.getScrollbarWidth();\n      this.setState({\n        scrollbarWidth: scrollbarWidth\n      });\n    }\n  }]);\n\n  return Table;\n}(React.PureComponent);\n\n_defineProperty(Table, \"defaultProps\", {\n  disableHeader: false,\n  estimatedRowSize: 30,\n  headerHeight: 0,\n  headerStyle: {},\n  noRowsRenderer: function noRowsRenderer() {\n    return null;\n  },\n  onRowsRendered: function onRowsRendered() {\n    return null;\n  },\n  onScroll: function onScroll() {\n    return null;\n  },\n  overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n  overscanRowCount: 10,\n  rowRenderer: defaultRowRenderer,\n  headerRowRenderer: defaultHeaderRowRenderer,\n  rowStyle: {},\n  scrollToAlignment: 'auto',\n  scrollToIndex: -1,\n  style: {}\n});\n\nexport { Table as default };\nTable.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /** This is just set on the grid top element. */\n  'aria-label': PropTypes.string,\n\n  /** This is just set on the grid top element. */\n  'aria-labelledby': PropTypes.string,\n\n  /**\n   * Removes fixed height from the scrollingContainer so that the total height\n   * of rows can stretch the window. Intended for use with WindowScroller\n   */\n  autoHeight: PropTypes.bool,\n\n  /** One or more Columns describing the data displayed in this row */\n  children: function children(props) {\n    var children = React.Children.toArray(props.children);\n\n    for (var i = 0; i < children.length; i++) {\n      var childType = children[i].type;\n\n      if (childType !== Column && !(childType.prototype instanceof Column)) {\n        return new Error('Table only accepts children of type Column');\n      }\n    }\n  },\n\n  /** Optional CSS class name */\n  className: PropTypes.string,\n\n  /** Disable rendering the header at all */\n  disableHeader: PropTypes.bool,\n\n  /**\n   * Used to estimate the total height of a Table before all of its rows have actually been measured.\n   * The estimated total height is adjusted as rows are rendered.\n   */\n  estimatedRowSize: PropTypes.number.isRequired,\n\n  /** Optional custom CSS class name to attach to inner Grid element. */\n  gridClassName: PropTypes.string,\n\n  /** Optional inline style to attach to inner Grid element. */\n  gridStyle: PropTypes.object,\n\n  /** Optional CSS class to apply to all column headers */\n  headerClassName: PropTypes.string,\n\n  /** Fixed height of header row */\n  headerHeight: PropTypes.number.isRequired,\n\n  /**\n   * Responsible for rendering a table row given an array of columns:\n   * Should implement the following interface: ({\n   *   className: string,\n   *   columns: any[],\n   *   style: any\n   * }): PropTypes.node\n   */\n  headerRowRenderer: PropTypes.func,\n\n  /** Optional custom inline style to attach to table header columns. */\n  headerStyle: PropTypes.object,\n\n  /** Fixed/available height for out DOM element */\n  height: PropTypes.number.isRequired,\n\n  /** Optional id */\n  id: PropTypes.string,\n\n  /** Optional renderer to be used in place of table body rows when rowCount is 0 */\n  noRowsRenderer: PropTypes.func,\n\n  /**\n   * Optional callback when a column is clicked.\n   * ({ columnData: any, dataKey: string }): void\n   */\n  onColumnClick: PropTypes.func,\n\n  /**\n   * Optional callback when a column's header is clicked.\n   * ({ columnData: any, dataKey: string }): void\n   */\n  onHeaderClick: PropTypes.func,\n\n  /**\n   * Callback invoked when a user clicks on a table row.\n   * ({ index: number }): void\n   */\n  onRowClick: PropTypes.func,\n\n  /**\n   * Callback invoked when a user double-clicks on a table row.\n   * ({ index: number }): void\n   */\n  onRowDoubleClick: PropTypes.func,\n\n  /**\n   * Callback invoked when the mouse leaves a table row.\n   * ({ index: number }): void\n   */\n  onRowMouseOut: PropTypes.func,\n\n  /**\n   * Callback invoked when a user moves the mouse over a table row.\n   * ({ index: number }): void\n   */\n  onRowMouseOver: PropTypes.func,\n\n  /**\n   * Callback invoked when a user right-clicks on a table row.\n   * ({ index: number }): void\n   */\n  onRowRightClick: PropTypes.func,\n\n  /**\n   * Callback invoked with information about the slice of rows that were just rendered.\n   * ({ startIndex, stopIndex }): void\n   */\n  onRowsRendered: PropTypes.func,\n\n  /**\n   * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n   * This callback can be used to sync scrolling between lists, tables, or grids.\n   * ({ clientHeight, scrollHeight, scrollTop }): void\n   */\n  onScroll: PropTypes.func.isRequired,\n\n  /** See Grid#overscanIndicesGetter */\n  overscanIndicesGetter: PropTypes.func.isRequired,\n\n  /**\n   * Number of rows to render above/below the visible bounds of the list.\n   * These rows can help for smoother scrolling on touch devices.\n   */\n  overscanRowCount: PropTypes.number.isRequired,\n\n  /**\n   * Optional CSS class to apply to all table rows (including the header row).\n   * This property can be a CSS class name (string) or a function that returns a class name.\n   * If a function is provided its signature should be: ({ index: number }): string\n   */\n  rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n\n  /**\n   * Callback responsible for returning a data row given an index.\n   * ({ index: number }): any\n   */\n  rowGetter: PropTypes.func.isRequired,\n\n  /**\n   * Either a fixed row height (number) or a function that returns the height of a row given its index.\n   * ({ index: number }): number\n   */\n  rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired,\n\n  /** Number of rows in table. */\n  rowCount: PropTypes.number.isRequired,\n\n  /**\n   * Responsible for rendering a table row given an array of columns:\n   * Should implement the following interface: ({\n   *   className: string,\n   *   columns: Array,\n   *   index: number,\n   *   isScrolling: boolean,\n   *   onRowClick: ?Function,\n   *   onRowDoubleClick: ?Function,\n   *   onRowMouseOver: ?Function,\n   *   onRowMouseOut: ?Function,\n   *   rowData: any,\n   *   style: any\n   * }): PropTypes.node\n   */\n  rowRenderer: PropTypes.func,\n\n  /** Optional custom inline style to attach to table rows. */\n  rowStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\n\n  /** See Grid#scrollToAlignment */\n  scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n  /** Row index to ensure visible (by forcefully scrolling if necessary) */\n  scrollToIndex: PropTypes.number.isRequired,\n\n  /** Vertical offset. */\n  scrollTop: PropTypes.number,\n\n  /**\n   * Sort function to be called if a sortable header is clicked.\n   * Should implement the following interface: ({\n   *   defaultSortDirection: 'ASC' | 'DESC',\n   *   event: MouseEvent,\n   *   sortBy: string,\n   *   sortDirection: SortDirection\n   * }): void\n   */\n  sort: PropTypes.func,\n\n  /** Table data is currently sorted by this :dataKey (if it is sorted at all) */\n  sortBy: PropTypes.string,\n\n  /** Table data is currently sorted in this direction (if it is sorted at all) */\n  sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n  /** Optional inline style */\n  style: PropTypes.object,\n\n  /** Tab index for focus */\n  tabIndex: PropTypes.number,\n\n  /** Width of list */\n  width: PropTypes.number.isRequired\n} : {};\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";","/**\n * Default accessor for returning a cell value for a given attribute.\n * This function expects to operate on either a vanilla Object or an Immutable Map.\n * You should override the column's cellDataGetter if your data is some other type of object.\n */\nexport default function defaultCellDataGetter(_ref) {\n  var dataKey = _ref.dataKey,\n      rowData = _ref.rowData;\n\n  if (typeof rowData.get === 'function') {\n    return rowData.get(dataKey);\n  } else {\n    return rowData[dataKey];\n  }\n}\nimport { bpfrpt_proptype_CellDataGetterParams } from \"./types\";","/**\n * Default cell renderer that displays an attribute as a simple string\n * You should override the column's cellRenderer if your data is some other type of object.\n */\nexport default function defaultCellRenderer(_ref) {\n  var cellData = _ref.cellData;\n\n  if (cellData == null) {\n    return '';\n  } else {\n    return String(cellData);\n  }\n}\nimport { bpfrpt_proptype_CellRendererParams } from \"./types\";","import createMultiSort from './createMultiSort';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer.js';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport Column from './Column';\nimport SortDirection from './SortDirection';\nimport SortIndicator from './SortIndicator';\nimport Table from './Table';\nexport default Table;\nexport { createMultiSort, defaultCellDataGetter, defaultCellRenderer, defaultHeaderRowRenderer, defaultHeaderRenderer, defaultRowRenderer, Column, SortDirection, SortIndicator, Table };","import { requestAnimationTimeout, cancelAnimationTimeout } from '../../utils/requestAnimationTimeout';\nvar mountedInstances = [];\nvar originalBodyPointerEvents = null;\nvar disablePointerEventsTimeoutId = null;\n\nfunction enablePointerEventsIfDisabled() {\n  if (disablePointerEventsTimeoutId) {\n    disablePointerEventsTimeoutId = null;\n\n    if (document.body && originalBodyPointerEvents != null) {\n      document.body.style.pointerEvents = originalBodyPointerEvents;\n    }\n\n    originalBodyPointerEvents = null;\n  }\n}\n\nfunction enablePointerEventsAfterDelayCallback() {\n  enablePointerEventsIfDisabled();\n  mountedInstances.forEach(function (instance) {\n    return instance.__resetIsScrolling();\n  });\n}\n\nfunction enablePointerEventsAfterDelay() {\n  if (disablePointerEventsTimeoutId) {\n    cancelAnimationTimeout(disablePointerEventsTimeoutId);\n  }\n\n  var maximumTimeout = 0;\n  mountedInstances.forEach(function (instance) {\n    maximumTimeout = Math.max(maximumTimeout, instance.props.scrollingResetTimeInterval);\n  });\n  disablePointerEventsTimeoutId = requestAnimationTimeout(enablePointerEventsAfterDelayCallback, maximumTimeout);\n}\n\nfunction onScrollWindow(event) {\n  if (event.currentTarget === window && originalBodyPointerEvents == null && document.body) {\n    originalBodyPointerEvents = document.body.style.pointerEvents;\n    document.body.style.pointerEvents = 'none';\n  }\n\n  enablePointerEventsAfterDelay();\n  mountedInstances.forEach(function (instance) {\n    if (instance.props.scrollElement === event.currentTarget) {\n      instance.__handleWindowScrollEvent();\n    }\n  });\n}\n\nexport function registerScrollListener(component, element) {\n  if (!mountedInstances.some(function (instance) {\n    return instance.props.scrollElement === element;\n  })) {\n    element.addEventListener('scroll', onScrollWindow);\n  }\n\n  mountedInstances.push(component);\n}\nexport function unregisterScrollListener(component, element) {\n  mountedInstances = mountedInstances.filter(function (instance) {\n    return instance !== component;\n  });\n\n  if (!mountedInstances.length) {\n    element.removeEventListener('scroll', onScrollWindow);\n\n    if (disablePointerEventsTimeoutId) {\n      cancelAnimationTimeout(disablePointerEventsTimeoutId);\n      enablePointerEventsIfDisabled();\n    }\n  }\n}\nimport { bpfrpt_proptype_WindowScroller } from \"../WindowScroller.js\";","/**\n * Gets the dimensions of the element, accounting for API differences between\n * `window` and other DOM elements.\n */\n// TODO Move this into WindowScroller and import from there\nvar isWindow = function isWindow(element) {\n  return element === window;\n};\n\nvar getBoundingBox = function getBoundingBox(element) {\n  return element.getBoundingClientRect();\n};\n\nexport function getDimensions(scrollElement, props) {\n  if (!scrollElement) {\n    return {\n      height: props.serverHeight,\n      width: props.serverWidth\n    };\n  } else if (isWindow(scrollElement)) {\n    var _window = window,\n        innerHeight = _window.innerHeight,\n        innerWidth = _window.innerWidth;\n    return {\n      height: typeof innerHeight === 'number' ? innerHeight : 0,\n      width: typeof innerWidth === 'number' ? innerWidth : 0\n    };\n  } else {\n    return getBoundingBox(scrollElement);\n  }\n}\n/**\n * Gets the vertical and horizontal position of an element within its scroll container.\n * Elements that have been “scrolled past” return negative values.\n * Handles edge-case where a user is navigating back (history) from an already-scrolled page.\n * In this case the body’s top or left position will be a negative number and this element’s top or left will be increased (by that amount).\n */\n\nexport function getPositionOffset(element, container) {\n  if (isWindow(container) && document.documentElement) {\n    var containerElement = document.documentElement;\n    var elementRect = getBoundingBox(element);\n    var containerRect = getBoundingBox(containerElement);\n    return {\n      top: elementRect.top - containerRect.top,\n      left: elementRect.left - containerRect.left\n    };\n  } else {\n    var scrollOffset = getScrollOffset(container);\n\n    var _elementRect = getBoundingBox(element);\n\n    var _containerRect = getBoundingBox(container);\n\n    return {\n      top: _elementRect.top + scrollOffset.top - _containerRect.top,\n      left: _elementRect.left + scrollOffset.left - _containerRect.left\n    };\n  }\n}\n/**\n * Gets the vertical and horizontal scroll amount of the element, accounting for IE compatibility\n * and API differences between `window` and other DOM elements.\n */\n\nexport function getScrollOffset(element) {\n  if (isWindow(element) && document.documentElement) {\n    return {\n      top: 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop,\n      left: 'scrollX' in window ? window.scrollX : document.documentElement.scrollLeft\n    };\n  } else {\n    return {\n      top: element.scrollTop,\n      left: element.scrollLeft\n    };\n  }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { registerScrollListener, unregisterScrollListener } from './utils/onScroll';\nimport { getDimensions, getPositionOffset, getScrollOffset } from './utils/dimensions';\nimport createDetectElementResize from '../vendor/detectElementResize';\n\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nexport var IS_SCROLLING_TIMEOUT = 150;\n\nvar getWindow = function getWindow() {\n  return typeof window !== 'undefined' ? window : undefined;\n};\n\nvar WindowScroller = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(WindowScroller, _React$PureComponent);\n\n  function WindowScroller() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, WindowScroller);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WindowScroller)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"_window\", getWindow());\n\n    _defineProperty(_assertThisInitialized(_this), \"_isMounted\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_positionFromTop\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_positionFromLeft\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", _objectSpread({}, getDimensions(_this.props.scrollElement, _this.props), {\n      isScrolling: false,\n      scrollLeft: 0,\n      scrollTop: 0\n    }));\n\n    _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n      if (element && !(element instanceof Element)) {\n        console.warn('WindowScroller registerChild expects to be passed Element or null');\n      }\n\n      _this._child = element;\n\n      _this.updatePosition();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onChildScroll\", function (_ref) {\n      var scrollTop = _ref.scrollTop;\n\n      if (_this.state.scrollTop === scrollTop) {\n        return;\n      }\n\n      var scrollElement = _this.props.scrollElement;\n\n      if (scrollElement) {\n        if (typeof scrollElement.scrollTo === 'function') {\n          scrollElement.scrollTo(0, scrollTop + _this._positionFromTop);\n        } else {\n          scrollElement.scrollTop = scrollTop + _this._positionFromTop;\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_registerResizeListener\", function (element) {\n      if (element === window) {\n        window.addEventListener('resize', _this._onResize, false);\n      } else {\n        _this._detectElementResize.addResizeListener(element, _this._onResize);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_unregisterResizeListener\", function (element) {\n      if (element === window) {\n        window.removeEventListener('resize', _this._onResize, false);\n      } else if (element) {\n        _this._detectElementResize.removeResizeListener(element, _this._onResize);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n      _this.updatePosition();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"__handleWindowScrollEvent\", function () {\n      if (!_this._isMounted) {\n        return;\n      }\n\n      var onScroll = _this.props.onScroll;\n      var scrollElement = _this.props.scrollElement;\n\n      if (scrollElement) {\n        var scrollOffset = getScrollOffset(scrollElement);\n        var scrollLeft = Math.max(0, scrollOffset.left - _this._positionFromLeft);\n        var scrollTop = Math.max(0, scrollOffset.top - _this._positionFromTop);\n\n        _this.setState({\n          isScrolling: true,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        });\n\n        onScroll({\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop\n        });\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"__resetIsScrolling\", function () {\n      _this.setState({\n        isScrolling: false\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(WindowScroller, [{\n    key: \"updatePosition\",\n    value: function updatePosition() {\n      var scrollElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.scrollElement;\n      var onResize = this.props.onResize;\n      var _this$state = this.state,\n          height = _this$state.height,\n          width = _this$state.width;\n      var thisNode = this._child || ReactDOM.findDOMNode(this);\n\n      if (thisNode instanceof Element && scrollElement) {\n        var offset = getPositionOffset(thisNode, scrollElement);\n        this._positionFromTop = offset.top;\n        this._positionFromLeft = offset.left;\n      }\n\n      var dimensions = getDimensions(scrollElement, this.props);\n\n      if (height !== dimensions.height || width !== dimensions.width) {\n        this.setState({\n          height: dimensions.height,\n          width: dimensions.width\n        });\n        onResize({\n          height: dimensions.height,\n          width: dimensions.width\n        });\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var scrollElement = this.props.scrollElement;\n      this._detectElementResize = createDetectElementResize();\n      this.updatePosition(scrollElement);\n\n      if (scrollElement) {\n        registerScrollListener(this, scrollElement);\n\n        this._registerResizeListener(scrollElement);\n      }\n\n      this._isMounted = true;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var scrollElement = this.props.scrollElement;\n      var prevScrollElement = prevProps.scrollElement;\n\n      if (prevScrollElement !== scrollElement && prevScrollElement != null && scrollElement != null) {\n        this.updatePosition(scrollElement);\n        unregisterScrollListener(this, prevScrollElement);\n        registerScrollListener(this, scrollElement);\n\n        this._unregisterResizeListener(prevScrollElement);\n\n        this._registerResizeListener(scrollElement);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var scrollElement = this.props.scrollElement;\n\n      if (scrollElement) {\n        unregisterScrollListener(this, scrollElement);\n\n        this._unregisterResizeListener(scrollElement);\n      }\n\n      this._isMounted = false;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      var _this$state2 = this.state,\n          isScrolling = _this$state2.isScrolling,\n          scrollTop = _this$state2.scrollTop,\n          scrollLeft = _this$state2.scrollLeft,\n          height = _this$state2.height,\n          width = _this$state2.width;\n      return children({\n        onChildScroll: this._onChildScroll,\n        registerChild: this._registerChild,\n        height: height,\n        isScrolling: isScrolling,\n        scrollLeft: scrollLeft,\n        scrollTop: scrollTop,\n        width: width\n      });\n    }\n  }]);\n\n  return WindowScroller;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n  /**\n   * Function responsible for rendering children.\n   * This function should implement the following signature:\n   * ({ height, isScrolling, scrollLeft, scrollTop, width }) => PropTypes.element\n   */\n  \"children\": PropTypes.func.isRequired,\n\n  /** Callback to be invoked on-resize: ({ height, width }) */\n  \"onResize\": PropTypes.func.isRequired,\n\n  /** Callback to be invoked on-scroll: ({ scrollLeft, scrollTop }) */\n  \"onScroll\": PropTypes.func.isRequired,\n\n  /** Element to attach scroll event listeners. Defaults to window. */\n  \"scrollElement\": PropTypes.oneOfType([PropTypes.any, function () {\n    return (typeof Element === \"function\" ? PropTypes.instanceOf(Element) : PropTypes.any).apply(this, arguments);\n  }]),\n\n  /**\n   * Wait this amount of time after the last scroll event before resetting child `pointer-events`.\n   */\n  \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n  /** Height used for server-side rendering */\n  \"serverHeight\": PropTypes.number.isRequired,\n\n  /** Width used for server-side rendering */\n  \"serverWidth\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(WindowScroller, \"defaultProps\", {\n  onResize: function onResize() {},\n  onScroll: function onScroll() {},\n  scrollingResetTimeInterval: IS_SCROLLING_TIMEOUT,\n  scrollElement: getWindow(),\n  serverHeight: 0,\n  serverWidth: 0\n});\n\nexport { WindowScroller as default };\nimport PropTypes from \"prop-types\";","import WindowScroller, { IS_SCROLLING_TIMEOUT } from './WindowScroller';\nexport default WindowScroller;\nexport { WindowScroller, IS_SCROLLING_TIMEOUT };","import { useEffect, useRef } from 'react';\n\nexport default (callback = () => {}, deps) => {\n  const didMount = useRef(false);\n\n  useEffect(() => {\n    if (!didMount.current) {\n      didMount.current = true;\n      return;\n    }\n\n    return callback();\n  // eslint-disable-next-line\n  }, deps);\n};\n","import { isIE } from 'helpers/device';\n\nexport default async pageNumbersToExtract => {\n  const doc = window.documentViewer.getDocument();\n  const annotManager = window.documentViewer.getAnnotationManager();\n\n  const pageCount = doc.getPageCount();\n  const pageOutOfRange = pageNumbersToExtract.some(page => page < 1 || page > pageCount);\n\n  if (pageOutOfRange) {\n    return Promise.reject(`Page out of range, please enter an array of numbers between 1 and ${pageCount}`);\n  }\n\n  const finishPromise = new Promise(function(resolve, reject) {\n    try {\n      const pageMap = new Map();\n      pageNumbersToExtract.forEach(page => pageMap.set(page, true));\n\n      const annotList = annotManager.getAnnotationsList().filter(annot => pageMap.has(annot.PageNumber));\n      annotManager.exportAnnotations({ annotList }).then(xfdfString => {\n        doc.extractPages(pageNumbersToExtract, xfdfString).then(data => {\n          const arr = new Uint8Array(data);\n          const fileName = `${doc.getFilename()}.pdf` || 'extractedDocument.pdf';\n\n          let file = null;\n          if (isIE) {\n            file = new Blob([arr], { type: 'application/pdf' });\n          } else {\n            file = new File([arr], fileName, { type: 'application/pdf' });\n          }\n\n          resolve(file);\n        }).catch(function(ex) {\n          reject(ex);\n        });\n      });\n    } catch (ex) {\n      reject(ex);\n    }\n  });\n\n  return finishPromise;\n};\n","export const redactionTypeMap = {\n  REGION: 'region',\n  TEXT: 'text',\n  FULL_PAGE: 'fullPage',\n  FULL_VIDEO_FRAME: 'fullVideoFrame',\n  AUDIO_REDACTION: 'audioRedaction',\n  FULL_VIDEO_FRAME_AND_AUDIO: 'fullVideoFrameAndAudio',\n  CREDIT_CARD: 'creditCard',\n  PHONE: 'phone',\n  IMAGE: 'image',\n  EMAIL: 'email',\n};\n\nexport const defaultRedactionTypes = {\n  [redactionTypeMap['REGION']]: {\n    icon: 'icon-tool-redaction-area',\n    label: 'redactionPanel.redactionItem.regionRedaction',\n  },\n  [redactionTypeMap['FULL_PAGE']]: {\n    icon: 'icon-header-page-manipulation-page-transition-page-by-page-line',\n    label: 'redactionPanel.redactionItem.fullPageRedaction',\n  },\n  [redactionTypeMap['FULL_VIDEO_FRAME']]: {\n    icon: 'ic-full-frame-video-redact',\n    label: 'redactionPanel.redactionItem.fullVideoFrameRedaction',\n  },\n  [redactionTypeMap['AUDIO_REDACTION']]: {\n    icon: 'ic-audio-redact',\n    label: 'redactionPanel.redactionItem.audioRedaction',\n  },\n  [redactionTypeMap['FULL_VIDEO_FRAME_AND_AUDIO']]: {\n    icon: 'ic-full-frame-video-and-audio-redact',\n    label: 'redactionPanel.redactionItem.fullVideoFrameAndAudioRedaction',\n  },\n  [redactionTypeMap['TEXT']]: {\n    icon: 'icon-form-field-text',\n  },\n  [redactionTypeMap['IMAGE']]: {\n    icon: 'redact-icons-image',\n    label: 'redactionPanel.redactionItem.image',\n  }\n};\n\nexport const mapAnnotationToRedactionType = annotation => {\n  const isTextRedaction = annotation.IsText;\n  if (isTextRedaction) {\n    return redactionTypeMap['TEXT'];\n  }\n\n  const { type = 'region' } = annotation;\n  return type;\n};","import extractPagesWithAnnotations from 'helpers/extractPagesWithAnnotations';\nimport core from 'core';\nimport { saveAs } from 'file-saver';\nimport actions from 'actions';\nimport i18next from 'i18next';\nimport { workerTypes } from 'constants/types';\nimport { redactionTypeMap } from 'constants/redactionTypes';\n\nconst getNewRotation = (curr, counterClockwise = false) => {\n  const { E_0, E_90, E_180, E_270 } = window.Core.PageRotation;\n  switch (curr) {\n    case E_270:\n      return counterClockwise ? E_180 : E_0;\n    case E_180:\n      return counterClockwise ? E_90 : E_270;\n    case E_90:\n      return counterClockwise ? E_0 : E_180;\n    default:\n      return counterClockwise ? E_270 : E_90;\n  }\n};\n\nconst canRotateLoadedDocument = () => {\n  const doc = core.getDocument();\n  const docType = doc?.type;\n\n  return (\n    workerTypes.PDF === docType ||\n    workerTypes.IMAGE === docType ||\n    (docType === workerTypes.WEBVIEWER_SERVER && !doc.isWebViewerServerDocument())\n  );\n};\n\nconst rotatePages = (pageNumbers, counterClockwise) => {\n  if (canRotateLoadedDocument()) {\n    const rotation = counterClockwise ? window.Core.PageRotation.E_270 : window.Core.PageRotation.E_90;\n    pageNumbers.forEach(index => {\n      core.rotatePages([index], rotation);\n    });\n  } else {\n    const docViewer = core.getDocumentViewer();\n    const currentRotations = docViewer.getPageRotations();\n    for (const page of pageNumbers) {\n      docViewer.setRotation(getNewRotation(currentRotations[page], counterClockwise), page);\n    }\n  }\n};\n\nconst rotateClockwise = pageNumbers => {\n  rotatePages(pageNumbers, false);\n};\n\nconst rotateCounterClockwise = pageNumbers => {\n  rotatePages(pageNumbers, true);\n};\n\nconst insertAbove = pageNumbers => {\n  core.insertBlankPages(pageNumbers, core.getPageWidth(pageNumbers[0]), core.getPageHeight(pageNumbers[0]));\n};\n\nconst insertBelow = pageNumbers => {\n  core.insertBlankPages(pageNumbers.map(i => i + 1), core.getPageWidth(pageNumbers[0]), core.getPageHeight(pageNumbers[0]));\n};\n\nconst replace = dispatch => {\n  dispatch(actions.openElement('pageReplacementModal'));\n};\n\nconst extractPages = (pageNumbers, dispatch) => {\n  const message = i18next.t('warning.extractPage.message');\n  const title = i18next.t('warning.extractPage.title');\n  const confirmBtnText = i18next.t('warning.extractPage.confirmBtn');\n  const secondaryBtnText = i18next.t('warning.extractPage.secondaryBtn');\n\n  const warning = {\n    message,\n    title,\n    confirmBtnText,\n    onConfirm: () =>\n      extractPagesWithAnnotations(pageNumbers).then(file => {\n        saveAs(file, 'extractedDocument.pdf');\n      }),\n    secondaryBtnText,\n    onSecondary: () => {\n      extractPagesWithAnnotations(pageNumbers).then(file => {\n        saveAs(file, 'extractedDocument.pdf');\n        core.removePages(pageNumbers).then(() => {\n          dispatch(actions.setSelectedPageThumbnails([]));\n        });\n      });\n    },\n  };\n\n  dispatch(actions.showWarningMessage(warning));\n};\n\nconst deletePages = (pageNumbers, dispatch, isModalEnabled = true) => {\n  if (isModalEnabled) {\n    let message = i18next.t('warning.deletePage.deleteMessage');\n    const title = i18next.t('warning.deletePage.deleteTitle');\n    const confirmBtnText = i18next.t('action.ok');\n\n    let warning = {\n      message,\n      title,\n      confirmBtnText,\n      onConfirm: () =>\n        core.removePages(pageNumbers).then(() => {\n          dispatch(actions.setSelectedPageThumbnails([]));\n        }),\n    };\n\n    if (core.getDocumentViewer().getPageCount() === pageNumbers.length) {\n      message = i18next.t('warning.deletePage.deleteLastPageMessage');\n\n      warning = {\n        message,\n        title,\n        confirmBtnText,\n        onConfirm: () => Promise.resolve(),\n      };\n    }\n\n    dispatch(actions.showWarningMessage(warning));\n  } else {\n    core.removePages(pageNumbers).then(() => {\n      dispatch(actions.setSelectedPageThumbnails([]));\n    });\n  }\n};\n\nconst movePagesToBottom = pageNumbers => {\n  core.movePages(pageNumbers, core.getTotalPages() + 1);\n};\n\nconst movePagesToTop = pageNumbers => {\n  core.movePages(pageNumbers, 0);\n};\n\nconst noPagesSelectedWarning = (pageNumbers, dispatch) => {\n  if (pageNumbers.length === 0) {\n    const title = i18next.t('warning.selectPage.selectTitle');\n    const message = i18next.t('warning.selectPage.selectMessage');\n    const confirmBtnText = i18next.t('action.ok');\n\n    const warning = {\n      message,\n      title,\n      confirmBtnText,\n      onConfirm: () => Promise.resolve(),\n      keepOpen: ['leftPanel'],\n    };\n\n    dispatch(actions.showWarningMessage(warning));\n    return true;\n  }\n  return false;\n};\n\nconst redactPages = (pageNumbers, redactionStyles) => {\n  core.applyRedactions(createPageRedactions(pageNumbers, redactionStyles));\n};\n\nconst createPageRedactions = (pageNumbers, redactionStyles) => {\n  const annots = [];\n  for (const page of pageNumbers) {\n    const pageInfo = core.getPageInfo(page);\n    if (pageInfo) {\n      const redaction = new Annotations.RedactionAnnotation({\n        PageNumber: page,\n        Rect: new Annotations.Rect(0, 0, pageInfo.width, pageInfo.height),\n        ...redactionStyles\n      });\n      redaction.type = redactionTypeMap['FULL_PAGE'];\n      redaction.setCustomData('trn-redaction-type', redactionTypeMap['FULL_PAGE']);\n      redaction.Author = core.getCurrentUser();\n      annots.push(redaction);\n    }\n  }\n  core.getAnnotationManager().addAnnotations(annots);\n  core.getAnnotationManager().drawAnnotationsFromList(annots);\n  return annots;\n};\n\nconst replacePages = async (sourceDoc, pagesToRemove, pagesToReplaceIntoDocument) => {\n  const documentLoadedInViewer = core.getDocument();\n  const pageCountOfLoadedDocument = documentLoadedInViewer.getPageCount();\n  const pagesToRemoveFromOriginal = pagesToRemove.sort((a, b) => a - b);\n\n  // If document to replace into has only one page, or we are replacing all pages\n  // then we can insert pages at the end, and then remove the pages to avoid an error of removing all pages\n  if (pageCountOfLoadedDocument === 1 || pagesToRemoveFromOriginal.length === pageCountOfLoadedDocument) {\n    await documentLoadedInViewer.insertPages(sourceDoc, pagesToReplaceIntoDocument);\n    await documentLoadedInViewer.removePages(pagesToRemoveFromOriginal);\n  } else {\n    // If document to replace into has > 1 page we need insert the new pages at the spot of the first removed page\n    // pagesToRemoveFromOriginal is sorted in ascending order. Interleaving pages would be complex.\n    await documentLoadedInViewer.removePages(pagesToRemoveFromOriginal);\n    await documentLoadedInViewer.insertPages(sourceDoc, pagesToReplaceIntoDocument, pagesToRemoveFromOriginal[0]);\n  }\n};\n\nexport {\n  rotateClockwise,\n  rotateCounterClockwise,\n  insertAbove,\n  insertBelow,\n  replace,\n  extractPages,\n  deletePages,\n  movePagesToBottom,\n  movePagesToTop,\n  noPagesSelectedWarning,\n  redactPages,\n  createPageRedactions,\n  replacePages,\n};","import React from 'react';\nimport ToggleElementButton from '../ToggleElementButton';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\n\nfunction PageManipulationOverlayButtonContainer(props) {\n  const { className, pageIndex } = props;\n\n  const dispatch = useDispatch();\n  const selectedPageIndexes = useSelector(state => selectors.getSelectedThumbnailPageIndexes(state));\n\n  const onClickPageManipulationOverlayButton = () => {\n    if (selectedPageIndexes.indexOf(pageIndex) === -1) {\n      dispatch(actions.setSelectedPageThumbnails([pageIndex]));\n    }\n  }\n\n  return (\n    <div\n      className={className}\n      onClick={onClickPageManipulationOverlayButton}>\n      <ToggleElementButton\n        dataElement=\"pageManipulationOverlayButton\"\n        element=\"pageManipulationOverlay\"\n        img=\"icon-tool-more\"\n      />\n    </div>\n  );\n};\n\nexport default PageManipulationOverlayButtonContainer;","import PageManipulationOverlayButton from './PageManipulationOverlayButtonContainer';\n\nexport default PageManipulationOverlayButton;","import React from 'react';\nimport { useDispatch, shallowEqual, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { deletePages, rotateClockwise, rotateCounterClockwise } from \"helpers/pageManipulationFunctions\";\nimport Button from 'components/Button';\nimport selectors from 'selectors';\nimport './ThumbnailControls.scss';\nimport PageManipulationOverlayButton from 'components/PageManipulationOverlayButton';\nimport { workerTypes } from \"constants/types\";\nimport core from \"src/core\";\n\nconst propTypes = {\n  index: PropTypes.number.isRequired,\n};\n\nconst dataElementName = 'thumbnailControl';\n\nconst ThumbnailControls = ({ index }) => {\n  const [isElementDisabled] = useSelector(state => [selectors.isElementDisabled(state, dataElementName)]);\n  const [isMoreOptionDisabled] = useSelector(state => [selectors.isElementDisabled(state, 'pageManipulationOverlayButton')]);\n  const [isPageDeletionConfirmationModalEnabled, selectedIndexes] = useSelector(state => [\n    selectors.pageDeletionConfirmationModalEnabled(state),\n    selectors.getSelectedThumbnailPageIndexes(state),\n  ]);\n  const dispatch = useDispatch();\n\n  const [\n    currentPage,\n    pageThumbnailControlMenuItems,\n  ] = useSelector(state => [\n    selectors.getCurrentPage(state),\n    selectors.getThumbnailControlMenuItems(state),\n  ], shallowEqual);\n\n  const pageNumbers = selectedIndexes.length > 0 ? selectedIndexes.map(i => i + 1) : [index + 1];\n\n  const document = core.getDocument();\n  const documentType = document?.type;\n  const isXod = documentType === workerTypes.XOD;\n  const isOffice = documentType === workerTypes.OFFICE || documentType === workerTypes.LEGACY_OFFICE;\n\n  const BUTTONS_MAP = {\n    'thumbRotateClockwise': <Button\n      className=\"rotate-button\"\n      img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n      onClick={() => rotateClockwise(pageNumbers)}\n      title=\"option.thumbnailPanel.rotateClockwise\"\n      dataElement=\"thumbRotateClockwise\"\n    />,\n    'thumbRotateCounterClockwise': <Button\n      img=\"icon-header-page-manipulation-page-rotation-counterclockwise-line\"\n      onClick={() => rotateCounterClockwise(pageNumbers)}\n      title=\"option.thumbnailPanel.rotateCounterClockwise\"\n      dataElement=\"thumbRotateCounterClockwise\"\n    />,\n    'thumbDelete': <Button\n      className=\"delete-button\"\n      img=\"icon-delete-line\"\n      onClick={() => deletePages(pageNumbers, dispatch, isPageDeletionConfirmationModalEnabled)}\n      title=\"option.thumbnailPanel.delete\"\n      dataElement=\"thumbDelete\"\n    />,\n  };\n  let isCustomized = false;\n  let occuredButtons = [];\n  const buttons = pageThumbnailControlMenuItems.map((item, index) => {\n    const { dataElement } = item;\n    const key = dataElement;\n    let component =  BUTTONS_MAP[dataElement];\n    if (occuredButtons.indexOf(dataElement) > -1) {\n      return null;\n    }\n    occuredButtons.push(dataElement);\n\n    /* Example button object:\n    {\n      title: 'Alert me',\n      img: '/path-to-image',\n      onClick: (selectedPageNumbers) => alert(``),\n      dataElement: 'alertMeDataElement',\n    } */\n    if (!component) {\n      isCustomized = true;\n      const { img, onClick, title } = item\n      component = <Button\n        className={`${dataElement}-button`}\n        img={img}\n        onClick={() => onClick(currentPage)}\n        title={title}\n        dataElement={dataElement}\n      />\n    }\n\n    return component\n      ? React.cloneElement(component, {\n        key,\n      })\n      : null;\n  });\n\n  if (isElementDisabled) {\n    return null;\n  } else if (isXod || isOffice || document?.isWebViewerServerDocument()) {\n    return (\n      <div className=\"thumbnailControls-overlay\" data-element={dataElementName}\n        style={{ display: 'flex' }}\n      >\n        <Button\n          img=\"icon-header-page-manipulation-page-rotation-counterclockwise-line\"\n          onClick={() => rotateCounterClockwise(pageNumbers)}\n          title=\"option.thumbnailPanel.rotateCounterClockwise\"\n          dataElement=\"thumbRotateCounterClockwise\"\n        />\n        <Button\n          img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n          onClick={() => rotateClockwise(pageNumbers)}\n          title=\"option.thumbnailPanel.rotateClockwise\"\n          dataElement=\"thumbRotateClockwise\"\n        />\n      </div>\n    );\n  } else {\n    return (\n      <div className={classNames({\n        'thumbnailControls-overlay': true,\n        'custom-buttons': isCustomized,\n        })}\n        data-element={dataElementName}>\n        {buttons}\n        {\n          (isMoreOptionDisabled) ? null : <PageManipulationOverlayButton\n            className={'more-options'}\n            pageIndex={index}\n          />\n        }\n\n      </div>\n    );\n  }\n};\n\n\nThumbnailControls.propTypes = propTypes;\n\nexport default ThumbnailControls;\n","import ThumbnailControls from './ThumbnailControls';\n\nexport default ThumbnailControls;\n","export default {\n  THUMBNAIL: 'thumbnail',\n  CHECKBOX: 'checkbox',\n};\n","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport useDidUpdate from 'hooks/useDidUpdate';\nimport core from 'core';\nimport ThumbnailControls from 'components/ThumbnailControls';\nimport thumbnailSelectionModes from 'constants/thumbnailSelectionModes';\n\nimport './Thumbnail.scss';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport { workerTypes } from 'constants/types';\n\n// adds a delay in ms so thumbs that are only on the screen briefly are not loaded.\nconst THUMBNAIL_LOAD_DELAY = 50;\n\nconst Thumbnail = ({\n  index,\n  isSelected,\n  updateAnnotations,\n  shiftKeyThumbnailPivotIndex,\n  onFinishLoading,\n  onLoad,\n  onRemove = () => {},\n  onDragStart,\n  onDragOver,\n  isDraggable,\n  shouldShowControls,\n  thumbnailSize,\n  currentPage,\n  pageLabels = [],\n  selectedPageIndexes,\n  isThumbnailMultiselectEnabled,\n  isReaderMode,\n  dispatch,\n  actions,\n  isMobile,\n  canLoad,\n  onCancel,\n  isThumbnailSelectingPages,\n  thumbnailSelectionMode,\n}) => {\n\n  const thumbSize = thumbnailSize ? Number(thumbnailSize) : 150;\n\n  const [dimensions, setDimensions] = useState({ width: thumbSize, height: thumbSize });\n  // To ensure checkmark loads after thumbnail\n  const [loaded, setLoaded] = useState(false);\n\n  let loadTimeout = null;\n\n  const loadThumbnailAsync = () => {\n    loadTimeout = setTimeout(() => {\n      const thumbnailContainer = document.getElementById(`pageThumb${index}`);\n\n      const pageNum = index + 1;\n      const viewerRotation = core.getRotation(pageNum);\n\n      const doc = core.getDocument();\n      // Possible race condition can happen where we try to render a thumbnail for a page that has\n      // been deleted. Prevent that by checking if pageInfo exists\n\n      if (doc && doc.getPageInfo(pageNum)) {\n        const id = doc.loadCanvas({\n          pageNumber: pageNum,\n          width: thumbSize,\n          height: thumbSize,\n          drawComplete: async thumb => {\n            const thumbnailContainer = document.getElementById(`pageThumb${index}`);\n            if (thumbnailContainer) {\n              const childElement = thumbnailContainer.querySelector('.page-image');\n              if (childElement) {\n                thumbnailContainer.removeChild(childElement);\n              }\n\n              thumb.className = 'page-image';\n\n              const ratio = Math.min(thumbSize / thumb.width, thumbSize / thumb.height);\n              thumb.style.width = `${thumb.width * ratio}px`;\n              thumb.style.height = `${thumb.height * ratio}px`;\n              setDimensions({ width: Number(thumb.width), height: Number(thumb.height) });\n\n              if (Math.abs(viewerRotation)) {\n                const cssTransform = `rotate(${viewerRotation * 90}deg) translate(-50%,-50%)`;\n                const cssTransformOrigin = 'top left';\n                thumb.style['transform'] = cssTransform;\n                thumb.style['transform-origin'] = cssTransformOrigin;\n                thumb.style['ms-transform'] = cssTransform;\n                thumb.style['ms-transform-origin'] = cssTransformOrigin;\n                thumb.style['-moz-transform'] = cssTransform;\n                thumb.style['-moz-transform-origin'] = cssTransformOrigin;\n                thumb.style['-webkit-transform-origin'] = cssTransformOrigin;\n                thumb.style['-webkit-transform'] = cssTransform;\n                thumb.style['-o-transform'] = cssTransform;\n                thumb.style['-o-transform-origin'] = cssTransformOrigin;\n              }\n\n              thumbnailContainer.appendChild(thumb);\n            }\n\n            if (updateAnnotations) {\n              updateAnnotations(index);\n            }\n\n            onFinishLoading(index);\n            setLoaded(true);\n          },\n          source: 'thumbnail',\n        });\n        onLoad(index, thumbnailContainer, id);\n      }\n    }, THUMBNAIL_LOAD_DELAY);\n  };\n\n  useEffect(() => {\n    const onPagesUpdated = changes => {\n      const { contentChanged, moved, added, removed } = changes;\n\n      const currentPage = index + 1;\n\n      const isPageAdded = added.includes(currentPage);\n      const didPageChange = contentChanged.some(changedPage => currentPage === changedPage);\n      const didPageMove = Object.keys(moved).some(movedPage => currentPage === parseInt(movedPage));\n      const isPageRemoved = removed.includes(currentPage);\n      const newPageCount = core.getTotalPages();\n\n      if (removed.length > 0 && index + 1 > newPageCount) {\n        return;\n      }\n\n      if (isPageAdded || didPageChange || didPageMove || isPageRemoved) {\n        loadThumbnailAsync();\n      }\n    };\n\n    const onRotationUpdated = () => {\n      setLoaded(false);\n      loadThumbnailAsync();\n    };\n\n    core.addEventListener('pagesUpdated', onPagesUpdated);\n    core.addEventListener('rotationUpdated', onRotationUpdated);\n    if (canLoad) {\n      loadThumbnailAsync();\n    }\n    return () => {\n      core.removeEventListener('pagesUpdated', onPagesUpdated);\n      core.removeEventListener('rotationUpdated', onRotationUpdated);\n      clearTimeout(loadTimeout);\n      onRemove(index);\n    };\n  }, []);\n\n  useDidUpdate(() => {\n    if (canLoad) {\n      loadThumbnailAsync();\n    } else {\n      onCancel(index);\n    }\n  }, [canLoad]);\n\n  const handleClick = e => {\n    const checkboxToggled = e.target.type && e.target.type === 'checkbox';\n    if (isThumbnailMultiselectEnabled && !isReaderMode) {\n      const multiSelectionKeyPressed = e.ctrlKey || e.metaKey;\n      const shiftKeyPressed = e.shiftKey;\n      let updatedSelectedPages = [...selectedPageIndexes];\n\n      if (shiftKeyPressed) {\n          dispatch(actions.setThumbnailSelectingPages(true));\n        // Include current page as part of selection if we just started shift-selecting\n        let shiftKeyPivot = shiftKeyThumbnailPivotIndex;\n        if (shiftKeyPivot === null) {\n          shiftKeyPivot = currentPage - 1;\n          dispatch(actions.setShiftKeyThumbnailsPivotIndex(shiftKeyPivot));\n        }\n        // get the range of the selected index and update selected page\n        const currSelectMinIndex = Math.min(shiftKeyPivot, index);\n        const currSelectMaxIndex = Math.max(shiftKeyPivot, index);\n        updatedSelectedPages = Array.from(\n          { length: currSelectMaxIndex - currSelectMinIndex + 1 },\n          (_, i) => i + currSelectMinIndex,\n        );\n      } else if (multiSelectionKeyPressed || isThumbnailSelectingPages) {\n        dispatch(actions.setThumbnailSelectingPages(true));\n        // Only select a page if multiSelectionKeyPressed or if checkbox is checked unless in 'thumbnail' mode\n        if (multiSelectionKeyPressed || checkboxToggled || thumbnailSelectionMode === thumbnailSelectionModes['THUMBNAIL']) {\n          // Include current page as part of selection if we just started multi-selecting\n          if (selectedPageIndexes.length === 0 && !isThumbnailSelectingPages) {\n            updatedSelectedPages.push(currentPage - 1);\n          } else if (selectedPageIndexes.includes(index)) {\n            updatedSelectedPages = selectedPageIndexes.filter(pageIndex => index !== pageIndex);\n          } else {\n            updatedSelectedPages.push(index);\n          }\n        }\n      } else {\n        updatedSelectedPages = [index];\n      }\n      // set shiftKeyPivot when press ctr key or single key\n      !isThumbnailSelectingPages &&\n        !shiftKeyPressed &&\n        dispatch(actions.setShiftKeyThumbnailsPivotIndex(updatedSelectedPages[updatedSelectedPages.length - 1]));\n      dispatch(actions.setSelectedPageThumbnails(updatedSelectedPages));\n    } else if (isMobile()) {\n      dispatch(actions.closeElement('leftPanel'));\n    }\n\n    // due to the race condition, we need a settimeout here\n    // otherwise, sometimes the current page will not be visible in left panel\n    setTimeout(() => {\n      // If user clicks on checkbox, it should not automatically jump to that page,\n      // only if the user clicks on thumbnail then go to page and view it, unless in 'thumbnail' mode\n      if (!checkboxToggled || thumbnailSelectionMode === thumbnailSelectionModes['THUMBNAIL']) {\n        core.setCurrentPage(index + 1);\n      }\n    }, 0);\n  };\n\n  const isActive = currentPage === index + 1;\n  const pageLabel = pageLabels[index];\n  let checkboxRotateClass = 'default';\n  const rotation = core.getRotation(index + 1);\n  if ((!rotation || rotation === 2) && dimensions.width > dimensions.height) {\n    checkboxRotateClass = 'rotated';\n  } else if ((rotation === 1 || rotation === 3) && dimensions.width < dimensions.height) {\n    checkboxRotateClass = 'rotated';\n  }\n\n  const ratio = Math.min(thumbSize / dimensions.width, thumbSize / dimensions.height);\n\n  const rotateDimDiv = core.getDocument()?.type === workerTypes.XOD;\n\n  return (\n    <div\n      className={classNames({\n        Thumbnail: true,\n        active: isActive,\n        selected: isSelected && isThumbnailSelectingPages,\n      })}\n      onDragOver={e => onDragOver(e, index)}\n      id=\"Thumbnail-container\"\n    >\n      <div\n        className=\"container\"\n        style={{\n          width: thumbSize,\n          height: thumbSize,\n        }}\n        onDragStart={e => onDragStart(e, index)}\n        draggable={isDraggable}\n        onClick={handleClick}\n      >\n        <div id={`pageThumb${index}`} className=\"thumbnail\" />\n        {isThumbnailSelectingPages && loaded && (\n          <Choice className={`checkbox ${checkboxRotateClass}`} checked={selectedPageIndexes.includes(index)} />\n        )}\n      </div>\n      <div className=\"page-label\">{pageLabel}</div>\n      {!isThumbnailSelectingPages && isActive && shouldShowControls && <ThumbnailControls index={index} />}\n    </div>\n  );\n};\n\nexport default Thumbnail;\n","import React from 'react';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\n\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { isMobile } from 'helpers/device';\n\nimport Thumbnail from './Thumbnail';\n\nconst ThumbnailRedux = props => {\n  const [currentPage, pageLabels, selectedPageIndexes, isThumbnailMultiselectEnabled, isReaderMode, shiftKeyThumbnailPivotIndex, isThumbnailSelectingPages, thumbnailSelectionMode, selectionModes] = useSelector(\n    state => [\n      selectors.getCurrentPage(state),\n      selectors.getPageLabels(state),\n      selectors.getSelectedThumbnailPageIndexes(state),\n      selectors.isThumbnailMultiselectEnabled(state),\n      selectors.isReaderMode(state),\n      selectors.getShiftKeyThumbnailPivotIndex(state),\n      selectors.isThumbnailSelectingPages(state),\n      selectors.getThumbnailSelectionMode(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  return <Thumbnail {...props} {...{ currentPage, pageLabels, selectedPageIndexes, isThumbnailMultiselectEnabled, isReaderMode, dispatch, actions, isMobile, shiftKeyThumbnailPivotIndex, isThumbnailSelectingPages, thumbnailSelectionMode, selectionModes }}/>;\n};\n\nexport default ThumbnailRedux;\n","import Thumbnail from './ThumbnailRedux';\n\nexport default Thumbnail;","import core from 'core';\n\nexport default (customInput, pageLabels, totalPages = core.getTotalPages(), onError = () => {}) => {\n  // By default we use total pages of loaded doc. But we could also use this for a doc\n  // that is not loaded (like in page replacement) so we want the option to pass it as a param\n\n  const pagesToPrint = [];\n\n  // no input, assume every page\n  if (!customInput) {\n    for (let i = 1; i <= totalPages; i++) {\n      pagesToPrint.push(i);\n    }\n    return pagesToPrint;\n  }\n\n  const pageGroups = customInput.split(',');\n  pageGroups.forEach(pageGroup => {\n    const range = pageGroup.split('-');\n    const isSinglePage = range.length === 1;\n    const isRangeOfPages = range.length === 2;\n\n    if (isSinglePage) {\n      const page = getPageNumber(range[0], pageLabels, onError);\n      pagesToPrint.push(page);\n    } else if (isRangeOfPages) {\n      addRangeOfPagesTo(pagesToPrint, range, pageLabels, onError);\n    }\n  });\n\n  return pagesToPrint\n    .filter((pageNumber, index, pagesToPrint) => {\n      const isUnique = pagesToPrint.indexOf(pageNumber) === index;\n      const isValidPageNumber = pageNumber > 0 && pageNumber <= totalPages;\n      return isUnique && isValidPageNumber;\n    })\n    .sort((a, b) => a - b);\n};\n\nconst addRangeOfPagesTo = (pagesToPrint, range, pageLabels, onError) => {\n  const start = getPageNumber(range[0], pageLabels, onError);\n  let end;\n\n  if (range[1] === '') {\n    // range like 4- means page 4 to the end of the document\n    end = core.getTotalPages();\n  } else {\n    end = getPageNumber(range[1], pageLabels, onError);\n  }\n\n  for (let i = start; i <= end; i++) {\n    pagesToPrint.push(i);\n  }\n};\n\nconst getPageNumber = (character, pageLabels, onError) => {\n  const pageIndex = pageLabels.indexOf(character);\n  let pageNumber;\n\n  if (pageIndex === -1) {\n    onError && onError(character);\n    console.warn(`${character} is not a valid page label`);\n  } else {\n    pageNumber = pageIndex + 1;\n  }\n\n  return pageNumber;\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nimport Button from 'components/Button';\nimport './DocumentControls.scss';\nimport getPageArrayFromString from 'helpers/getPageArrayFromString';\n\nimport selectors from 'selectors';\nimport actions from 'actions';\n\nfunction getPageString(selectedPageArray, pageLabels) {\n  let pagesToPrint = '';\n  const sortedPages = selectedPageArray.sort((a, b) => a - b);\n  let prevIndex = null;\n\n  for (let i = 0; sortedPages.length > i; i++) {\n    if (sortedPages[i + 1] === sortedPages[i] + 1) {\n      prevIndex = prevIndex !== null ? prevIndex : sortedPages[i];\n    } else if (prevIndex !== null) {\n      pagesToPrint = `${pagesToPrint}${pageLabels[prevIndex]}-${pageLabels[sortedPages[i]]}, `;\n      prevIndex = null;\n    } else {\n      pagesToPrint = `${pagesToPrint}${pageLabels[sortedPages[i]]}, `;\n    }\n  }\n\n  return pagesToPrint.slice(0, -2);\n}\n\nconst DocumentControls = props => {\n  const { shouldShowControls } = props;\n\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n\n  const [selectedPageIndexes, isDisabled, pageLabels, isThumbnailSelectingPages] = useSelector(state => [\n    selectors.getSelectedThumbnailPageIndexes(state),\n    selectors.isElementDisabled(state, 'documentControl'),\n    selectors.getPageLabels(state),\n    selectors.isThumbnailSelectingPages(state),\n  ]);\n\n  const initialPagesString = getPageString(selectedPageIndexes, pageLabels);\n\n  const [pageString, setPageString] = useState(initialPagesString);\n  const [previousPageString, setPreviousPageString] = useState(initialPagesString);\n\n  useEffect(() => {\n    setPageString(getPageString(selectedPageIndexes, pageLabels));\n  }, [setPageString, selectedPageIndexes, shouldShowControls, pageLabels]);\n\n  const onBlur = e => {\n    const selectedPagesString = e.target.value.replace(/ /g, '');\n    const pages = !selectedPagesString ? [] : getPageArrayFromString(selectedPagesString, pageLabels);\n    const pageIndexes = pages.map(page => page - 1);\n\n    if (pages.length || !selectedPagesString) {\n      dispatch(actions.setSelectedPageThumbnails(pageIndexes));\n\n      const updatedString = getPageString(selectedPageIndexes, pageLabels);\n\n      setPageString(updatedString);\n      setPreviousPageString(updatedString);\n    } else {\n      setPageString(previousPageString);\n    }\n\n    if (selectedPageIndexes.length > 0 && !isThumbnailSelectingPages) {\n      // set a short timeout due to race condition caused by onBlur and \n      // changing the documentControlsButton based on isThumbnailSelectingPages\n      setTimeout(() => {\n        enableThumbnailSelectingPages();\n      }, 100);\n    }\n  };\n\n  const pageStringUpdate = e => {\n    setPageString(e.target.value);\n  };\n\n  const disableThumbnailSelectingPages = () => {\n    dispatch(actions.setSelectedPageThumbnails([]));\n    dispatch(actions.setThumbnailSelectingPages(false));\n  };\n\n  const enableThumbnailSelectingPages = () => {\n    dispatch(actions.setThumbnailSelectingPages(true));\n  };\n\n  return isDisabled ? null : (\n    <div className={'documentControlsContainer'} data-element={'documentControl'}>\n      {shouldShowControls ? (\n        <div className={'documentControls'}>\n          <div className={'divider'}></div>\n          <div className={'documentControlsInput'}>\n            <input\n              onBlur={onBlur}\n              onChange={pageStringUpdate}\n              value={pageString}\n              placeholder={t('option.documentControls.placeholder')}\n              aria-label={t('option.documentControls.placeholder')}\n              className=\"pagesInput\"\n              type=\"text\"\n            />\n            <div className={'documentControlsButton'}>\n              {!isThumbnailSelectingPages ? (\n                <Button\n                  img={'icon-tool-select-pages'}\n                  title={'option.documentControls.selectTooltip'}\n                  onClick={enableThumbnailSelectingPages}\n                  dataElement={'thumbMultiSelect'}\n                />\n              ) : (\n                <Button\n                  img={'icon-close'}\n                  title={'option.documentControls.closeTooltip'}\n                  onClick={disableThumbnailSelectingPages}\n                  dataElement={'thumbCloseMultiSelect'}\n                />\n              )}\n            </div>\n          </div>\n        </div>\n      ) : null}\n    </div>\n  );\n};\n\nDocumentControls.propTypes = {\n  isDisabled: PropTypes.bool,\n  pageLabels: PropTypes.arrayOf(PropTypes.string),\n  toggleDocumentControl: PropTypes.func,\n  shouldShowControls: PropTypes.bool,\n};\n\nexport default DocumentControls;\n","import DocumentControls from './DocumentControls';\n\nexport default DocumentControls;","import core from 'core';\nimport actions from 'actions';\nimport extractPagesWithAnnotations from './extractPagesWithAnnotations';\nimport fireEvent from './fireEvent';\nimport Events from 'constants/events';\n\nexport const extractPagesToMerge = pageNumbers => {\n  // extract pages and put the data on the iFrame window element for another instance of WebViewer to access\n  window.extractedDataPromise = extractPagesWithAnnotations(pageNumbers);\n  window.pagesExtracted = pageNumbers;\n};\n\nexport const mergeDocument = (srcToMerge, mergeToPage, shouldFireEvent = true) => dispatch => {\n  dispatch(actions.openElement('loadingModal'));\n\n  return new Promise((resolve, reject) => {\n    core.mergeDocument(srcToMerge, mergeToPage).then(mergeResults => {\n      dispatch(actions.closeElement('loadingModal'));\n      core.setCurrentPage(mergeToPage);\n\n      if (shouldFireEvent) {\n        fireEvent(Events.DOCUMENT_MERGED, mergeResults);\n      }\n\n      resolve(mergeResults);\n    }).catch(err => {\n      reject(err);\n      dispatch(actions.closeElement('loadingModal'));\n    });\n  });\n};\n\nexport const mergeExternalWebViewerDocument = (viewerID, mergeToPage) => dispatch => {\n  return new Promise((resolve, reject) => {\n    const otherWebViewerIframe = window.parent.document.querySelector(`#${viewerID}`);\n    if (!otherWebViewerIframe) {\n      console.warn('Could not find other instance of WebViewer');\n      reject();\n    }\n\n    const extractedDataPromise = otherWebViewerIframe.contentWindow.extractedDataPromise;\n    if (!extractedDataPromise) {\n      console.warn('Could not retrieve data from other instance of WebViewer');\n      reject();\n    }\n\n    dispatch(actions.openElement('loadingModal'));\n    extractedDataPromise.then(docToMerge => {\n      dispatch(mergeDocument(docToMerge, mergeToPage, false)).then(({ filename, pages }) => {\n        fireEvent(Events.DOCUMENT_MERGED, { filename, pages: otherWebViewerIframe.contentWindow.pagesExtracted });\n        dispatch(actions.closeElement('loadingModal'));\n        resolve({ filename, pages });\n      });\n    }).catch(err => {\n      dispatch(actions.closeElement('loadingModal'));\n      reject(err);\n    });\n  });\n};","import { debounce } from 'lodash';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { List } from 'react-virtualized';\nimport Measure from 'react-measure';\nimport classNames from 'classnames';\nimport { isIE11 } from \"helpers/device\";\n\nimport Thumbnail from 'components/Thumbnail';\nimport DocumentControls from 'components/DocumentControls';\nimport Button from 'components/Button';\n\nimport core from 'core';\nimport { extractPagesToMerge, mergeDocument, mergeExternalWebViewerDocument } from 'helpers/pageManipulation';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport Events from 'constants/events';\nimport fireEvent from 'helpers/fireEvent';\n\nimport './ThumbnailsPanel.scss';\n\nconst dataTransferWebViewerFrameKey = 'dataTransferWebViewerFrame';\n\nconst ZOOM_RANGE_MIN = '100';\nconst ZOOM_RANGE_MAX = '1000';\nconst ZOOM_RANGE_STEP = '50';\n\nconst hoverAreaHeight = 25;\n\nconst ThumbnailsPanel = () => {\n  const [\n    isOpen,\n    isDisabled,\n    totalPages,\n    currentPage,\n    selectedPageIndexes,\n    isThumbnailMergingEnabled,\n    isThumbnailReorderingEnabled,\n    isMultipleViewerMerging,\n    isThumbnailControlDisabled,\n    isThumbnailSliderDisabled,\n    isReaderMode,\n  ] = useSelector(\n    state => [\n      selectors.isElementOpen(state, 'leftPanel'),\n      selectors.isElementDisabled(state, 'thumbnailsPanel'),\n      selectors.getTotalPages(state),\n      selectors.getCurrentPage(state),\n      selectors.getSelectedThumbnailPageIndexes(state),\n      selectors.getIsThumbnailMergingEnabled(state),\n      selectors.getIsThumbnailReorderingEnabled(state),\n      selectors.getIsMultipleViewerMerging(state),\n      selectors.isElementDisabled(state, 'thumbnailControl'),\n      selectors.isElementDisabled(state, 'thumbnailsSizeSlider'),\n      selectors.isReaderMode(state),\n    ],\n    shallowEqual,\n  );\n\n  const listRef = useRef();\n  const pendingThumbs = useRef([]);\n  const thumbs = useRef([]);\n  const afterMovePageNumber = useRef(null);\n\n  const [canLoad, setCanLoad] = useState(true);\n  const [height, setHeight] = useState(0);\n  const [width, setWidth] = useState(0);\n  const [draggingOverPageIndex, setDraggingOverPageIndex] = useState(null);\n  const [isDraggingToPreviousPage, setDraggingToPreviousPage] = useState(false);\n  const [numberOfColumns, setNumberOfColumns] = useState(1);\n  const [isDragging, setIsDragging] = useState(false);\n\n  const [thumbnailSize, setThumbnailSize] = useState(150);\n  const [lastTimeTriggered, setLastTimeTriggered] = useState(0);\n  const [globalIndex, setGlobalIndex] = useState(0);\n\n  const dispatch = useDispatch();\n\n  // If memory becomes an issue, change this to use pageNumbers.\n  // Instead of a debounced drawAnnotations function, perhaps use\n  // a function that first checks for the pageNumber in this map\n  // before calling drawAnnotations on a page.\n  let activeThumbRenders = {};\n\n  const getThumbnailSize = (pageWidth, pageHeight) => {\n    let width;\n    let height;\n    let ratio;\n\n    if (pageWidth > pageHeight) {\n      ratio = pageWidth / thumbnailSize;\n      width = thumbnailSize;\n      height = Math.round(pageHeight / ratio);\n    } else {\n      ratio = pageHeight / thumbnailSize;\n      width = Math.round(pageWidth / ratio); // Chrome has trouble displaying borders of non integer width canvases.\n      height = thumbnailSize;\n    }\n\n    return {\n      width,\n      height,\n    };\n  };\n\n  const updateAnnotations = pageIndex => {\n    const thumbContainer = thumbs.current && thumbs.current[pageIndex] && thumbs.current[pageIndex].element;\n    if (!thumbContainer) {\n      return;\n    }\n\n    const pageNumber = pageIndex + 1;\n    const pageWidth = core.getPageWidth(pageNumber);\n    const pageHeight = core.getPageHeight(pageNumber);\n\n    const { width, height } = getThumbnailSize(pageWidth, pageHeight);\n\n    const annotCanvas = thumbContainer.querySelector('.annotation-image') || document.createElement('canvas');\n    annotCanvas.className = 'annotation-image';\n    annotCanvas.style.maxWidth = `${thumbnailSize}px`;\n    annotCanvas.style.maxHeight = `${thumbnailSize}px`;\n    const ctx = annotCanvas.getContext('2d');\n\n    let zoom = 1;\n    let rotation = core.getCompleteRotation(pageNumber);\n    if (rotation < 0) {\n      rotation += 4;\n    }\n    const multiplier = window.Core.getCanvasMultiplier();\n\n    if (rotation % 2 === 0) {\n      annotCanvas.width = width;\n      annotCanvas.height = height;\n      zoom = annotCanvas.width / pageWidth;\n      zoom /= multiplier;\n    } else {\n      annotCanvas.width = height;\n      annotCanvas.height = width;\n\n      zoom = annotCanvas.height / pageWidth;\n      zoom /= multiplier;\n    }\n\n    thumbContainer.appendChild(annotCanvas);\n    core.setAnnotationCanvasTransform(ctx, zoom, rotation);\n\n    let options = {\n      pageNumber,\n      overrideCanvas: annotCanvas,\n    };\n\n    const thumb = thumbContainer.querySelector('.page-image');\n\n    if (thumb) {\n      options = {\n        ...options,\n        overridePageRotation: rotation,\n        overridePageCanvas: thumb,\n      };\n    } else {\n      return;\n    }\n\n    if (!activeThumbRenders[pageNumber]) {\n      activeThumbRenders[pageNumber] = debounce(core.drawAnnotations, 112);\n    }\n    const debouncedDraw = activeThumbRenders[pageNumber];\n    debouncedDraw(options);\n  };\n\n  useEffect(() => {\n    const onBeginRendering = () => {\n      setCanLoad(false);\n    };\n\n    const onFinishedRendering = needsMoreRendering => {\n      if (!needsMoreRendering) {\n        setCanLoad(true);\n      }\n    };\n\n    const onDocumentLoaded = () => {\n      activeThumbRenders = {};\n      dispatch(actions.setSelectedPageThumbnails([]));\n    };\n\n    const onPageComplete = () => {\n      if (afterMovePageNumber.current) {\n        core.setCurrentPage(afterMovePageNumber.current);\n        afterMovePageNumber.current = null;\n      }\n    };\n\n    core.addEventListener('beginRendering', onBeginRendering);\n    core.addEventListener('finishedRendering', onFinishedRendering);\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('pageComplete', onPageComplete);\n\n\n    // The document might have already been loaded before this component is mounted.\n    // If document is already loaded, call 'onDocumentLoaded()' manually to update the state properly.\n    if (core.getDocument()) {\n      onDocumentLoaded();\n    }\n\n    return () => {\n      core.removeEventListener('beginRendering', onBeginRendering);\n      core.removeEventListener('finishedRendering', onFinishedRendering);\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('pageComplete', onPageComplete);\n    };\n  }, []);\n\n  useEffect(() => {\n    const onPagesUpdated = changes => {\n      if (!changes) {\n        return;\n      }\n      let updatedPagesIndexes = Array.from(selectedPageIndexes);\n\n      if (changes.removed) {\n        updatedPagesIndexes = updatedPagesIndexes.filter(pageIndex => changes.removed.indexOf(pageIndex + 1) === -1);\n      }\n\n      if (changes.moved) {\n        updatedPagesIndexes = updatedPagesIndexes.map(pageIndex =>\n          changes.moved[pageIndex + 1] ? changes.moved[pageIndex + 1] - 1 : pageIndex,\n        );\n      }\n\n      dispatch(actions.setSelectedPageThumbnails(updatedPagesIndexes));\n    };\n\n    core.addEventListener('pagesUpdated', onPagesUpdated);\n\n    return () => core.removeEventListener('pagesUpdated', onPagesUpdated);\n  }, [selectedPageIndexes]);\n\n  useEffect(() => {\n    listRef.current?.scrollToRow(Math.floor((currentPage - 1) / numberOfColumns));\n    const onAnnotationChanged = annots => {\n      const indices = [];\n\n      annots.forEach(annot => {\n        const pageIndex = annot.PageNumber - 1;\n        if (!annot.Listable || indices.indexOf(pageIndex) > -1) {\n          return;\n        }\n        indices.push(pageIndex);\n\n        updateAnnotations(pageIndex);\n      });\n    };\n\n    const onPageNumberUpdated = pageNumber => {\n      const pageIndex = pageNumber - 1;\n      listRef.current?.scrollToRow(Math.floor(pageIndex / numberOfColumns));\n    };\n\n    core.addEventListener('pageNumberUpdated', onPageNumberUpdated);\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationHidden', onAnnotationChanged);\n\n    return () => {\n      core.removeEventListener('pageNumberUpdated', onPageNumberUpdated);\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationHidden', onAnnotationChanged);\n    };\n  }, [thumbnailSize, numberOfColumns]);\n\n  useEffect(() => {\n    dispatch(actions.setSelectedPageThumbnails([]));\n  }, [isReaderMode]);\n\n  // if disabled or is not open return\n  if (isDisabled || !isOpen) {\n    return null;\n  }\n  const onDragEnd = () => {\n    setIsDragging(false);\n    setDraggingOverPageIndex(null);\n  };\n\n  const scrollToRowHelper = (index, change, time) => {\n    const now = new Date().getTime();\n    if (index < totalPages - 1 && index > 0 && now - lastTimeTriggered >= time) {\n      listRef.current?.scrollToRow(Math.floor((index + change) / numberOfColumns));\n      setLastTimeTriggered(now);\n      return index + change;\n    }\n    return index;\n  };\n\n  const onDragOver = (e, index) => {\n    // 'preventDefault' to prevent opening pdf dropped in and 'stopPropagation' to keep parent from opening pdf\n    e.preventDefault();\n    e.stopPropagation();\n    if (!isThumbnailReorderingEnabled && !isThumbnailMergingEnabled) {\n      return;\n    }\n\n    const thumbnail = e.target.getBoundingClientRect();\n    if (numberOfColumns > 1) {\n      // row with more than 1 thumbnail so user are dragging to the left and right\n      setDraggingToPreviousPage(!(e.pageX > thumbnail.x + thumbnail.width / 2));\n    } else {\n      setDraggingToPreviousPage(!(e.pageY > thumbnail.y + thumbnail.height / 2));\n    }\n\n    setDraggingOverPageIndex(index);\n    const virtualizedThumbnailContainerElement = document.getElementById('virtualized-thumbnails-container');\n    const { y, bottom } = virtualizedThumbnailContainerElement.getBoundingClientRect();\n\n    if (e.pageY < y + hoverAreaHeight * 4) {\n      setGlobalIndex(scrollToRowHelper(index, -1, 400));\n    } else if (e.pageY > bottom - hoverAreaHeight * 4) {\n      setGlobalIndex(scrollToRowHelper(index, 1, 400));\n    }\n  };\n\n  const scrollDown = () => {\n    setGlobalIndex(scrollToRowHelper(globalIndex, 1, 200));\n  };\n  const scrollUp = () => {\n    setGlobalIndex(scrollToRowHelper(globalIndex, -1, 200));\n  };\n\n  const onDragStart = (e, index) => {\n    setGlobalIndex(index);\n    setIsDragging(true);\n    const draggingSelectedPage = selectedPageIndexes.some(i => i === index);\n    const pagesToMove = draggingSelectedPage ? selectedPageIndexes.map(index => index + 1) : [index + 1];\n    fireEvent(Events.THUMBNAIL_DRAGGED);\n    // need to set 'text' to empty for drag to work in FireFox and mobile\n    e.dataTransfer.setData('text', '');\n\n    if (pagesToMove.length > 1) {\n      // can't set to null so set to new instance of an image\n      e.dataTransfer.setDragImage(new Image(), 0, 0);\n    }\n\n    if (isThumbnailMergingEnabled && isMultipleViewerMerging) {\n      e.dataTransfer.dropEffect = 'move';\n      e.dataTransfer.effectAllowed = 'all';\n      e.dataTransfer.setData(dataTransferWebViewerFrameKey, window.frameElement.id);\n      extractPagesToMerge(pagesToMove);\n    }\n\n    if (!draggingSelectedPage) {\n      dispatch(actions.setSelectedPageThumbnails([index]));\n    }\n\n    core.setCurrentPage(index + 1);\n  };\n\n  const onDrop = e => {\n    e.preventDefault();\n    const { files } = e.dataTransfer;\n    const insertTo = isDraggingToPreviousPage ? draggingOverPageIndex + 1 : draggingOverPageIndex + 2;\n    let externalPageWebViewerFrameId;\n    if (!isIE11) {\n      // at this time of writing, IE11 does not really have support for getData\n      externalPageWebViewerFrameId = e.dataTransfer.getData(dataTransferWebViewerFrameKey);\n    }\n    const mergingDocument =\n      (externalPageWebViewerFrameId && window.frameElement.id !== externalPageWebViewerFrameId) || files.length;\n    const currentPageIndex = currentPage - 1;\n\n    if (isThumbnailMergingEnabled && mergingDocument) {\n      if (externalPageWebViewerFrameId && window.frameElement.id !== externalPageWebViewerFrameId) {\n        dispatch(mergeExternalWebViewerDocument(externalPageWebViewerFrameId, insertTo));\n      } else if (files.length) {\n        Array.from(files).forEach(file => {\n          dispatch(mergeDocument(file, insertTo));\n        });\n      }\n    } else if (isThumbnailReorderingEnabled && !mergingDocument) {\n      if (draggingOverPageIndex !== null) {\n        const targetPageNumber = isDraggingToPreviousPage ? draggingOverPageIndex + 1 : draggingOverPageIndex + 2;\n        const draggingSelectedPage = selectedPageIndexes.some(i => i === currentPageIndex);\n        const pageNumbersToMove = draggingSelectedPage ? selectedPageIndexes.map(i => i + 1) : [currentPage];\n        afterMovePageNumber.current = targetPageNumber - pageNumbersToMove.filter(p => p < targetPageNumber).length;\n        core.movePages(pageNumbersToMove, targetPageNumber);\n        const updatedPagesNumbers = [];\n        for (let offset = 0; offset < pageNumbersToMove.length; offset++) {\n          updatedPagesNumbers.push(afterMovePageNumber.current + offset);\n        }\n        fireEvent(Events.THUMBNAIL_DROPPED, { pageNumbersBeforeMove: pageNumbersToMove, pagesNumbersAfterMove: updatedPagesNumbers, numberOfPagesMoved: updatedPagesNumbers.length });\n      }\n    }\n    setDraggingOverPageIndex(null);\n    setIsDragging(false);\n  };\n\n  const onLoad = (pageIndex, element, id) => {\n    if (!thumbIsLoaded(pageIndex) && !thumbIsPending(pageIndex)) {\n      thumbs.current[pageIndex] = {\n        element,\n        loaded: false,\n      };\n\n      pendingThumbs.current.push({\n        pageIndex,\n        id,\n      });\n    }\n  };\n\n  const removeFromPendingThumbs = pageIndex => {\n    const index = getPendingThumbIndex(pageIndex);\n    if (index !== -1) {\n      pendingThumbs.current.splice(index, 1);\n    }\n  };\n\n  const thumbIsLoaded = pageIndex => thumbs.current[pageIndex]?.loaded;\n\n  const thumbIsPending = pageIndex => getPendingThumbIndex(pageIndex) !== -1;\n\n  const onCancel = pageIndex => {\n    const index = getPendingThumbIndex(pageIndex);\n    if (index !== -1) {\n      core.cancelLoadThumbnail(pendingThumbs.current[index].id);\n      pendingThumbs.current.splice(index, 1);\n    }\n  };\n\n  const getPendingThumbIndex = pageIndex =>\n    pendingThumbs.current.findIndex(thumbStatus => thumbStatus.pageIndex === pageIndex);\n\n  const onRemove = pageIndex => {\n    onCancel(pageIndex);\n    const canvases = thumbs.current[pageIndex]?.element?.querySelectorAll('canvas');\n    if (canvases?.length) {\n      canvases.forEach(c => {\n        c.height = 0;\n        c.width = 0;\n      });\n    }\n\n    if (activeThumbRenders[pageIndex]) {\n      activeThumbRenders[pageIndex].cancel();\n    }\n    thumbs.current[pageIndex] = null;\n  };\n\n  const renderThumbnails = ({ index, key, style }) => {\n    const className = classNames({\n      columnsOfThumbnails: numberOfColumns > 1,\n      row: true,\n    });\n    const allowPageOperationsUI = !isReaderMode;\n\n    return (\n      <div role=\"row\" aria-label=\"row\" className={className} key={key} style={style}>\n        {new Array(numberOfColumns).fill().map((_, columnIndex) => {\n          const thumbIndex = index * numberOfColumns + columnIndex;\n          const allowDragAndDrop = allowPageOperationsUI && (isThumbnailMergingEnabled || isThumbnailReorderingEnabled);\n          const showPlaceHolder = allowDragAndDrop && draggingOverPageIndex === thumbIndex;\n\n          return thumbIndex < totalPages ? (\n            <React.Fragment key={thumbIndex}>\n              {(numberOfColumns > 1 || thumbIndex === 0) && showPlaceHolder && isDraggingToPreviousPage && <div key={`placeholder1-${thumbIndex}`} className=\"thumbnailPlaceholder\" />}\n              <div key={thumbIndex} role=\"cell\" onDragEnd={onDragEnd} className=\"cellThumbContainer\">\n                <Thumbnail\n                  isDraggable={allowDragAndDrop}\n                  isSelected={selectedPageIndexes.includes(thumbIndex)}\n                  index={thumbIndex}\n                  canLoad={canLoad}\n                  onLoad={onLoad}\n                  onCancel={onCancel}\n                  onRemove={onRemove}\n                  onDragStart={onDragStart}\n                  onDragOver={onDragOver}\n                  onFinishLoading={removeFromPendingThumbs}\n                  updateAnnotations={updateAnnotations}\n                  shouldShowControls={allowPageOperationsUI}\n                  thumbnailSize={thumbnailSize}\n                />\n              </div>\n              {showPlaceHolder && !isDraggingToPreviousPage && <div key={`placeholder2-${thumbIndex}`} className=\"thumbnailPlaceholder\" />}\n            </React.Fragment>\n          ) : null;\n        })}\n      </div>\n    );\n  };\n\n  const onPanelResize = ({ bounds }) => {\n    setHeight(bounds.height);\n    setWidth(bounds.width);\n    setNumberOfColumns(Math.min(3, Math.max(1, Math.floor(bounds.width / thumbnailSize))));\n  };\n\n  const updateNumberOfColumns = () => {\n    setNumberOfColumns(Math.min(3, Math.max(1, Math.floor(width / thumbnailSize))));\n  };\n\n  const thumbnailHeight = isThumbnailControlDisabled ? Number(thumbnailSize) + 50 : Number(thumbnailSize) + 80;\n  const shouldShowControls = !isReaderMode;\n  const thumbnailAutoScrollAreaStyle = {\n    'height': `${hoverAreaHeight}px`,\n  };\n\n  return (\n    <React.Fragment>\n      {!isThumbnailSliderDisabled && <div data-element=\"thumbnailsSizeSlider\" className=\"thumbnail-slider-container\">\n        <Button\n          img=\"icon-zoom-thumb-out\"\n          title=\"action.zoomOut\"\n          hideTooltipShortcut\n          onClick={() => {\n            if (thumbnailSize - Number(ZOOM_RANGE_STEP) > Number(ZOOM_RANGE_STEP)) {\n              setThumbnailSize(thumbnailSize - Number(ZOOM_RANGE_STEP));\n              updateNumberOfColumns();\n            }\n          }}\n          dataElement=\"zoomThumbOutButton\"\n        />\n        <input\n          type=\"range\"\n          min={ZOOM_RANGE_MIN}\n          max={ZOOM_RANGE_MAX}\n          value={thumbnailSize}\n          onChange={e => {\n            setThumbnailSize(Number(e.target.value));\n            updateNumberOfColumns();\n          }}\n          step={ZOOM_RANGE_STEP}\n          className=\"thumbnail-slider\"\n          id=\"thumbnailSize\"\n        />\n        <Button\n          img=\"icon-zoom-thumb-in\"\n          title=\"action.zoomIn\"\n          hideTooltipShortcut\n          onClick={() => {\n            if (thumbnailSize + Number(ZOOM_RANGE_STEP) < 1001) {\n              setThumbnailSize(thumbnailSize + Number(ZOOM_RANGE_STEP));\n              updateNumberOfColumns();\n            }\n          }}\n          dataElement=\"zoomThumbInButton\"\n        />\n      </div>}\n      <Measure bounds onResize={onPanelResize} key={thumbnailSize}>\n        {({ measureRef }) => (\n          <div className=\"Panel ThumbnailsPanel\" id=\"virtualized-thumbnails-container\" data-element=\"thumbnailsPanel\" onDrop={onDrop} ref={measureRef}>\n            <div className=\"virtualized-thumbnails-container\">\n              {isDragging ?\n                <div className=\"thumbnailAutoScollArea\" onDragOver={scrollUp} style={thumbnailAutoScrollAreaStyle}></div> : \"\"\n              }\n              <List\n                ref={listRef}\n                height={height}\n                width={width}\n                rowHeight={thumbnailHeight}\n                // Round it to a whole number because React-Virtualized list library doesn't round it for us and throws errors when rendering non whole number rows\n                // use ceiling rather than floor so that an extra row can be created in case the items can't be evenly distributed between rows\n                rowCount={Math.ceil(totalPages / numberOfColumns)}\n                rowRenderer={renderThumbnails}\n                overscanRowCount={3}\n                className={'thumbnailsList'}\n                style={{ outline: 'none' }}\n                // Ensure we show the current page in the thumbnails when we open the panel\n                scrollToIndex={Math.floor((currentPage - 1) / numberOfColumns)}\n              />\n              {isDragging ?\n                <div className=\"thumbnailAutoScollArea\" onDragOver={scrollDown} style={{ ...thumbnailAutoScrollAreaStyle, 'bottom': '70px' }}></div> : \"\"\n              }\n            </div>\n          </div>\n        )}\n      </Measure>\n      <DocumentControls shouldShowControls={shouldShowControls} />\n    </React.Fragment>\n  );\n};\n\nexport default ThumbnailsPanel;\n","import ThumbnailsPanel from './ThumbnailsPanel';\n\nexport default ThumbnailsPanel;\n","import React from 'react';\n\nconst OutlineContext = React.createContext();\n\nexport default OutlineContext;","import fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\n\nconst OutlineUtils = {\n  setDoc(doc) {\n    this.doc = doc;\n  },\n  async setOutlineName(path, newName) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    await target.setTitle(newName);\n    const bookmarkEventObject = {\n      ...target,\n      bookmark: target,\n      path,\n      action: 'setOutlineName'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return path;\n  },\n  async addRootOutline(newName, pageNum) {\n    const newOutline = await this.createOutline(newName, pageNum);\n    const doc = await this.doc.getPDFDoc();\n\n    await doc.addRootBookmark(newOutline);\n\n    const bookmarkEventObject = {\n      ...newOutline,\n      bookmark: newOutline,\n      path: '0',\n      action: 'addRootOutline'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return '0';\n  },\n  async addNewOutline(newName, path, pageNum) {\n    let target;\n\n    if (path) {\n      target = await this.findPDFNetOutline(path);\n    } else {\n      target = await this.getLastOutline();\n    }\n\n    if (!target) {\n      return null;\n    }\n\n    const newOutline = await this.createOutline(newName, pageNum);\n    await target.addNext(newOutline);\n\n    const addedOutlinePath = await this.findPathInTree(newOutline);\n    const bookmarkEventObject = {\n      ...newOutline,\n      bookmark: newOutline,\n      path: addedOutlinePath,\n      action: 'addNewOutline'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return addedOutlinePath;\n  },\n  createOutline(newName, pageNum) {\n    const PDFNet = window.PDFNet;\n\n    return PDFNet.runWithCleanup(async () => {\n      const doc = await this.doc.getPDFDoc();\n      const newOutline = await PDFNet.Bookmark.create(doc, newName);\n\n      const page = await doc.getPage(pageNum);\n      const dest = await PDFNet.Destination.createFit(page);\n      newOutline.setAction(await PDFNet.Action.createGoto(dest));\n\n      return newOutline;\n    });\n  },\n  async deleteOutline(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (target) {\n      const bookmarkEventObject = {\n        ...target,\n        bookmark: target,\n        path,\n        action: 'deleteOutline'\n      };\n      await target.delete();\n      fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    }\n\n    return null;\n  },\n  async moveOutlineUp(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    const prev = await target.getPrev();\n    if (!(await this.isValid(prev))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n    await prev.addPrev(copy);\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineUp'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineDown(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return path;\n    }\n\n    const next = await target.getNext();\n    if (!(await this.isValid(next))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n    await next.addNext(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineDown'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineBeforeTarget(path, targetPath) {\n    const currTarget = await this.findPDFNetOutline(path);\n    const target = await this.findPDFNetOutline(targetPath);\n    if (!target || !currTarget) {\n      return path;\n    }\n    const copy = await currTarget.copy();\n    await currTarget.delete();\n    await target.addPrev(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineBeforeTarget'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineAfterTarget(path, targetPath) {\n    const currTarget = await this.findPDFNetOutline(path);\n    const target = await this.findPDFNetOutline(targetPath);\n    if (!target || !currTarget) {\n      return path;\n    }\n    const copy = await currTarget.copy();\n    await currTarget.delete();\n    await target.addNext(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineAfterTarget'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineOutward(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target || (await target.getIndent()) === 1) {\n      return path;\n    }\n\n    const parent = await target.getParent();\n    const copy = await target.copy();\n    await target.delete();\n\n    await parent.addNext(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineOutward'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineOutwardBeforeParent(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target || (await target.getIndent()) === 1) {\n      return path;\n    }\n\n    const parent = await target.getParent();\n    const copy = await target.copy();\n    await target.delete();\n\n    await parent.addPrev(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineOutwardBeforeParent'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineOutwardBeforeAncestor(path, ancestorPath) {\n    const target = await this.findPDFNetOutline(path);\n    const ancestorTarget = await this.findPDFNetOutline(ancestorPath);\n\n    if (!target || (await target.getIndent()) === 1 || !ancestorTarget) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n\n    await ancestorTarget.addPrev(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineOutwardBeforeAncestor'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineInTarget(path, targetPath) {\n    const target = await this.findPDFNetOutline(path);\n    const targetOutline = await this.findPDFNetOutline(targetPath);\n    if (!target || !targetOutline) {\n      return path;\n    }\n\n    if (!(await this.isValid(targetOutline))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n\n    if (await targetOutline.hasChildren()) {\n      const lastChild = await targetOutline.getLastChild();\n      await lastChild.addNext(copy);\n    } else {\n      await targetOutline.addChild(copy);\n    }\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineInTarget'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineInward(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return path;\n    }\n\n    const prev = await target.getPrev();\n    if (!(await this.isValid(prev))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n\n    if (await prev.hasChildren()) {\n      const lastChild = await prev.getLastChild();\n      await lastChild.addNext(copy);\n    } else {\n      await prev.addChild(copy);\n    }\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineInward'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async getCanMoveState(path) {\n    const state = { up: false, down: false, outward: false, inward: false };\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return state;\n    }\n\n    const prev = await target.getPrev();\n    if (await this.isValid(prev)) {\n      state.up = true;\n      state.inward = true;\n    }\n\n    const next = await target.getNext();\n    if (await this.isValid(next)) {\n      state.down = true;\n    }\n\n    const parent = await target.getParent();\n    if ((await this.isValid(parent)) && (await target.getIndent()) > 1) {\n      state.outward = true;\n    }\n\n    return state;\n  },\n  getOutlineId(outline) {\n    const name = outline.getName();\n    const path = this.getPath(outline);\n\n    return `${path}${this.getSplitter()}${name}`;\n  },\n  getLastOutline() {\n    return window.PDFNet.runWithCleanup(async () => {\n      const doc = await this.doc.getPDFDoc();\n      const root = await doc.getFirstBookmark();\n\n      let curr = root;\n      while ((await this.isValid(curr)) && (await this.isValid(await curr.getNext()))) {\n        curr = await curr.getNext();\n      }\n\n      return (await this.isValid(curr)) ? curr : null;\n    });\n  },\n  async findPathInTree(target) {\n    const doc = await this.doc.getPDFDoc();\n    const root = await doc.getFirstBookmark();\n    const queue = [];\n\n    // add all the bookmarks in the first level to the queue\n    // this includes the root bookmark and all of its siblings\n    let i = 0;\n    let curr = root;\n    while (await this.isValid(curr)) {\n      queue.push([curr, `${i}`]);\n      curr = await curr.getNext();\n      i++;\n    }\n\n    // start a BFS to find the target\n    while (queue.length > 0) {\n      const node = queue.shift();\n      const [outline, path] = node;\n\n      if (outline.id === target.id) {\n        return path;\n      }\n\n      if (!(await outline.hasChildren())) {\n        continue;\n      }\n\n      let childIdx = 0;\n      let child = await outline.getFirstChild();\n      while (await this.isValid(child)) {\n        queue.push([child, `${path}${this.getSplitter()}${childIdx}`]);\n\n        child = await child.getNext();\n        childIdx++;\n      }\n    }\n\n    return null;\n  },\n  findPDFNetOutline(path) {\n    if (!path) {\n      return Promise.resolve(null);\n    }\n\n    const paths = path.split(this.getSplitter());\n\n    return window.PDFNet.runWithCleanup(async () => {\n      const doc = await this.doc.getPDFDoc();\n      const rootOutline = await doc.getFirstBookmark();\n\n      let curr = rootOutline;\n      for (let level = 0; level < paths.length; level++) {\n        for (let i = 0; i < paths[level]; i++) {\n          curr = await curr.getNext();\n        }\n\n        if (level !== paths.length - 1) {\n          curr = await curr.getFirstChild();\n        }\n      }\n\n      if (await this.isValid(curr)) {\n        return curr;\n      }\n\n      return (await this.isValid(curr)) ? curr : null;\n    });\n  },\n  isAncestor(outline, targetOutline) {\n    if (outline === targetOutline) {\n      return false;\n    }\n    let parentOutline = outline.parent;\n    while (parentOutline) {\n      if (parentOutline === targetOutline) {\n        return true;\n      }\n      parentOutline = parentOutline.parent;\n    }\n    return false;\n  },\n  getPath(outline) {\n    const paths = [];\n\n    let curr = outline;\n    while (curr) {\n      paths.push(curr.getIndex());\n      curr = curr.getParent();\n    }\n\n    return paths.reverse().join(this.getSplitter());\n  },\n  getSplitter() {\n    return '-';\n  },\n  async isValid(pdfnetOutline) {\n    // eslint-disable-next-line no-return-await\n    return pdfnetOutline && (await pdfnetOutline.isValid());\n  },\n};\n\nexport default Object.create(OutlineUtils);\n","import React, { useContext, useState, useEffect, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport Button from 'components/Button';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport OutlineContext from 'components/Outline/Context';\n\nimport core from 'core';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport selectors from 'selectors';\n\nimport './OutlineControls.scss';\nimport DataElements from 'src/constants/dataElement';\n\nconst OutlineControls = () => {\n  const outlines = useSelector(state => selectors.getOutlines(state));\n  const { selectedOutlinePath, setSelectedOutlinePath, updateOutlines } = useContext(\n    OutlineContext,\n  );\n  const [canMove, setCanMove] = useState({ up: false, down: false, outward: false, inward: false });\n  const nextIndexRef = useRef(null);\n  const [t] = useTranslation();\n\n  useEffect(() => {\n    if (!core.isFullPDFEnabled()) {\n      return;\n    }\n\n    const setCanMoveState = async () => {\n      setCanMove(await outlineUtils.getCanMoveState(selectedOutlinePath));\n    }\n\n    setCanMoveState();\n  }, [selectedOutlinePath]);\n\n  useEffect(() => {\n    if (nextIndexRef.current !== null) {\n      setSelectedOutlinePath(nextIndexRef.current);\n      nextIndexRef.current = null;\n    }\n  }, [outlines, setSelectedOutlinePath]);\n\n  const moveOutlineUp = async () => {\n    const nextIndex = await outlineUtils.moveOutlineUp(selectedOutlinePath);\n    updateOutlines();\n    nextIndexRef.current = nextIndex;\n  }\n\n  const moveOutlineDown = async () => {\n    const nextIndex = await outlineUtils.moveOutlineDown(selectedOutlinePath);\n    updateOutlines();\n    nextIndexRef.current = nextIndex;\n  }\n\n  const moveOutlineOutward = async () => {\n    const nextIndex = await outlineUtils.moveOutlineOutward(selectedOutlinePath);\n    updateOutlines();\n    nextIndexRef.current = nextIndex;\n  }\n\n  const moveOutlineInward = async () => {\n    const nextIndex = await outlineUtils.moveOutlineInward(selectedOutlinePath);\n    updateOutlines();\n    nextIndexRef.current = nextIndex;\n  }\n\n  return (\n    <DataElementWrapper\n      className=\"OutlineControls\"\n      dataElement={DataElements.OUTLINE_CONTROLS}\n    >\n      <span className=\"reorderText\">\n        {t('option.bookmarkOutlineControls.reorder')}\n      </span>\n      <Button\n        img=\"icon-arrow-up\"\n        disabled={!canMove.up}\n        onClick={moveOutlineUp}\n        dataElement=\"moveOutlineUpButton\"\n      />\n      <Button\n        img=\"icon-arrow-down\"\n        disabled={!canMove.down}\n        onClick={moveOutlineDown}\n        dataElement=\"moveOutlineDownButton\"\n      />\n      <Button\n        img=\"icon-arrow-left\"\n        disabled={!canMove.outward}\n        onClick={moveOutlineOutward}\n        dataElement=\"moveOutlineOutwardButton\"\n      />\n      <Button\n        img=\"icon-arrow-right\"\n        disabled={!canMove.inward}\n        onClick={moveOutlineInward}\n        dataElement=\"moveOutlineInwardButton\"\n      />\n    </DataElementWrapper>\n  );\n}\n\nexport default OutlineControls;\n","import OutlineControls from './OutlineControls';\n\nexport default OutlineControls;","export function registerTarget(type, target, manager) {\n  var registry = manager.getRegistry();\n  var targetId = registry.addTarget(type, target);\n  return [targetId, function () {\n    return registry.removeTarget(targetId);\n  }];\n}\nexport function registerSource(type, source, manager) {\n  var registry = manager.getRegistry();\n  var sourceId = registry.addSource(type, source);\n  return [sourceId, function () {\n    return registry.removeSource(sourceId);\n  }];\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrop = false;\nexport var DropTargetMonitorImpl = /*#__PURE__*/function () {\n  function DropTargetMonitorImpl(manager) {\n    _classCallCheck(this, DropTargetMonitorImpl);\n\n    _defineProperty(this, \"internalMonitor\", void 0);\n\n    _defineProperty(this, \"targetId\", null);\n\n    this.internalMonitor = manager.getMonitor();\n  }\n\n  _createClass(DropTargetMonitorImpl, [{\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(targetId) {\n      this.targetId = targetId;\n    }\n  }, {\n    key: \"getHandlerId\",\n    value: function getHandlerId() {\n      return this.targetId;\n    }\n  }, {\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener, options) {\n      return this.internalMonitor.subscribeToStateChange(listener, options);\n    }\n  }, {\n    key: \"canDrop\",\n    value: function canDrop() {\n      // Cut out early if the target id has not been set. This should prevent errors\n      // where the user has an older version of dnd-core like in\n      // https://github.com/react-dnd/react-dnd/issues/1310\n      if (!this.targetId) {\n        return false;\n      }\n\n      invariant(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n\n      try {\n        isCallingCanDrop = true;\n        return this.internalMonitor.canDropOnTarget(this.targetId);\n      } finally {\n        isCallingCanDrop = false;\n      }\n    }\n  }, {\n    key: \"isOver\",\n    value: function isOver(options) {\n      if (!this.targetId) {\n        return false;\n      }\n\n      return this.internalMonitor.isOverTarget(this.targetId, options);\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.internalMonitor.getItemType();\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.internalMonitor.getItem();\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.internalMonitor.getDropResult();\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.internalMonitor.didDrop();\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.internalMonitor.getInitialClientOffset();\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.internalMonitor.getInitialSourceClientOffset();\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return this.internalMonitor.getSourceClientOffset();\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.internalMonitor.getClientOffset();\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return this.internalMonitor.getDifferenceFromInitialOffset();\n    }\n  }]);\n\n  return DropTargetMonitorImpl;\n}();","import { invariant } from '@react-dnd/invariant';\nimport { cloneElement, isValidElement } from 'react';\n\nfunction throwIfCompositeComponentElement(element) {\n  // Custom components can no longer be wrapped directly in React DnD 2.0\n  // so that we don't need to depend on findDOMNode() from react-dom.\n  if (typeof element.type === 'string') {\n    return;\n  }\n\n  var displayName = element.type.displayName || element.type.name || 'the component';\n  throw new Error('Only native element nodes can now be passed to React DnD connectors.' + \"You can either wrap \".concat(displayName, \" into a <div>, or turn it into a \") + 'drag source or a drop target itself.');\n}\n\nfunction wrapHookToRecognizeElement(hook) {\n  return function () {\n    var elementOrNode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    // When passed a node, call the hook straight away.\n    if (!isValidElement(elementOrNode)) {\n      var node = elementOrNode;\n      hook(node, options); // return the node so it can be chained (e.g. when within callback refs\n      // <div ref={node => connectDragSource(connectDropTarget(node))}/>\n\n      return node;\n    } // If passed a ReactElement, clone it and attach this function as a ref.\n    // This helps us achieve a neat API where user doesn't even know that refs\n    // are being used under the hood.\n\n\n    var element = elementOrNode;\n    throwIfCompositeComponentElement(element); // When no options are passed, use the hook directly\n\n    var ref = options ? function (node) {\n      return hook(node, options);\n    } : hook;\n    return cloneWithRef(element, ref);\n  };\n}\n\nexport function wrapConnectorHooks(hooks) {\n  var wrappedHooks = {};\n  Object.keys(hooks).forEach(function (key) {\n    var hook = hooks[key]; // ref objects should be passed straight through without wrapping\n\n    if (key.endsWith('Ref')) {\n      wrappedHooks[key] = hooks[key];\n    } else {\n      var wrappedHook = wrapHookToRecognizeElement(hook);\n\n      wrappedHooks[key] = function () {\n        return wrappedHook;\n      };\n    }\n  });\n  return wrappedHooks;\n}\n\nfunction setRef(ref, node) {\n  if (typeof ref === 'function') {\n    ref(node);\n  } else {\n    ref.current = node;\n  }\n}\n\nfunction cloneWithRef(element, newRef) {\n  var previousRef = element.ref;\n  invariant(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' + 'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' + 'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs');\n\n  if (!previousRef) {\n    // When there is no ref on the element, use the new ref directly\n    return cloneElement(element, {\n      ref: newRef\n    });\n  } else {\n    return cloneElement(element, {\n      ref: function ref(node) {\n        setRef(previousRef, node);\n        setRef(newRef, node);\n      }\n    });\n  }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexport function isRef(obj) {\n  return (// eslint-disable-next-line no-prototype-builtins\n    obj !== null && _typeof(obj) === 'object' && Object.prototype.hasOwnProperty.call(obj, 'current')\n  );\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from './isRef';\nexport var TargetConnector = /*#__PURE__*/function () {\n  // The drop target may either be attached via ref or connect function\n  function TargetConnector(backend) {\n    var _this = this;\n\n    _classCallCheck(this, TargetConnector);\n\n    _defineProperty(this, \"hooks\", wrapConnectorHooks({\n      dropTarget: function dropTarget(node, options) {\n        _this.clearDropTarget();\n\n        _this.dropTargetOptions = options;\n\n        if (isRef(node)) {\n          _this.dropTargetRef = node;\n        } else {\n          _this.dropTargetNode = node;\n        }\n\n        _this.reconnect();\n      }\n    }));\n\n    _defineProperty(this, \"handlerId\", null);\n\n    _defineProperty(this, \"dropTargetRef\", null);\n\n    _defineProperty(this, \"dropTargetNode\", void 0);\n\n    _defineProperty(this, \"dropTargetOptionsInternal\", null);\n\n    _defineProperty(this, \"unsubscribeDropTarget\", void 0);\n\n    _defineProperty(this, \"lastConnectedHandlerId\", null);\n\n    _defineProperty(this, \"lastConnectedDropTarget\", null);\n\n    _defineProperty(this, \"lastConnectedDropTargetOptions\", null);\n\n    _defineProperty(this, \"backend\", void 0);\n\n    this.backend = backend;\n  }\n\n  _createClass(TargetConnector, [{\n    key: \"connectTarget\",\n    get: function get() {\n      return this.dropTarget;\n    }\n  }, {\n    key: \"reconnect\",\n    value: function reconnect() {\n      // if nothing has changed then don't resubscribe\n      var didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();\n\n      if (didChange) {\n        this.disconnectDropTarget();\n      }\n\n      var dropTarget = this.dropTarget;\n\n      if (!this.handlerId) {\n        return;\n      }\n\n      if (!dropTarget) {\n        this.lastConnectedDropTarget = dropTarget;\n        return;\n      }\n\n      if (didChange) {\n        this.lastConnectedHandlerId = this.handlerId;\n        this.lastConnectedDropTarget = dropTarget;\n        this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n        this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n      }\n    }\n  }, {\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(newHandlerId) {\n      if (newHandlerId === this.handlerId) {\n        return;\n      }\n\n      this.handlerId = newHandlerId;\n      this.reconnect();\n    }\n  }, {\n    key: \"dropTargetOptions\",\n    get: function get() {\n      return this.dropTargetOptionsInternal;\n    },\n    set: function set(options) {\n      this.dropTargetOptionsInternal = options;\n    }\n  }, {\n    key: \"didHandlerIdChange\",\n    value: function didHandlerIdChange() {\n      return this.lastConnectedHandlerId !== this.handlerId;\n    }\n  }, {\n    key: \"didDropTargetChange\",\n    value: function didDropTargetChange() {\n      return this.lastConnectedDropTarget !== this.dropTarget;\n    }\n  }, {\n    key: \"didOptionsChange\",\n    value: function didOptionsChange() {\n      return !shallowEqual(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n    }\n  }, {\n    key: \"disconnectDropTarget\",\n    value: function disconnectDropTarget() {\n      if (this.unsubscribeDropTarget) {\n        this.unsubscribeDropTarget();\n        this.unsubscribeDropTarget = undefined;\n      }\n    }\n  }, {\n    key: \"dropTarget\",\n    get: function get() {\n      return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;\n    }\n  }, {\n    key: \"clearDropTarget\",\n    value: function clearDropTarget() {\n      this.dropTargetRef = null;\n      this.dropTargetNode = null;\n    }\n  }]);\n\n  return TargetConnector;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexport function getDecoratedComponent(instanceRef) {\n  var currentRef = instanceRef.current;\n\n  if (currentRef == null) {\n    return null;\n  } else if (currentRef.decoratedRef) {\n    // go through the private field in decorateHandler to avoid the invariant hit\n    return currentRef.decoratedRef.current;\n  } else {\n    return currentRef;\n  }\n}\nexport function isClassComponent(Component) {\n  return Component && Component.prototype && typeof Component.prototype.render === 'function';\n}\nexport function isRefForwardingComponent(C) {\n  var _item$$$typeof;\n\n  var item = C;\n  return (item === null || item === void 0 ? void 0 : (_item$$$typeof = item.$$typeof) === null || _item$$$typeof === void 0 ? void 0 : _item$$$typeof.toString()) === 'Symbol(react.forward_ref)';\n}\nexport function isRefable(C) {\n  return isClassComponent(C) || isRefForwardingComponent(C);\n}\nexport function checkDecoratorArguments(functionName, signature) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i++) {\n      var arg = i + 2 < 2 || arguments.length <= i + 2 ? undefined : arguments[i + 2];\n\n      if (arg && arg.prototype && arg.prototype.render) {\n        // eslint-disable-next-line no-console\n        console.error('You seem to be applying the arguments in the wrong order. ' + \"It should be \".concat(functionName, \"(\").concat(signature, \")(Component), not the other way around. \") + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n        return;\n      }\n    }\n  }\n}\nexport function isFunction(input) {\n  return typeof input === 'function';\n}\nexport function noop() {// noop\n}\n\nfunction isObjectLike(input) {\n  return _typeof(input) === 'object' && input !== null;\n}\n\nexport function isPlainObject(input) {\n  if (!isObjectLike(input)) {\n    return false;\n  }\n\n  if (Object.getPrototypeOf(input) === null) {\n    return true;\n  }\n\n  var proto = input;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(input) === proto;\n}\nexport function isValidType(type, allowArray) {\n  return typeof type === 'string' || _typeof(type) === 'symbol' || !!allowArray && Array.isArray(type) && type.every(function (t) {\n    return isValidType(t, false);\n  });\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { isFunction, noop } from './utils';\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\n\nexport var Disposable = /*#__PURE__*/function () {\n  function Disposable(action) {\n    _classCallCheck(this, Disposable);\n\n    _defineProperty(this, \"isDisposed\", false);\n\n    _defineProperty(this, \"action\", void 0);\n\n    this.action = isFunction(action) ? action : noop;\n  }\n  /** Performs the task of cleaning up resources. */\n\n\n  _createClass(Disposable, [{\n    key: \"dispose\",\n    value: function dispose() {\n      if (!this.isDisposed) {\n        this.action();\n        this.isDisposed = true;\n      }\n    }\n  }], [{\n    key: \"isDisposable\",\n    value:\n    /**\n     * Gets the disposable that does nothing when disposed.\n     */\n\n    /**\n     * Validates whether the given object is a disposable\n     * @param {Object} Object to test whether it has a dispose method\n     * @returns {Boolean} true if a disposable object, else false.\n     */\n    function isDisposable(d) {\n      return Boolean(d && isFunction(d.dispose));\n    }\n  }, {\n    key: \"_fixup\",\n    value: function _fixup(result) {\n      return Disposable.isDisposable(result) ? result : Disposable.empty;\n    }\n    /**\n     * Creates a disposable object that invokes the specified action when disposed.\n     * @param {Function} dispose Action to run during the first call to dispose.\n     * The action is guaranteed to be run at most once.\n     * @return {Disposable} The disposable object that runs the given action upon disposal.\n     */\n\n  }, {\n    key: \"create\",\n    value: function create(action) {\n      return new Disposable(action);\n    }\n  }]);\n\n  return Disposable;\n}();\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\n\n_defineProperty(Disposable, \"empty\", {\n  dispose: noop\n});\n\nexport var CompositeDisposable = /*#__PURE__*/function () {\n  function CompositeDisposable() {\n    _classCallCheck(this, CompositeDisposable);\n\n    _defineProperty(this, \"isDisposed\", false);\n\n    _defineProperty(this, \"disposables\", void 0);\n\n    for (var _len = arguments.length, disposables = new Array(_len), _key = 0; _key < _len; _key++) {\n      disposables[_key] = arguments[_key];\n    }\n\n    this.disposables = disposables;\n  }\n  /**\n   * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n   * @param {Any} item Disposable to add.\n   */\n\n\n  _createClass(CompositeDisposable, [{\n    key: \"add\",\n    value: function add(item) {\n      if (this.isDisposed) {\n        item.dispose();\n      } else {\n        this.disposables.push(item);\n      }\n    }\n    /**\n     * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n     * @param {Any} item Disposable to remove.\n     * @returns {Boolean} true if found; false otherwise.\n     */\n\n  }, {\n    key: \"remove\",\n    value: function remove(item) {\n      var shouldDispose = false;\n\n      if (!this.isDisposed) {\n        var idx = this.disposables.indexOf(item);\n\n        if (idx !== -1) {\n          shouldDispose = true;\n          this.disposables.splice(idx, 1);\n          item.dispose();\n        }\n      }\n\n      return shouldDispose;\n    }\n    /**\n     *  Disposes all disposables in the group and removes them from the group but\n     *  does not dispose the CompositeDisposable.\n     */\n\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      if (!this.isDisposed) {\n        var len = this.disposables.length;\n        var currentDisposables = new Array(len);\n\n        for (var i = 0; i < len; i++) {\n          currentDisposables[i] = this.disposables[i];\n        }\n\n        this.disposables = [];\n\n        for (var _i = 0; _i < len; _i++) {\n          currentDisposables[_i].dispose();\n        }\n      }\n    }\n    /**\n     *  Disposes all disposables in the group and removes them from the group.\n     */\n\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      if (!this.isDisposed) {\n        this.isDisposed = true;\n        var len = this.disposables.length;\n        var currentDisposables = new Array(len);\n\n        for (var i = 0; i < len; i++) {\n          currentDisposables[i] = this.disposables[i];\n        }\n\n        this.disposables = [];\n\n        for (var _i2 = 0; _i2 < len; _i2++) {\n          currentDisposables[_i2].dispose();\n        }\n      }\n    }\n  }]);\n\n  return CompositeDisposable;\n}();\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\n\nexport var SerialDisposable = /*#__PURE__*/function () {\n  function SerialDisposable() {\n    _classCallCheck(this, SerialDisposable);\n\n    _defineProperty(this, \"isDisposed\", false);\n\n    _defineProperty(this, \"current\", void 0);\n  }\n\n  _createClass(SerialDisposable, [{\n    key: \"getDisposable\",\n    value:\n    /**\n     * Gets the underlying disposable.\n     * @returns {Any} the underlying disposable.\n     */\n    function getDisposable() {\n      return this.current;\n    }\n  }, {\n    key: \"setDisposable\",\n    value: function setDisposable(value) {\n      var shouldDispose = this.isDisposed;\n\n      if (!shouldDispose) {\n        var old = this.current;\n        this.current = value;\n\n        if (old) {\n          old.dispose();\n        }\n      }\n\n      if (shouldDispose && value) {\n        value.dispose();\n      }\n    }\n    /** Performs the task of cleaning up resources. */\n\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      if (!this.isDisposed) {\n        this.isDisposed = true;\n        var old = this.current;\n        this.current = undefined;\n\n        if (old) {\n          old.dispose();\n        }\n      }\n    }\n  }]);\n\n  return SerialDisposable;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\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 _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createRef, Component } from 'react';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { invariant } from '@react-dnd/invariant';\nimport { DndContext } from '../core';\nimport { isPlainObject } from './utils';\nimport { Disposable, CompositeDisposable, SerialDisposable } from './disposables';\nimport { isRefable } from './utils';\nimport hoistStatics from 'hoist-non-react-statics';\nexport function decorateHandler(_ref) {\n  var DecoratedComponent = _ref.DecoratedComponent,\n      createHandler = _ref.createHandler,\n      createMonitor = _ref.createMonitor,\n      createConnector = _ref.createConnector,\n      registerHandler = _ref.registerHandler,\n      containerDisplayName = _ref.containerDisplayName,\n      getType = _ref.getType,\n      collect = _ref.collect,\n      options = _ref.options;\n  var _options$arePropsEqua = options.arePropsEqual,\n      arePropsEqual = _options$arePropsEqua === void 0 ? shallowEqual : _options$arePropsEqua;\n  var Decorated = DecoratedComponent;\n  var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n\n  var DragDropContainer = /*#__PURE__*/function (_Component) {\n    _inherits(DragDropContainer, _Component);\n\n    var _super = _createSuper(DragDropContainer);\n\n    function DragDropContainer(props) {\n      var _this;\n\n      _classCallCheck(this, DragDropContainer);\n\n      _this = _super.call(this, props);\n\n      _defineProperty(_assertThisInitialized(_this), \"decoratedRef\", createRef());\n\n      _defineProperty(_assertThisInitialized(_this), \"handlerId\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"manager\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"handlerMonitor\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"handlerConnector\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"handler\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"disposable\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"currentType\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"handleChange\", function () {\n        var nextState = _this.getCurrentState();\n\n        if (!shallowEqual(nextState, _this.state)) {\n          _this.setState(nextState);\n        }\n      });\n\n      _this.disposable = new SerialDisposable();\n\n      _this.receiveProps(props);\n\n      _this.dispose();\n\n      return _this;\n    }\n\n    _createClass(DragDropContainer, [{\n      key: \"getHandlerId\",\n      value: function getHandlerId() {\n        return this.handlerId;\n      }\n    }, {\n      key: \"getDecoratedComponentInstance\",\n      value: function getDecoratedComponentInstance() {\n        invariant(this.decoratedRef.current, 'In order to access an instance of the decorated component, it must either be a class component or use React.forwardRef()');\n        return this.decoratedRef.current;\n      }\n    }, {\n      key: \"shouldComponentUpdate\",\n      value: function shouldComponentUpdate(nextProps, nextState) {\n        return !arePropsEqual(nextProps, this.props) || !shallowEqual(nextState, this.state);\n      }\n    }, {\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        this.disposable = new SerialDisposable();\n        this.currentType = undefined;\n        this.receiveProps(this.props);\n        this.handleChange();\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate(prevProps) {\n        if (!arePropsEqual(this.props, prevProps)) {\n          this.receiveProps(this.props);\n          this.handleChange();\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.dispose();\n      }\n    }, {\n      key: \"receiveProps\",\n      value: function receiveProps(props) {\n        if (!this.handler) {\n          return;\n        }\n\n        this.handler.receiveProps(props);\n        this.receiveType(getType(props));\n      }\n    }, {\n      key: \"receiveType\",\n      value: function receiveType(type) {\n        if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n          return;\n        }\n\n        if (type === this.currentType) {\n          return;\n        }\n\n        this.currentType = type;\n\n        var _registerHandler = registerHandler(type, this.handler, this.manager),\n            _registerHandler2 = _slicedToArray(_registerHandler, 2),\n            handlerId = _registerHandler2[0],\n            unregister = _registerHandler2[1];\n\n        this.handlerId = handlerId;\n        this.handlerMonitor.receiveHandlerId(handlerId);\n        this.handlerConnector.receiveHandlerId(handlerId);\n        var globalMonitor = this.manager.getMonitor();\n        var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, {\n          handlerIds: [handlerId]\n        });\n        this.disposable.setDisposable(new CompositeDisposable(new Disposable(unsubscribe), new Disposable(unregister)));\n      }\n    }, {\n      key: \"dispose\",\n      value: function dispose() {\n        this.disposable.dispose();\n\n        if (this.handlerConnector) {\n          this.handlerConnector.receiveHandlerId(null);\n        }\n      }\n    }, {\n      key: \"getCurrentState\",\n      value: function getCurrentState() {\n        if (!this.handlerConnector) {\n          return {};\n        }\n\n        var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor, this.props);\n\n        if (process.env.NODE_ENV !== 'production') {\n          invariant(isPlainObject(nextState), 'Expected `collect` specified as the second argument to ' + '%s for %s to return a plain object of props to inject. ' + 'Instead, received %s.', containerDisplayName, displayName, nextState);\n        }\n\n        return nextState;\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n\n        return _jsx(DndContext.Consumer, {\n          children: function children(_ref2) {\n            var dragDropManager = _ref2.dragDropManager;\n\n            _this2.receiveDragDropManager(dragDropManager);\n\n            if (typeof requestAnimationFrame !== 'undefined') {\n              requestAnimationFrame(function () {\n                var _this2$handlerConnect;\n\n                return (_this2$handlerConnect = _this2.handlerConnector) === null || _this2$handlerConnect === void 0 ? void 0 : _this2$handlerConnect.reconnect();\n              });\n            }\n\n            return _jsx(Decorated, Object.assign({}, _this2.props, _this2.getCurrentState(), {\n              // NOTE: if Decorated is a Function Component, decoratedRef will not be populated unless it's a refforwarding component.\n              ref: isRefable(Decorated) ? _this2.decoratedRef : null\n            }), void 0);\n          }\n        }, void 0);\n      }\n    }, {\n      key: \"receiveDragDropManager\",\n      value: function receiveDragDropManager(dragDropManager) {\n        if (this.manager !== undefined) {\n          return;\n        }\n\n        invariant(dragDropManager !== undefined, 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to render a DndProvider component in your top-level component. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n\n        if (dragDropManager === undefined) {\n          return;\n        }\n\n        this.manager = dragDropManager;\n        this.handlerMonitor = createMonitor(dragDropManager);\n        this.handlerConnector = createConnector(dragDropManager.getBackend());\n        this.handler = createHandler(this.handlerMonitor, this.decoratedRef);\n      }\n    }]);\n\n    return DragDropContainer;\n  }(Component);\n\n  _defineProperty(DragDropContainer, \"DecoratedComponent\", DecoratedComponent);\n\n  _defineProperty(DragDropContainer, \"displayName\", \"\".concat(containerDisplayName, \"(\").concat(displayName, \")\"));\n\n  return hoistStatics(DragDropContainer, DecoratedComponent);\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { isPlainObject, getDecoratedComponent } from './utils';\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\n\nvar TargetImpl = /*#__PURE__*/function () {\n  function TargetImpl(spec, monitor, ref) {\n    _classCallCheck(this, TargetImpl);\n\n    _defineProperty(this, \"props\", null);\n\n    _defineProperty(this, \"spec\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"ref\", void 0);\n\n    this.spec = spec;\n    this.monitor = monitor;\n    this.ref = ref;\n  }\n\n  _createClass(TargetImpl, [{\n    key: \"receiveProps\",\n    value: function receiveProps(props) {\n      this.props = props;\n    }\n  }, {\n    key: \"receiveMonitor\",\n    value: function receiveMonitor(monitor) {\n      this.monitor = monitor;\n    }\n  }, {\n    key: \"canDrop\",\n    value: function canDrop() {\n      if (!this.spec.canDrop) {\n        return true;\n      }\n\n      return this.spec.canDrop(this.props, this.monitor);\n    }\n  }, {\n    key: \"hover\",\n    value: function hover() {\n      if (!this.spec.hover || !this.props) {\n        return;\n      }\n\n      this.spec.hover(this.props, this.monitor, getDecoratedComponent(this.ref));\n    }\n  }, {\n    key: \"drop\",\n    value: function drop() {\n      if (!this.spec.drop) {\n        return undefined;\n      }\n\n      var dropResult = this.spec.drop(this.props, this.monitor, this.ref.current);\n\n      if (process.env.NODE_ENV !== 'production') {\n        invariant(typeof dropResult === 'undefined' || isPlainObject(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' + 'Instead received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', dropResult);\n      }\n\n      return dropResult;\n    }\n  }]);\n\n  return TargetImpl;\n}();\n\nexport function createTargetFactory(spec) {\n  Object.keys(spec).forEach(function (key) {\n    invariant(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', ALLOWED_SPEC_METHODS.join(', '), key);\n    invariant(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', key, key, spec[key]);\n  });\n  return function createTarget(monitor, ref) {\n    return new TargetImpl(spec, monitor, ref);\n  };\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from './isRef';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nexport var SourceConnector = /*#__PURE__*/function () {\n  // The drop target may either be attached via ref or connect function\n  // The drag preview may either be attached via ref or connect function\n  function SourceConnector(backend) {\n    var _this = this;\n\n    _classCallCheck(this, SourceConnector);\n\n    _defineProperty(this, \"hooks\", wrapConnectorHooks({\n      dragSource: function dragSource(node, options) {\n        _this.clearDragSource();\n\n        _this.dragSourceOptions = options || null;\n\n        if (isRef(node)) {\n          _this.dragSourceRef = node;\n        } else {\n          _this.dragSourceNode = node;\n        }\n\n        _this.reconnectDragSource();\n      },\n      dragPreview: function dragPreview(node, options) {\n        _this.clearDragPreview();\n\n        _this.dragPreviewOptions = options || null;\n\n        if (isRef(node)) {\n          _this.dragPreviewRef = node;\n        } else {\n          _this.dragPreviewNode = node;\n        }\n\n        _this.reconnectDragPreview();\n      }\n    }));\n\n    _defineProperty(this, \"handlerId\", null);\n\n    _defineProperty(this, \"dragSourceRef\", null);\n\n    _defineProperty(this, \"dragSourceNode\", void 0);\n\n    _defineProperty(this, \"dragSourceOptionsInternal\", null);\n\n    _defineProperty(this, \"dragSourceUnsubscribe\", void 0);\n\n    _defineProperty(this, \"dragPreviewRef\", null);\n\n    _defineProperty(this, \"dragPreviewNode\", void 0);\n\n    _defineProperty(this, \"dragPreviewOptionsInternal\", null);\n\n    _defineProperty(this, \"dragPreviewUnsubscribe\", void 0);\n\n    _defineProperty(this, \"lastConnectedHandlerId\", null);\n\n    _defineProperty(this, \"lastConnectedDragSource\", null);\n\n    _defineProperty(this, \"lastConnectedDragSourceOptions\", null);\n\n    _defineProperty(this, \"lastConnectedDragPreview\", null);\n\n    _defineProperty(this, \"lastConnectedDragPreviewOptions\", null);\n\n    _defineProperty(this, \"backend\", void 0);\n\n    this.backend = backend;\n  }\n\n  _createClass(SourceConnector, [{\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(newHandlerId) {\n      if (this.handlerId === newHandlerId) {\n        return;\n      }\n\n      this.handlerId = newHandlerId;\n      this.reconnect();\n    }\n  }, {\n    key: \"connectTarget\",\n    get: function get() {\n      return this.dragSource;\n    }\n  }, {\n    key: \"dragSourceOptions\",\n    get: function get() {\n      return this.dragSourceOptionsInternal;\n    },\n    set: function set(options) {\n      this.dragSourceOptionsInternal = options;\n    }\n  }, {\n    key: \"dragPreviewOptions\",\n    get: function get() {\n      return this.dragPreviewOptionsInternal;\n    },\n    set: function set(options) {\n      this.dragPreviewOptionsInternal = options;\n    }\n  }, {\n    key: \"reconnect\",\n    value: function reconnect() {\n      this.reconnectDragSource();\n      this.reconnectDragPreview();\n    }\n  }, {\n    key: \"reconnectDragSource\",\n    value: function reconnectDragSource() {\n      var dragSource = this.dragSource; // if nothing has changed then don't resubscribe\n\n      var didChange = this.didHandlerIdChange() || this.didConnectedDragSourceChange() || this.didDragSourceOptionsChange();\n\n      if (didChange) {\n        this.disconnectDragSource();\n      }\n\n      if (!this.handlerId) {\n        return;\n      }\n\n      if (!dragSource) {\n        this.lastConnectedDragSource = dragSource;\n        return;\n      }\n\n      if (didChange) {\n        this.lastConnectedHandlerId = this.handlerId;\n        this.lastConnectedDragSource = dragSource;\n        this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n        this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n      }\n    }\n  }, {\n    key: \"reconnectDragPreview\",\n    value: function reconnectDragPreview() {\n      var dragPreview = this.dragPreview; // if nothing has changed then don't resubscribe\n\n      var didChange = this.didHandlerIdChange() || this.didConnectedDragPreviewChange() || this.didDragPreviewOptionsChange();\n\n      if (didChange) {\n        this.disconnectDragPreview();\n      }\n\n      if (!this.handlerId) {\n        return;\n      }\n\n      if (!dragPreview) {\n        this.lastConnectedDragPreview = dragPreview;\n        return;\n      }\n\n      if (didChange) {\n        this.lastConnectedHandlerId = this.handlerId;\n        this.lastConnectedDragPreview = dragPreview;\n        this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n        this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n      }\n    }\n  }, {\n    key: \"didHandlerIdChange\",\n    value: function didHandlerIdChange() {\n      return this.lastConnectedHandlerId !== this.handlerId;\n    }\n  }, {\n    key: \"didConnectedDragSourceChange\",\n    value: function didConnectedDragSourceChange() {\n      return this.lastConnectedDragSource !== this.dragSource;\n    }\n  }, {\n    key: \"didConnectedDragPreviewChange\",\n    value: function didConnectedDragPreviewChange() {\n      return this.lastConnectedDragPreview !== this.dragPreview;\n    }\n  }, {\n    key: \"didDragSourceOptionsChange\",\n    value: function didDragSourceOptionsChange() {\n      return !shallowEqual(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n    }\n  }, {\n    key: \"didDragPreviewOptionsChange\",\n    value: function didDragPreviewOptionsChange() {\n      return !shallowEqual(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n    }\n  }, {\n    key: \"disconnectDragSource\",\n    value: function disconnectDragSource() {\n      if (this.dragSourceUnsubscribe) {\n        this.dragSourceUnsubscribe();\n        this.dragSourceUnsubscribe = undefined;\n      }\n    }\n  }, {\n    key: \"disconnectDragPreview\",\n    value: function disconnectDragPreview() {\n      if (this.dragPreviewUnsubscribe) {\n        this.dragPreviewUnsubscribe();\n        this.dragPreviewUnsubscribe = undefined;\n        this.dragPreviewNode = null;\n        this.dragPreviewRef = null;\n      }\n    }\n  }, {\n    key: \"dragSource\",\n    get: function get() {\n      return this.dragSourceNode || this.dragSourceRef && this.dragSourceRef.current;\n    }\n  }, {\n    key: \"dragPreview\",\n    get: function get() {\n      return this.dragPreviewNode || this.dragPreviewRef && this.dragPreviewRef.current;\n    }\n  }, {\n    key: \"clearDragSource\",\n    value: function clearDragSource() {\n      this.dragSourceNode = null;\n      this.dragSourceRef = null;\n    }\n  }, {\n    key: \"clearDragPreview\",\n    value: function clearDragPreview() {\n      this.dragPreviewNode = null;\n      this.dragPreviewRef = null;\n    }\n  }]);\n\n  return SourceConnector;\n}();","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nexport var DragSourceMonitorImpl = /*#__PURE__*/function () {\n  function DragSourceMonitorImpl(manager) {\n    _classCallCheck(this, DragSourceMonitorImpl);\n\n    _defineProperty(this, \"internalMonitor\", void 0);\n\n    _defineProperty(this, \"sourceId\", null);\n\n    this.internalMonitor = manager.getMonitor();\n  }\n\n  _createClass(DragSourceMonitorImpl, [{\n    key: \"receiveHandlerId\",\n    value: function receiveHandlerId(sourceId) {\n      this.sourceId = sourceId;\n    }\n  }, {\n    key: \"getHandlerId\",\n    value: function getHandlerId() {\n      return this.sourceId;\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      invariant(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n      try {\n        isCallingCanDrag = true;\n        return this.internalMonitor.canDragSource(this.sourceId);\n      } finally {\n        isCallingCanDrag = false;\n      }\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging() {\n      if (!this.sourceId) {\n        return false;\n      }\n\n      invariant(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n      try {\n        isCallingIsDragging = true;\n        return this.internalMonitor.isDraggingSource(this.sourceId);\n      } finally {\n        isCallingIsDragging = false;\n      }\n    }\n  }, {\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener, options) {\n      return this.internalMonitor.subscribeToStateChange(listener, options);\n    }\n  }, {\n    key: \"isDraggingSource\",\n    value: function isDraggingSource(sourceId) {\n      return this.internalMonitor.isDraggingSource(sourceId);\n    }\n  }, {\n    key: \"isOverTarget\",\n    value: function isOverTarget(targetId, options) {\n      return this.internalMonitor.isOverTarget(targetId, options);\n    }\n  }, {\n    key: \"getTargetIds\",\n    value: function getTargetIds() {\n      return this.internalMonitor.getTargetIds();\n    }\n  }, {\n    key: \"isSourcePublic\",\n    value: function isSourcePublic() {\n      return this.internalMonitor.isSourcePublic();\n    }\n  }, {\n    key: \"getSourceId\",\n    value: function getSourceId() {\n      return this.internalMonitor.getSourceId();\n    }\n  }, {\n    key: \"subscribeToOffsetChange\",\n    value: function subscribeToOffsetChange(listener) {\n      return this.internalMonitor.subscribeToOffsetChange(listener);\n    }\n  }, {\n    key: \"canDragSource\",\n    value: function canDragSource(sourceId) {\n      return this.internalMonitor.canDragSource(sourceId);\n    }\n  }, {\n    key: \"canDropOnTarget\",\n    value: function canDropOnTarget(targetId) {\n      return this.internalMonitor.canDropOnTarget(targetId);\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.internalMonitor.getItemType();\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.internalMonitor.getItem();\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.internalMonitor.getDropResult();\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.internalMonitor.didDrop();\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.internalMonitor.getInitialClientOffset();\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.internalMonitor.getInitialSourceClientOffset();\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return this.internalMonitor.getSourceClientOffset();\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.internalMonitor.getClientOffset();\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return this.internalMonitor.getDifferenceFromInitialOffset();\n    }\n  }]);\n\n  return DragSourceMonitorImpl;\n}();","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { isPlainObject, getDecoratedComponent } from './utils';\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\n\nvar SourceImpl = /*#__PURE__*/function () {\n  function SourceImpl(spec, monitor, ref) {\n    var _this = this;\n\n    _classCallCheck(this, SourceImpl);\n\n    _defineProperty(this, \"props\", null);\n\n    _defineProperty(this, \"spec\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"ref\", void 0);\n\n    _defineProperty(this, \"beginDrag\", function () {\n      if (!_this.props) {\n        return;\n      }\n\n      var item = _this.spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n\n      if (process.env.NODE_ENV !== 'production') {\n        invariant(isPlainObject(item), 'beginDrag() must return a plain object that represents the dragged item. ' + 'Instead received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', item);\n      }\n\n      return item;\n    });\n\n    this.spec = spec;\n    this.monitor = monitor;\n    this.ref = ref;\n  }\n\n  _createClass(SourceImpl, [{\n    key: \"receiveProps\",\n    value: function receiveProps(props) {\n      this.props = props;\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      if (!this.props) {\n        return false;\n      }\n\n      if (!this.spec.canDrag) {\n        return true;\n      }\n\n      return this.spec.canDrag(this.props, this.monitor);\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging(globalMonitor, sourceId) {\n      if (!this.props) {\n        return false;\n      }\n\n      if (!this.spec.isDragging) {\n        return sourceId === globalMonitor.getSourceId();\n      }\n\n      return this.spec.isDragging(this.props, this.monitor);\n    }\n  }, {\n    key: \"endDrag\",\n    value: function endDrag() {\n      if (!this.props) {\n        return;\n      }\n\n      if (!this.spec.endDrag) {\n        return;\n      }\n\n      this.spec.endDrag(this.props, this.monitor, getDecoratedComponent(this.ref));\n    }\n  }]);\n\n  return SourceImpl;\n}();\n\nexport function createSourceFactory(spec) {\n  Object.keys(spec).forEach(function (key) {\n    invariant(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', ALLOWED_SPEC_METHODS.join(', '), key);\n    invariant(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', key, key, spec[key]);\n  });\n  REQUIRED_SPEC_METHODS.forEach(function (key) {\n    invariant(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', key, key, spec[key]);\n  });\n  return function createSource(monitor, ref) {\n    return new SourceImpl(spec, monitor, ref);\n  };\n}","export const ItemTypes = {\n  OUTLINE: 'outline'\n};\n\nexport const DropLocation = {\n  ON_TARGET_HORIZONTAL_MIDPOINT: 'onTargetHorizontalMidPoint',\n  ABOVE_TARGET: 'aboveTarget',\n  BELOW_TARGET: 'belowTarget',\n  INITIAL: 'initial',\n};\n\nexport const BUFFER_ROOM = 2;","import React, { useState, useRef, useEffect, useCallback, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { createPortal } from 'react-dom';\n\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport ActionButton from 'components/ActionButton';\nimport OutlineContext from 'components/Outline/Context';\n\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport getOverlayPositionBasedOn from 'helpers/getOverlayPositionBasedOn';\n\nimport './OutlineEditPopup.scss';\n\nconst propTypes = {\n  outline: PropTypes.object.isRequired,\n  trigger: PropTypes.string.isRequired,\n};\n\nconst Portal = ({ children, position }) => {\n  const mount = document.getElementById('outline-edit-popup-portal');\n  mount.style.position = 'absolute';\n  mount.style.top = position.top === 'auto' ? position.top : `${position.top}px`\n  mount.style.left = position.left === 'auto' ? position.left : `${position.left}px`\n  mount.style.right = position.right === 'auto' ? position.right : `${position.right}px`\n  mount.style.zIndex = 999;\n\n  return createPortal(children, mount);\n};\n\nconst OutlineEditPopup = ({ outline, trigger, setIsOpen, setIsEditingName }) => {\n  const { selectedOutlinePath, setSelectedOutlinePath, updateOutlines } = useContext(OutlineContext);\n  const [t] = useTranslation();\n  const containerRef = useRef(null);\n  const [position, setPosition] = useState({ left: -100, right: 'auto', top: 'auto' });\n\n  useEffect(() => {\n    const position = getOverlayPositionBasedOn(trigger, containerRef);\n    setPosition(position);\n  }, [trigger]);\n\n  const onClickOutside = useCallback(\n    e => {\n      const triggerButton = document.querySelector(`[data-element=\"${trigger}\"]`);\n      const clickedTriggerButton = triggerButton?.contains(e.target);\n      if (!clickedTriggerButton) {\n        setIsOpen(false);\n      }\n    },\n    [setIsOpen, trigger],\n  );\n\n  useOnClickOutside(containerRef, onClickOutside);\n\n  const renameOutline = () => {\n    setIsEditingName(true);\n  }\n\n  const deleteOutline = async () => {\n    const fullIndex = outlineUtils.getPath(outline);\n    await outlineUtils.deleteOutline(fullIndex);\n\n    updateOutlines();\n    if (fullIndex === selectedOutlinePath) {\n      setSelectedOutlinePath(null);\n    }\n  }\n\n  return (\n    <Portal position={position}>\n      <DataElementWrapper\n        ref={containerRef}\n        className=\"OutlineEditPopup\"\n        dataElement=\"outlineEditPopup\"\n      >\n        <ActionButton\n          dataElement=\"renameOutlineButton\"\n          img=\"icon-header-annotation-fill\"\n          label={t('action.rename')}\n          ariaLabel={t('action.rename')}\n          role=\"option\"\n          onClick={renameOutline}\n        />\n        <ActionButton\n          dataElement=\"deleteOutlineButton\"\n          img=\"icon-delete-line\"\n          label={t('action.delete')}\n          ariaLabel={t('action.delete')}\n          role=\"option\"\n          onClick={deleteOutline}\n        />\n      </DataElementWrapper>\n    </Portal>\n  );\n}\n\nOutlineEditPopup.propTypes = propTypes;\n\nexport default OutlineEditPopup;\n","import OutlineEditPopup from './OutlineEditPopup';\n\nexport default OutlineEditPopup;","import React, { useRef, useEffect } from 'react';\nimport classNames from 'classnames';\n\nimport './OutlineTextInput.scss';\n\nconst OutlineTextInput = ({ className, defaultValue, onEnter, onEscape, ...rest }) => {\n  const inputRef = useRef();\n\n  useEffect(() => {\n    inputRef.current.focus();\n    inputRef.current.select();\n  }, []);\n\n  const handleKeyDown = (e) => {\n    if (e.key === 'Enter' && onEnter) {\n      onEnter(e);\n    }\n\n    if (e.key === 'Escape' && onEscape) {\n      onEscape(e);\n    }\n  }\n\n  return (\n    <input\n      className={classNames({\n        OutlineTextInput: true,\n        [className]: !!className,\n      })}\n      ref={inputRef}\n      type=\"text\"\n      defaultValue={defaultValue}\n      onKeyDown={handleKeyDown}\n      {...rest}\n    />\n  );\n}\n\nexport default OutlineTextInput;\n","import OutlineTextInput from './OutlineTextInput';\n\nexport default OutlineTextInput;","import React, { useState, useCallback, useContext, useEffect, useLayoutEffect, forwardRef, useImperativeHandle, useRef } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport { useTranslation } from 'react-i18next';\nimport { ItemTypes, DropLocation, BUFFER_ROOM } from 'constants/dnd';\nimport Events from 'constants/events';\nimport fireEvent from 'helpers/fireEvent';\nimport OutlineContext from './Context';\nimport Icon from 'components/Icon';\nimport Button from 'components/Button';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport OutlineEditPopup from 'components/OutlineEditPopup';\nimport OutlineTextInput from 'components/OutlineTextInput';\nimport core from 'core';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport { isMobile, isIE } from 'helpers/device';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport './Outline.scss';\nconst propTypes = {\n  outline: PropTypes.object.isRequired,\n  moveOutlineInward: PropTypes.func.isRequired,\n  moveOutlineBeforeTarget: PropTypes.func.isRequired,\n  moveOutlineAfterTarget: PropTypes.func.isRequired,\n  connectDragSource: PropTypes.func,\n  connectDropTarget: PropTypes.func,\n  isDragging: PropTypes.bool,\n  isDraggedUpwards: PropTypes.bool,\n  isDraggedDownwards: PropTypes.bool,\n  outlineEditingEnabled: PropTypes.bool,\n};\n\nconst Outline = forwardRef(\n  function Outline(\n    {\n      outline,\n      isDragging,\n      isDraggedUpwards,\n      isDraggedDownwards,\n      outlineEditingEnabled,\n      connectDragSource,\n      connectDropTarget,\n      moveOutlineInward,\n      moveOutlineBeforeTarget,\n      moveOutlineAfterTarget\n    },\n    ref\n  ) {\n    const outlines = useSelector(state => selectors.getOutlines(state));\n    const {\n      setSelectedOutlinePath,\n      isOutlineSelected,\n      selectedOutlinePath,\n      setIsAddingNewOutline,\n      isAddingNewOutline,\n      updateOutlines,\n      addNewOutline,\n    } = useContext(OutlineContext);\n    const [isExpanded, setIsExpanded] = useState(false);\n    const [isEditingName, setIsEditingName] = useState(false);\n    const [showHoverBackground, setShowHoverBackground] = useState(false);\n    const dispatch = useDispatch();\n    const [t] = useTranslation();\n\n    const elementRef = useRef(null);\n    connectDragSource(elementRef);\n    connectDropTarget(elementRef);\n    const opacity = isDragging ? 0 : 1;\n    useImperativeHandle(ref, () => ({\n      getNode: () => elementRef.current,\n    }));\n\n    useEffect(() => {\n    // automatically sets the current outline to be expanded in two cases\n    // 1. another outline is nested into this outline (by listening to the change of selectedOutlinePath)\n    // 2. a new child outline is going to be added (by listening to the change of isAddingNewOutline)\n      const path = outlineUtils.getPath(outline);\n\n      if (\n        selectedOutlinePath !== null &&\n      selectedOutlinePath !== path &&\n      selectedOutlinePath.startsWith(path)\n      ) {\n        setIsExpanded(true);\n      }\n    }, [selectedOutlinePath, isAddingNewOutline, outline]);\n\n    useLayoutEffect(() => {\n      setIsEditingName(false);\n    }, [outlines]);\n\n    const handleClickExpand = useCallback(function() {\n      setIsExpanded(expand => !expand);\n    }, []);\n\n    const handleArrowKeyPress = useCallback(function(event) {\n      if (event.key === 'Enter') {\n        handleClickExpand();\n      }\n    });\n\n    const handleOutlineClick = useCallback(\n      function() {\n        core.goToOutline(outline);\n        setSelectedOutlinePath(outlineUtils.getPath(outline));\n\n        if (isMobile()) {\n          dispatch(actions.closeElement('leftPanel'));\n        }\n      },\n      [dispatch, setSelectedOutlinePath, outline],\n    );\n    const handleOutlineKeyPress = event => {\n      if (event.key === 'Enter') {\n        handleOutlineClick();\n      }\n    }\n    function handleOutlineDoubleClick() {\n      if (!core.isFullPDFEnabled()||!outlineEditingEnabled) {\n        return;\n      }\n\n      setIsEditingName(true);\n    }\n\n    async function changeOutlineName(e) {\n      const newName = e.target.value;\n\n      if (!newName || outline.getName() === newName) {\n        setIsEditingName(false);\n        return;\n      }\n\n      await outlineUtils.setOutlineName(outlineUtils.getPath(outline), newName);\n      updateOutlines();\n    }\n\n    const isSelected = isOutlineSelected(outline);\n\n    return (\n      <div\n        className=\"Outline\"\n        style={{ opacity }}\n      >\n        <div className=\"padding\">\n          {(outline.getChildren().length > 0 ) && (\n            <div\n              className={classNames({\n                arrow: true,\n                expanded: isExpanded,\n              })}\n            tabIndex={0}\n            onClick={handleClickExpand}\n            onKeyPress={handleArrowKeyPress}\n            >\n              <Icon glyph=\"ic_chevron_right_black_24px\" />\n            </div>\n          )}\n        </div>\n        <div className={classNames({ content: true, editable: core.isFullPDFEnabled() && outlineEditingEnabled})}>\n          {isDraggedUpwards && <div style={{ borderTop: '1px solid #bbb' }}/>}\n          {isEditingName ? (\n            <OutlineTextInput\n              defaultValue={outline.getName()}\n              onEscape={() => setIsEditingName(false)}\n              onEnter={changeOutlineName}\n              onBlur={changeOutlineName}\n            />\n          ) : (\n            <div className={classNames({ row: true, selected: isSelected, hover: showHoverBackground && !isSelected })} ref={elementRef} onKeyPress={handleOutlineKeyPress} tabIndex={0}>\n              <Button\n                className=\"contentButton\"\n                onDoubleClick={handleOutlineDoubleClick}\n                label={outline.getName()}\n                useI18String={false}\n                onClick={handleOutlineClick}\n                tabIndex={-1}\n              />\n              <OutlineEditButton\n                outline={outline}\n                setIsEditingName={setIsEditingName}\n                onPopupOpen={() => setShowHoverBackground(true)}\n                onPopupClose={() => setShowHoverBackground(false)}\n              />\n            </div>\n          )}\n          {isDraggedDownwards && <div style={{ borderTop: '1px solid #bbb' }}/>}\n          {isExpanded &&\n          outline.getChildren().map(outline =>\n            <DropOutine\n              outline={outline}\n              key={outlineUtils.getOutlineId(outline)}\n              moveOutlineInward={moveOutlineInward}\n              moveOutlineBeforeTarget={moveOutlineBeforeTarget}\n              moveOutlineAfterTarget={moveOutlineAfterTarget}\n            />)\n          }\n          {isAddingNewOutline && isSelected && (\n            <OutlineTextInput\n              defaultValue={t('message.untitled')}\n              onEscape={() => setIsAddingNewOutline(false)}\n              onEnter={addNewOutline}\n              onBlur={addNewOutline}\n            />\n          )}\n        </div>\n      </div>\n    );\n  });\n\nOutline.propTypes = propTypes;\n\nfunction OutlineEditButton({ outline, setIsEditingName, onPopupOpen, onPopupClose }) {\n  const [isOpen, setIsOpen] = useState(false);\n  useEffect(() => {\n    if (isOpen) {\n      onPopupOpen();\n    } else {\n      onPopupClose();\n    }\n  }, [isOpen, onPopupOpen, onPopupClose]);\n  function handleButtonClick() {\n    setIsOpen(open => !open);\n  }\n  const trigger = `edit-button-${outlineUtils.getPath(outline)}`;\n  return (\n    <DataElementWrapper className=\"editOutlineButton\" dataElement=\"editOutlineButton\">\n      <Button dataElement={trigger} img=\"icon-tool-more\" onClick={handleButtonClick} tabIndex={-1}/>\n      {isOpen && (\n        <OutlineEditPopup\n          outline={outline}\n          trigger={trigger}\n          setIsOpen={setIsOpen}\n          setIsEditingName={setIsEditingName}\n        />\n      )}\n    </DataElementWrapper>\n  );\n}\nOutlineEditButton.propTypes = {\n  outline: PropTypes.object.isRequired,\n  setIsEditingName: PropTypes.func.isRequired,\n  onPopupOpen: PropTypes.func.isRequired,\n  onPopupClose: PropTypes.func.isRequired,\n};\n\nconst DropOutine = DropTarget(ItemTypes.OUTLINE, {\n  hover(props, dragSourceState, outlineComponentInstance) {\n    if (!outlineComponentInstance) {\n      return null;\n    }\n\n    if (dragSourceState.getItem() === null) {\n      return;\n    }\n\n    // node = HTML Div element from imperative API\n    const node = outlineComponentInstance.getNode();\n    if (!node) {\n      return null;\n    }\n    dragSourceState.getItem().node = node;\n    const dragIndex = dragSourceState.getItem().outline.index;\n    const hoverIndex = props.outline.index;\n    if (dragSourceState.getItem().outline.parent === props.outline.parent && dragIndex === hoverIndex) {\n      return;\n    }\n\n    // Determine rectangle on screen\n    const dropTargetBoundingRect = node.getBoundingClientRect();\n    // Get vertical middle\n    const dropTargetYMidPoint = (dropTargetBoundingRect.bottom - dropTargetBoundingRect.top) / 2;\n    // Determine mouse position\n    const clientOffset = dragSourceState.getClientOffset();\n    // Get pixels to the top\n    const dropTargetClientY = clientOffset.y - dropTargetBoundingRect.top;\n    switch (true) {\n      case  dropTargetClientY <= dropTargetYMidPoint + BUFFER_ROOM && dropTargetClientY >= dropTargetYMidPoint - BUFFER_ROOM:\n        dragSourceState.getItem().dropLocation = DropLocation.ON_TARGET_HORIZONTAL_MIDPOINT;\n        node.style.backgroundColor = '#bbb';\n        setTimeout(() => {\n          if (dragSourceState.getItem()?.node !== node) {\n            node.style.backgroundColor = 'transparent';\n          }\n        }, 100);\n        break;\n      case dropTargetClientY > dropTargetYMidPoint + BUFFER_ROOM:\n        dragSourceState.getItem().dropLocation = DropLocation.BELOW_TARGET;\n        node.style.backgroundColor = 'transparent';\n        break;\n      case dropTargetClientY < dropTargetYMidPoint - BUFFER_ROOM:\n        dragSourceState.getItem().dropLocation = DropLocation.ABOVE_TARGET;\n        node.style.backgroundColor = 'transparent';\n        break;\n      default:\n        dragSourceState.getItem().dropLocation = DropLocation.INITIAL;\n        node.style.backgroundColor = 'transparent';\n        break;\n    }\n    fireEvent(Events.DRAG_OUTLINE,\n      {\n        targetOutline: props.outline,\n        draggedOutline: dragSourceState.getItem().outline,\n        dropLocation: dragSourceState.getItem().dropLocation\n      }\n    );\n  },\n  drop(props, dragSourceState, outlineComponentInstance) {\n    if (!outlineComponentInstance) {\n      return null;\n    }\n    const { outline, moveOutlineInward, moveOutlineBeforeTarget, moveOutlineAfterTarget } = props;\n    switch (dragSourceState.getItem().dropLocation) {\n      case DropLocation.ON_TARGET_HORIZONTAL_MIDPOINT:\n        moveOutlineInward(dragSourceState.getItem().outline, outline);\n        break;\n      case DropLocation.ABOVE_TARGET:\n        moveOutlineBeforeTarget(dragSourceState.getItem().outline, outline);\n        break;\n      case DropLocation.BELOW_TARGET:\n        moveOutlineAfterTarget(dragSourceState.getItem().outline, outline);\n        break;\n    }\n    dragSourceState.getItem().node.style.backgroundColor = 'transparent';\n    fireEvent(Events.DROP_OUTLINE,\n      {\n        targetOutline: outline,\n        draggedOutline: dragSourceState.getItem().outline,\n        dropLocation: dragSourceState.getItem().dropLocation\n      }\n    );\n    dragSourceState.getItem().dropLocation = DropLocation.INITIAL;\n  }\n}, (connect, dropTargetState) => ({\n  connectDropTarget: connect.dropTarget(),\n  // check if the position of drag card higher than the position of the hovered card\n  isDraggedUpwards: dropTargetState.isOver({ shallow: true }) && (dropTargetState.getItem()?.dropLocation === DropLocation.ABOVE_TARGET),\n  // check if the position of drag card lower than the position of the hovered card\n  isDraggedDownwards: dropTargetState.isOver({ shallow: true }) && (dropTargetState.getItem()?.dropLocation === DropLocation.BELOW_TARGET),\n}))(DragSource(ItemTypes.OUTLINE, {\n  beginDrag: props => ({\n    id: props.id,\n    outline: props.outline,\n    dropLocation: DropLocation.INITIAL,\n  }),\n  canDrag(props) {\n    if (!core.isFullPDFEnabled() && !isIE) {\n      console.warn('Full API must be enabled to drag and drop outlines');\n    } else if (isIE) {\n      console.warn('Drag and drop outlines for IE11 is not supported');\n    } else if (!props.outlineEditingEnabled) {\n      console.warn('Drag and drop outlines disabled');\n    }\n    // enable fullPdfEnabled and disable IE\n    return core.isFullPDFEnabled() && !isIE && props.outlineEditingEnabled;\n  }\n}, (connect, dragSourceState) => ({\n  connectDragSource: connect.dragSource(),\n  isDragging: dragSourceState.isDragging(),\n}))(Outline));\n\nexport default DropOutine;\n","import { invariant } from '@react-dnd/invariant';\nimport { TargetConnector, DropTargetMonitorImpl, registerTarget } from '../internals';\nimport { isPlainObject, isValidType } from './utils';\nimport { checkDecoratorArguments } from './utils';\nimport { decorateHandler } from './decorateHandler';\nimport { createTargetFactory } from './createTargetFactory';\n/**\n * @param type The accepted target type\n * @param spec The DropTarget specification\n * @param collect The props collector function\n * @param options Options\n */\n\nexport function DropTarget(type, spec, collect) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  checkDecoratorArguments('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n  var getType = type;\n\n  if (typeof type !== 'function') {\n    invariant(isValidType(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' + 'a string, an array of strings, or a function that returns either given ' + 'the current props. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', type);\n\n    getType = function getType() {\n      return type;\n    };\n  }\n\n  invariant(isPlainObject(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', spec);\n  var createTarget = createTargetFactory(spec);\n  invariant(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', collect);\n  invariant(isPlainObject(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', collect);\n  return function decorateTarget(DecoratedComponent) {\n    return decorateHandler({\n      containerDisplayName: 'DropTarget',\n      createHandler: createTarget,\n      registerHandler: registerTarget,\n      createMonitor: function createMonitor(manager) {\n        return new DropTargetMonitorImpl(manager);\n      },\n      createConnector: function createConnector(backend) {\n        return new TargetConnector(backend);\n      },\n      DecoratedComponent: DecoratedComponent,\n      getType: getType,\n      collect: collect,\n      options: options\n    });\n  };\n}","import { invariant } from '@react-dnd/invariant';\nimport { registerSource, DragSourceMonitorImpl, SourceConnector } from '../internals';\nimport { checkDecoratorArguments, isPlainObject, isValidType } from './utils';\nimport { decorateHandler } from './decorateHandler';\nimport { createSourceFactory } from './createSourceFactory';\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\n\nexport function DragSource(type, spec, collect) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  checkDecoratorArguments('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n  var getType = type;\n\n  if (typeof type !== 'function') {\n    invariant(isValidType(type), 'Expected \"type\" provided as the first argument to DragSource to be ' + 'a string, or a function that returns a string given the current props. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', type);\n\n    getType = function getType() {\n      return type;\n    };\n  }\n\n  invariant(isPlainObject(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', spec);\n  var createSource = createSourceFactory(spec);\n  invariant(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', collect);\n  invariant(isPlainObject(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', collect);\n  return function decorateSource(DecoratedComponent) {\n    return decorateHandler({\n      containerDisplayName: 'DragSource',\n      createHandler: createSource,\n      registerHandler: registerSource,\n      createConnector: function createConnector(backend) {\n        return new SourceConnector(backend);\n      },\n      createMonitor: function createMonitor(manager) {\n        return new DragSourceMonitorImpl(manager);\n      },\n      DecoratedComponent: DecoratedComponent,\n      getType: getType,\n      collect: collect,\n      options: options\n    });\n  };\n}","import Outline from './Outline';\n\nexport default Outline;\n","import React, { useState, useLayoutEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { DndProvider } from 'react-dnd';\nimport { isMobileDevice } from 'helpers/device';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport TouchBackEnd from 'react-dnd-touch-backend';\nimport OutlineControls from '../OutlineControls';\nimport Outline from 'components/Outline';\nimport OutlineContext from 'components/Outline/Context';\nimport Icon from 'components/Icon';\nimport Button from 'components/Button';\nimport OutlineTextInput from 'components/OutlineTextInput';\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport core from 'core';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport DataElements from 'constants/dataElement';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport '../../constants/bookmarksOutlinesShared.scss';\nimport './OutlinesPanel.scss';\n\nfunction OutlinesPanel() {\n  const isDisabled = useSelector(state => selectors.isElementDisabled(state, DataElements.OUTLINE_PANEL));\n  const outlines = useSelector(state => selectors.getOutlines(state));\n  const outlineControlVisibility = useSelector(state => selectors.isOutlineControlVisible(state));\n  const outlineEditingEnabled = useSelector(state => selectors.getIsOutlineEditing(state));\n  const [selectedOutlinePath, setSelectedOutlinePath] = useState(null);\n  const [isAddingNewOutline, setIsAddingNewOutline] = useState(false);\n  const [isMultiSelectionMode, setMultiSelectionMode] = useState(false);\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n  const nextPathRef = useRef(null);\n\n  // use layout effect to avoid flickering in the panel\n  useLayoutEffect(() => {\n    setIsAddingNewOutline(false);\n\n    if (nextPathRef.current !== null) {\n      setSelectedOutlinePath(nextPathRef.current);\n      nextPathRef.current = null;\n    }\n  }, [outlines]);\n\n  const addNewOutline = async (e) => {\n    const name = e.target.value;\n\n    if (!name) {\n      setIsAddingNewOutline(false);\n      return;\n    }\n\n    const currentPage = core.getCurrentPage();\n    let nextPath;\n    if (outlines.length === 0) {\n      nextPath = await outlineUtils.addRootOutline(name, currentPage);\n    } else {\n      nextPath = await outlineUtils.addNewOutline(name, selectedOutlinePath, currentPage);\n    }\n\n    nextPathRef.current = nextPath;\n    updateOutlines();\n  }\n\n  const updateOutlines = () => {\n    core.getOutlines(outlines => {\n      dispatch(actions.setOutlines(outlines));\n    });\n  }\n\n  const generalMoveOutlineAction = (dragOutline, dropOutline, moveDirection) => {\n    const dragPath = outlineUtils.getPath(dragOutline);\n    const dropPath = outlineUtils.getPath(dropOutline);\n    moveDirection.call(outlineUtils, dragPath, dropPath).then(path => {\n      updateOutlines();\n      nextPathRef.current = path;\n    });\n    core.goToOutline(dragOutline);\n  }\n\n  const moveOutlineAfterTarget = (dragOutline, dropOutline) => {\n    generalMoveOutlineAction(dragOutline, dropOutline, outlineUtils.moveOutlineAfterTarget);\n  }\n\n  const moveOutlineBeforeTarget = (dragOutline, dropOutline) => {\n    generalMoveOutlineAction(dragOutline, dropOutline, outlineUtils.moveOutlineBeforeTarget);\n  }\n\n  const moveOutlineInward = (dragOutline, dropOutline) => {\n    generalMoveOutlineAction(dragOutline, dropOutline, outlineUtils.moveOutlineInTarget);\n  }\n\n  if (isDisabled) {\n    return null;\n  }\n\n  return (\n    <div\n      className=\"Panel OutlinesPanel bookmark-outline-panel\"\n      data-element={DataElements.OUTLINE_PANEL}\n    >\n      <div className=\"bookmark-outline-panel-header\">\n        <div className=\"header-title\">\n          {t('component.outlinesPanel')}\n        </div>\n      </div>\n      <OutlineContext.Provider\n        value={{\n          setSelectedOutlinePath,\n          selectedOutlinePath,\n          setIsAddingNewOutline,\n          isAddingNewOutline,\n          isOutlineSelected: outline => outlineUtils.getPath(outline) === selectedOutlinePath,\n          addNewOutline,\n          updateOutlines,\n        }}\n      >\n        {outlineControlVisibility && <OutlineControls />}\n        <DndProvider backend={isMobileDevice ? TouchBackEnd : HTML5Backend}>\n          <div className=\"Outlines bookmark-outline-row\">\n            {!isAddingNewOutline && outlines.length === 0 && (\n              <div className=\"msg msg-no-bookmark-outline\">{t('message.noOutlines')}</div>\n            )}\n            {outlines.map(outline => (\n              <Outline\n                key={outlineUtils.getOutlineId(outline)}\n                outline={outline}\n                outlineEditingEnabled={outlineEditingEnabled}\n                moveOutlineInward={moveOutlineInward}\n                moveOutlineBeforeTarget={moveOutlineBeforeTarget}\n                moveOutlineAfterTarget={moveOutlineAfterTarget}\n              />\n            ))}\n            {isAddingNewOutline && selectedOutlinePath === null && (\n              <OutlineTextInput\n                className=\"marginLeft\"\n                defaultValue={t('message.untitled')}\n                onEnter={addNewOutline}\n                onEscape={() => setIsAddingNewOutline(false)}\n                onBlur={addNewOutline}\n              />\n            )}\n          </div>\n        </DndProvider>\n        <DataElementWrapper\n          className=\"bookmark-outline-footer\"\n          dataElement=\"addNewOutlineButtonContainer\"\n        >\n          <Button\n            dataElement=\"addNewOutlineButton\"\n            className=\"bookmark-outline-control-button add-new-button\"\n            img=\"icon-menu-add\"\n            disabled={isAddingNewOutline || isMultiSelectionMode}\n            label={`${t('action.add')} ${t('component.outlinePanel')}`}\n            onClick={() => setIsAddingNewOutline(true)}\n          />\n        </DataElementWrapper>\n      </OutlineContext.Provider>\n    </div>\n  );\n}\n\nexport default React.memo(OutlinesPanel);\n","import OutlinesPanel from './OutlinesPanel';\n\nexport default OutlinesPanel;\n","import React, { useState, useRef, useEffect, useCallback, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { createPortal } from 'react-dom';\n\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport getOverlayPositionBasedOn from 'helpers/getOverlayPositionBasedOn';\n\nimport './BookmarkOutlineContextMenuPopup.scss';\nimport Button from '../Button';\n\n\nconst BookmarkOutlineContextMenuPopup = ({\n  type,\n  anchorButton,\n  onClosePopup,\n  onRenameClick,\n  onSetDestinationClick,\n  onDeleteClick,\n}) => {\n  const [t] = useTranslation();\n  const containerRef = useRef(null);\n  const [position, setPosition] = useState({ left: -100, right: 'auto', top: 'auto' });\n\n  const Portal = ({ children, position }) => {\n    const mount = document.getElementById('outline-edit-popup-portal');\n    mount.style.position = 'absolute';\n    mount.style.top = position.top === 'auto' ? position.top : `${position.top}px`\n    mount.style.left = position.left === 'auto' ? position.left : `${position.left}px`\n    mount.style.right = position.right === 'auto' ? position.right : `${position.right}px`\n    mount.style.zIndex = 999;\n\n    return createPortal(children, mount);\n  };\n\n  useEffect(() => {\n    const position = getOverlayPositionBasedOn(anchorButton, containerRef);\n    setPosition(position);\n  }, [anchorButton]);\n\n  const onClickOutside = useCallback(e => {\n    if (!containerRef?.current.contains(e.target)) {\n      onClosePopup();\n    }\n  });\n\n  useOnClickOutside(containerRef, onClickOutside);\n\n  return (\n    <Portal position={position}>\n      <DataElementWrapper\n        ref={containerRef}\n        className=\"bookmark-outline-context-menu-popup\"\n        dataElement={`${type}EditPopup`}\n      >\n        <Button\n          className=\"option-button\"\n          dataElement={`${type}RenameButton`}\n          img=\"ic_edit_page_24px\"\n          label={t('action.rename')}\n          ariaLabel={t('action.rename')}\n          onClick={e => onRenameClick(e)}\n        />\n        {type === \"outline\" &&\n          <Button\n            className=\"option-button\"\n            dataElement={`${type}RenameButton`}\n            img=\"icon-thumbtack\"\n            label={t('action.setDestination')}\n            ariaLabel={t('action.setDestination')}\n            onClick={() => onSetDestinationClick(type)}\n          />\n        }\n        <Button\n          className=\"option-button\"\n          dataElement={`${type}DeleteButton`}\n          img=\"icon-delete-line\"\n          label={t('action.delete')}\n          ariaLabel={t('action.delete')}\n          onClick={e => onDeleteClick(e)}\n        />\n      </DataElementWrapper>\n    </Portal>\n  );\n}\n\nexport default BookmarkOutlineContextMenuPopup;\n","import BookmarkOutlineContextMenuPopup from './BookmarkOutlineContextMenuPopup';\n\nexport default BookmarkOutlineContextMenuPopup;\n","import Choice from './Choice';\n\nexport default Choice;","import React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport core from 'core';\n\nimport './Bookmark.scss';\nimport Button from '../Button';\nimport DataElementWrapper from '../DataElementWrapper';\nimport BookmarkOutlineContextMenuPopup from '../BookmarkOutlineContextMenuPopup';\nimport Choice from 'components/Choice';\n\nconst Bookmark = ({\n  text,\n  label,\n  defaultLabel,\n  pageIndex,\n  isAdding,\n  isMultiSelectionMode,\n  setSelected,\n  onSave,\n  onRemove,\n  onCancel,\n}) => {\n  const [t] = useTranslation();\n\n  const [isEditing, setIsEditing] = useState(false);\n  const [isDefault, setIsDefault] = useState(false);\n  const [bookmarkText, setBookmarkText] = useState(text);\n  const [isContextMenuOpen, setContextMenuOpen] = useState(false);\n  const [clearSingleClick, setClearSingleClick] = useState(undefined);\n  const inputRef = useRef();\n\n  const handleKeyDown = (e) => {\n    if (e.keyCode === 13) {\n      onSaveBookmark();\n    }\n    if (e.keyCode === 27) {\n      onCancelBookmark();\n    }\n  }\n\n  const onSaveBookmark = () => {\n    setIsEditing(false);\n    onSave(bookmarkText || t('message.untitled'));\n  }\n\n  const onCancelBookmark = () => {\n    setIsEditing(false);\n    // on cancel reset local bookmark text\n    isEditing && setBookmarkText(text);\n    isAdding && onCancel();\n  };\n\n  useEffect(() => {\n    if (bookmarkText !== text) {\n      setBookmarkText(text);\n    }\n  }, [text]);\n\n  useEffect(() => {\n    if (isAdding || isEditing) {\n      inputRef.current.focus();\n      inputRef.current.select();\n    }\n\n    if (!isAdding && !isEditing) {\n      setIsDefault(true);\n    } else {\n      setIsDefault(false);\n    }\n  }, [isEditing]);\n\n  return (\n    <DataElementWrapper\n      className={classNames({\n        'bookmark-outline-single-container': true,\n        'adding': isAdding,\n        'editing': isEditing,\n        'default': isDefault,\n        'hover': isContextMenuOpen,\n      })}\n      onClick={e => {\n        if (isDefault && e.detail === 1) {\n          setClearSingleClick(setTimeout(() => {\n            core.setCurrentPage(pageIndex + 1);\n          }, 300))\n        }\n      }}\n      onDoubleClick={() => {\n        if (isDefault) {\n          clearTimeout(clearSingleClick)\n        }\n      }}\n    >\n      {isMultiSelectionMode &&\n        <Choice\n          type=\"checkbox\"\n          className=\"bookmark-outline-checkbox\"\n          id={`bookmark-checkbox-${pageIndex + 1}`}\n          onClick={e => e.stopPropagation()}\n          onChange={e => setSelected(pageIndex, e.target.checked)}\n        />\n      }\n\n      <div className=\"bookmark-outline-label-row\">\n        <div className=\"bookmark-outline-label\">{(isAdding || isEditing) ? label : defaultLabel}</div>\n\n        {isDefault &&\n          <>\n            {isMultiSelectionMode &&\n              <Button\n                className=\"bookmark-outline-more-button\"\n                dataElement={`bookmark-more-button-${pageIndex}`}\n                img=\"icon-pencil-line\"\n                onClick={e => {\n                  e.stopPropagation();\n                  setIsEditing(true);\n                }}\n                tabIndex={-1}\n              />\n            }\n            {!isMultiSelectionMode &&\n              <Button\n                className=\"bookmark-outline-more-button\"\n                dataElement={`bookmark-more-button-${pageIndex}`}\n                img=\"icon-tool-more\"\n                onClick={e => {\n                  e.stopPropagation();\n                  setContextMenuOpen(true);\n                }}\n                tabIndex={-1}\n              />\n            }\n            {isContextMenuOpen && (\n              <BookmarkOutlineContextMenuPopup\n                type={'bookmark'}\n                anchorButton={`bookmark-more-button-${pageIndex}`}\n                onClosePopup={() => setContextMenuOpen(false)}\n                onRenameClick={e => {\n                  e.stopPropagation();\n                  setContextMenuOpen(false);\n                  setIsEditing(true);\n                }}\n                onDeleteClick={e => {\n                  e.stopPropagation();\n                  setContextMenuOpen(false);\n                  onRemove(pageIndex);\n                }}\n              />\n            )}\n\n            <div\n              className=\"bookmark-outline-text\"\n              onDoubleClick={() => setIsEditing(true)}\n            >\n              {text}\n            </div>\n          </>\n        }\n\n        {(isAdding || isEditing) &&\n          <>\n            <input\n              type=\"text\"\n              name=\"bookmark\"\n              ref={inputRef}\n              className=\"bookmark-outline-input\"\n              placeholder={t('component.bookmarkTitle')}\n              aria-label={t('action.name')}\n              value={bookmarkText}\n              onKeyDown={handleKeyDown}\n              onChange={e => setBookmarkText(e.target.value)}\n            />\n\n            <div className=\"bookmark-outline-editing-controls\">\n              <Button\n                className=\"bookmark-outline-cancel-button\"\n                label={t('action.cancel')}\n                onClick={onCancelBookmark}\n              />\n              {isAdding &&\n                <Button\n                  className=\"bookmark-outline-save-button\"\n                  label={t('action.add')}\n                  isSubmitType={true}\n                  onClick={onSaveBookmark}\n                />\n              }\n              {isEditing &&\n                <Button\n                  className=\"bookmark-outline-save-button\"\n                  label={t('action.save')}\n                  isSubmitType={true}\n                  disabled={bookmarkText === text}\n                  onClick={onSaveBookmark}\n                />\n              }\n            </div>\n          </>\n        }\n      </div>\n    </DataElementWrapper>\n  )\n}\n\nexport default Bookmark;\n","import Bookmark from './Bookmark';\n\nexport default Bookmark;\n","import React, { useEffect, useState } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport Bookmark from 'components/Bookmark';\nimport Button from 'components/Button';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport DataElements from 'constants/dataElement';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport '../../constants/bookmarksOutlinesShared.scss';\nimport './BookmarksPanel.scss';\n\nconst BookmarksPanel = () => {\n  const [isDisabled, bookmarks, currentPageIndex, pageLabels] = useSelector(\n    state => [\n      selectors.isElementDisabled(state, DataElements.BOOKMARK_PANEL),\n      selectors.getBookmarks(state),\n      selectors.getCurrentPage(state) - 1,\n      selectors.getPageLabels(state),\n    ],\n    shallowEqual,\n  );\n\n  const [isAddingNewBookmark, setAddingNewBookmark] = useState(false);\n  const [isMultiSelectionMode, setMultiSelectionMode] = useState(false);\n  const [selectingBookmarks, setSelectingBookmarks] = useState([]);\n\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n\n  const pageIndexes = Object.keys(bookmarks).map(pageIndex => parseInt(pageIndex, 10));\n\n  useEffect(() => {\n    // if bookmark is deleted from the shortcut, should also remove from selectingBookmarks\n    selectingBookmarks.forEach(index => {\n      if (!pageIndexes.includes(index)) {\n        setSelectingBookmarks(selectingBookmarks.filter(bm => bm !== index))\n      }\n    });\n  }, [bookmarks]);\n\n  const onRemoveBookmarks = (pageIndexes) => {\n    const title = t('warning.deleteBookmark.title');\n    const message = t('warning.deleteBookmark.message');\n    const confirmationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        pageIndexes.forEach(pageIndex => dispatch(actions.removeBookmark(pageIndex)));\n        setSelectingBookmarks([]);\n      },\n      confirmBtnText: t('action.delete'),\n    };\n    dispatch(actions.showWarningMessage(confirmationWarning));\n  }\n\n  if (isDisabled) {\n    return null;\n  }\n\n  return (\n    <div\n      className=\"Panel BookmarksPanel bookmark-outline-panel\"\n      data-element={DataElements.BOOKMARK_PANEL}\n    >\n      <div className=\"bookmark-outline-panel-header\">\n        <div className=\"header-title\">\n          {t('component.bookmarksPanel')}\n        </div>\n        {!isMultiSelectionMode &&\n          <Button\n            className=\"bookmark-outline-control-button header-edit-button\"\n            label={t('action.edit')}\n            disabled={isAddingNewBookmark || pageIndexes.length === 0}\n            onClick={() => setMultiSelectionMode(true)}\n          />\n        }\n        {isMultiSelectionMode &&\n          <Button\n            className=\"bookmark-outline-control-button header-edit-button\"\n            label={t('option.bookmarkOutlineControls.done')}\n            disabled={isAddingNewBookmark}\n            onClick={() => {\n              setMultiSelectionMode(false);\n              setSelectingBookmarks([]);\n            }}\n          />\n        }\n      </div>\n\n      {!isAddingNewBookmark && pageIndexes.length === 0 && (\n        <div className=\"msg msg-no-bookmark-outline\">{t('message.noBookmarks')}</div>\n      )}\n\n      <div className=\"bookmark-outline-row\">\n        {isAddingNewBookmark &&\n          <Bookmark\n            isAdding={true}\n            label={`${t('component.bookmarkPage')} ${pageLabels[currentPageIndex]} - ${t('component.bookmarkTitle')}`}\n            text={bookmarks[currentPageIndex] ?? \"\"}\n            pageIndex={currentPageIndex}\n            onSave={newText => {\n              dispatch(actions.addBookmark(currentPageIndex, newText));\n              setAddingNewBookmark(false);\n            }}\n            onCancel={() => setAddingNewBookmark(false)}\n          />\n        }\n\n        {pageIndexes.map(pageIndex => (\n          <Bookmark\n            key={pageIndex}\n            isMultiSelectionMode={isMultiSelectionMode}\n            label={`${t('component.bookmarkPage')} ${pageLabels[pageIndex]} - ${t('component.bookmarkTitle')}`}\n            defaultLabel={`${t('component.bookmarkPage')} ${pageLabels[pageIndex]}`}\n            text={bookmarks[pageIndex]}\n            pageIndex={pageIndex}\n            onSave={newText => dispatch(actions.editBookmark(pageIndex, newText))}\n            onRemove={index => onRemoveBookmarks([index])}\n            setSelected={(index, val) => {\n              if (selectingBookmarks.find(bm => bm === index)) {\n                if (!val) {\n                  setSelectingBookmarks(selectingBookmarks.filter(bm => bm !== index));\n                }\n              } else {\n                if (val) {\n                  setSelectingBookmarks([...selectingBookmarks, index]);\n                }\n              }\n            }}\n          />\n        ))}\n      </div>\n\n      <DataElementWrapper\n        className=\"bookmark-outline-footer\"\n        dataElement=\"addNewBookmarkButtonContainer\"\n      >\n        {isMultiSelectionMode &&\n          <>\n            <Button\n              dataElement=\"newBookmarkButton\"\n              className=\"multi-selection-button\"\n              img=\"icon-menu-add\"\n              disabled={selectingBookmarks.length > 0 || !!bookmarks[currentPageIndex]}\n              onClick={() => setAddingNewBookmark(true)}\n            />\n            <Button\n              dataElement=\"newBookmarkButton\"\n              className=\"multi-selection-button\"\n              img=\"icon-delete-line\"\n              disabled={selectingBookmarks.length === 0}\n              onClick={() => onRemoveBookmarks(selectingBookmarks)}\n            />\n          </>\n        }\n        {!isMultiSelectionMode &&\n          <Button\n            dataElement=\"newBookmarkButton\"\n            className=\"bookmark-outline-control-button add-new-button\"\n            img=\"icon-menu-add\"\n            label={`${t('action.add')} ${t('component.bookmarkPanel')}`}\n            disabled={isAddingNewBookmark || !!bookmarks[currentPageIndex]}\n            onClick={() => setAddingNewBookmark(true)}\n          />\n        }\n      </DataElementWrapper>\n    </div>\n  );\n}\n\nexport default BookmarksPanel;\n","import BookmarksPanel from './BookmarksPanel';\n\nexport default BookmarksPanel;\n","const updateChildrenDisabledState = parentLayer => {\n  const newParentLayer = { ...parentLayer };\n  newParentLayer.children && newParentLayer.children.forEach((childLayer, i) => {\n    let newChildLayer = { ...childLayer };\n    if (!newChildLayer.locked) {\n      newChildLayer.disabled = !newParentLayer.visible;\n      newChildLayer = updateChildrenDisabledState(newChildLayer);\n    }\n    newParentLayer.children[i] = newChildLayer;\n  });\n  return newParentLayer;\n};\n\nconst updateChildrenVisibilityState = parentLayer => {\n  const newParentLayer = { ...parentLayer };\n  newParentLayer.children && newParentLayer.children.forEach((childLayer, i) => {\n    let newChildLayer = { ...childLayer };\n    if (newParentLayer.visible) {\n      newChildLayer.visible = !!newChildLayer.prevVisibleState;\n    } else {\n      newChildLayer.visible = false;\n    }\n    newChildLayer = updateChildrenVisibilityState(newChildLayer);\n    newParentLayer.children[i] = newChildLayer;\n  });\n  return newParentLayer;\n};\n\nexport function updateLayerVisibililty(layerToUpdate, newVisibililtyState) {\n  if (layerToUpdate.locked || layerToUpdate.disabled) {\n    return layerToUpdate;\n  }\n  let newLayer = { ...layerToUpdate };\n  newLayer.visible = newVisibililtyState;\n  newLayer.prevVisibleState = newLayer.visible;\n  if (newLayer.children && newLayer.children.length > 0) {\n    newLayer = updateChildrenVisibilityState(newLayer);\n    newLayer = updateChildrenDisabledState(newLayer);\n  }\n  return newLayer;\n}","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport { useID } from '../../hooks/useID';\nexport var Label = function (_a) {\n    var label = _a.label, optionalText = _a.optionalText, children = _a.children, className = _a.className, htmlFor = _a.htmlFor, props = __rest(_a, [\"label\", \"optionalText\", \"children\", \"className\", \"htmlFor\"]);\n    var childrenId = children === null || children === void 0 ? void 0 : children.props.id;\n    var id = useID(childrenId);\n    var labelClass = classnames('ui__base ui__label', { 'ui__label--disabled': children === null || children === void 0 ? void 0 : children.props.disabled, 'ui__label--attached': children }, className);\n    return (React.createElement(React.Fragment, null,\n        React.createElement(\"label\", __assign({}, props, { className: labelClass, htmlFor: htmlFor !== null && htmlFor !== void 0 ? htmlFor : id }),\n            label,\n            optionalText ? React.createElement(\"span\", { className: \"ui__label__optional\" }, optionalText) : undefined),\n        children ? cloneElement(children, { id: id }) : undefined));\n};\n","import React , { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport Tooltip from 'components/Tooltip';\nimport Choice from 'components/Choice';\nimport { useTranslation } from 'react-i18next';\nimport { updateLayerVisibililty } from './updateLayerVisibililty';\nimport { Label } from '@pdftron/webviewer-react-toolkit';\nimport DataElementWrapper from '../DataElementWrapper';\nimport './Layer.scss';\n\nconst propTypes = {\n  layer: PropTypes.object,\n  layerUpdated: PropTypes.func,\n};\nfunction Layer(props) {\n  const { layer, layerUpdated } = props;\n  const [isExpanded, setExpanded] = useState(false);\n  const [t] = useTranslation();\n\n  const onChange = isVisible => {\n    const newLayer = updateLayerVisibililty(layer, isVisible);\n    if (layerUpdated) {\n      layerUpdated(newLayer);\n    }\n  };\n\n  const toggleExpanded = () => {\n    setExpanded(!isExpanded);\n  };\n\n  if (!layer) {\n    return null;\n  }\n  const hasSubLayers = layer && layer.children && layer.children.length > 0;\n\n  let tooltipContent = '';\n  if (layer.locked) {\n    tooltipContent = t('message.lockedLayer');\n  } else if (layer.disabled) {\n    tooltipContent = t('message.layerVisibililtyNoChange');\n  }\n\n  return (\n    <DataElementWrapper className=\"Layer\" dataElement={`layer-${layer.id}-${layer.name}`}>\n      <div className=\"parent-layer\">\n        {hasSubLayers ?  (\n          <div className=\"arrow\" onClick={toggleExpanded}>\n            { isExpanded ? <Icon glyph=\"ic_chevron_down_black_24px\" /> : <Icon glyph=\"ic_chevron_right_black_24px\" />}\n          </div>\n        ) : (\n          // create dummy icon to make aligning easier\n          <div> <Icon glyph=\"\" /> </div>\n        )}\n        <Tooltip content={tooltipContent} hideOnClick={false} forcePosition=\"bottomLeft\">\n          {/* this div is mainly to group the choice and lock icon so that tooltip will appear properly  over checkbox*/}\n          {\n            !layer.isLabel ? (\n              <div className=\"content-container\">\n                <Choice\n                  id={`${layer.id}`}\n                  label={layer.name}\n                  onChange={() => onChange(!layer.visible)}\n                  checked={layer.visible}\n                  disabled={layer.locked || layer.disabled}\n                  center\n                />\n                { layer.locked && <Icon className=\"lock-icon\" glyph=\"icon-lock\" />}\n              </div>\n            ) : (\n              <div className=\"content-container\">\n                <Label label={layer.name}></Label>\n              </div>\n            )\n          }\n        </Tooltip>\n      </div>\n      {hasSubLayers && isExpanded && (\n        <div className=\"sub-layers\">\n          {layer.children.map((subLayer, i) => (\n            <Layer\n              key={subLayer.id}\n              layer={subLayer}\n              parentLayer={layer}\n              layerUpdated={modifiedSubLayer => {\n                // new references for redux state\n                const children = [...layer.children];\n                children[i] = modifiedSubLayer;\n                const newLayer = { ...layer };\n                newLayer.children = children;\n                layerUpdated(newLayer);\n              }}\n            />\n          ))}\n        </div>\n      )}\n    </DataElementWrapper>\n  );\n}\nLayer.propTypes = propTypes;\nexport default Layer;\n","import Layer from './Layer';\n\nexport default Layer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Layer from 'components/Layer';\n\nimport './LayersPanel.scss';\nimport DataElementWrapper from '../DataElementWrapper';\n\nconst propTypes = {\n  layers: PropTypes.arrayOf(PropTypes.object),\n  setLayers: PropTypes.func,\n};\n\nfunction LayersPanel(props) {\n\n  const { layers = [], setLayers } = props;\n\n  function onLayerUpdated(updatedLayer, index) {\n    // new references for redux state\n    const newLayers = [...layers];\n    newLayers[index] = updatedLayer;\n    if (setLayers) {\n      setLayers(newLayers);\n    }\n  }\n\n  return (\n    <DataElementWrapper className=\"Panel LayersPanel\" dataElement=\"layersPanel\">\n      {layers.map((layer, i) => (\n        <Layer\n          key={layer.id}\n          layer={layer}\n          layerUpdated={updatedLayer => onLayerUpdated(updatedLayer, i)}\n        />\n      ))}\n    </DataElementWrapper>\n  );\n}\n\nLayersPanel.propTypes = propTypes;\n\nexport default LayersPanel;\n","import React, { useEffect } from 'react';\nimport LayersPanel from './LayersPanel';\n\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\n\nfunction LayersPanelRedux(props) {\n  const dispatch = useDispatch();\n\n  const [\n    layers,\n  ] = useSelector(state => [\n    selectors.getLayers(state),\n  ]);\n\n  function setLayers(updatedLayers) {\n    dispatch(actions.setLayers(updatedLayers));\n  }\n\n  useEffect(() => {\n    const doc = core.getDocument();\n    if (doc) {\n      doc.setLayersArray(layers);\n      window.documentViewer.refreshAll();\n      window.documentViewer.updateView();\n    }\n  }, [layers]);\n\n  const reduxProps = {\n    layers,\n    setLayers\n  };\n\n  return <LayersPanel {...props}{...reduxProps} />;\n}\n\nexport default LayersPanelRedux;","import LayersPanelRedux from './LayersPanelRedux';\n\nexport default LayersPanelRedux;\n","import React, { useState, useEffect, useRef, useImperativeHandle } from 'react';\nimport PropTypes from 'prop-types';\nimport Measure from 'react-measure';\nimport { CellMeasurer, CellMeasurerCache, List } from 'react-virtualized';\n\nconst propTypes = {\n  notes: PropTypes.array.isRequired,\n  children: PropTypes.func.isRequired,\n  onScroll: PropTypes.func.isRequired,\n  initialScrollTop: PropTypes.number.isRequired,\n  selectedIndex: PropTypes.number,\n  sortStrategy: PropTypes.string,\n};\n\nconst cache = new CellMeasurerCache({ defaultHeight: 50, fixedWidth: true });\n\nconst VirtualizedList = React.forwardRef(\n  ({ notes, children, onScroll, initialScrollTop, selectedIndex, sortStrategy }, forwardedRef) => {\n    const listRef = useRef();\n    const [offset, setOffset] = useState(0);\n    const [dimension, setDimension] = useState({ width: 0, height: 0 });\n    let prevWindowHeight = window.innerHeight;\n\n    useImperativeHandle(forwardedRef, () => ({\n      scrollToPosition: scrollTop => {\n        listRef.current.scrollToPosition(scrollTop);\n      },\n      scrollToRow: index => {\n        listRef.current.scrollToRow(index);\n      },\n    }));\n\n    useEffect(() => {\n      listRef.current.scrollToPosition(initialScrollTop);\n    }, [initialScrollTop]);\n\n    useEffect(() => {\n      cache.clearAll();\n      listRef?.current?.measureAllRows();\n\n      if(selectedIndex !== -1) {\n        listRef.current?.scrollToRow(selectedIndex);\n      }\n    }, [selectedIndex]);\n\n    useEffect(() => {\n      cache.clearAll();\n      listRef?.current?.measureAllRows();\n      listRef?.current?.forceUpdateGrid();\n\n    }, [notes.length, sortStrategy]);\n\n    useEffect(() => {\n      const windowResizeHandler = () => {\n        const diff = window.innerHeight - prevWindowHeight;\n        if (diff) {\n          // List height never resizes down after exiting fullscreen\n          if (window.innerHeight < prevWindowHeight) {\n            setOffset(diff);\n          }\n          prevWindowHeight = window.innerHeight;\n        }\n      };\n      window.addEventListener('resize', windowResizeHandler);\n\n      return () => {\n        window.removeEventListener('resize', windowResizeHandler);\n      };\n    });\n\n    const _resize = index => {\n      cache.clear(index);\n      listRef.current?.recomputeRowHeights(index);\n    };\n\n    const handleScroll = ({ scrollTop }) => {\n      onScroll(scrollTop);\n    };\n\n    /* eslint-disable react/prop-types */\n    const rowRenderer = ({ index, key, parent, style }) => {\n      const currNote = notes[index];\n\n      // Padding added to the right since virtualized list lets it get cut off on the right\n      return (\n        <CellMeasurer\n          key={`${key}${currNote.Id}`}\n          cache={cache}\n          columnIndex={0}\n          parent={parent}\n          rowIndex={index}\n        >\n        {({ measure }) => (    \n          <div style={{ ...style, paddingRight: '12px' }}>\n            {children(notes, index, () => {\n              _resize(index);\n              measure();\n            })}\n          </div>)}\n        </CellMeasurer>\n      );\n    };\n\n    return (\n      <Measure bounds offset onResize={({ bounds }) => {\n        setDimension({\n          ...bounds,\n          // Override height and compensate for extra size\n          height: bounds.height + offset * 2,\n        });\n        setOffset(0);\n      }}>\n        {({ measureRef }) => (\n          <div ref={measureRef} className=\"virtualized-notes-container\">\n            <List\n              deferredMeasurementCache={cache}\n              style={{ outline: 'none' }}\n              height={dimension.height - offset}\n              width={dimension.width}\n              overscanRowCount={10}\n              ref={listRef}\n              rowCount={notes.length}\n              rowHeight={cache.rowHeight}\n              rowRenderer={rowRenderer}\n              onScroll={handleScroll}\n            />\n          </div>\n        )}\n      </Measure>\n    );\n  },\n);\n\nVirtualizedList.propTypes = propTypes;\n\nexport default VirtualizedList;\n","import VirtualizedList from './VirtualizedList';\n\nexport default VirtualizedList;","import React, { useEffect, useRef, useImperativeHandle } from 'react';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n  notes: PropTypes.array.isRequired,\n  children: PropTypes.func.isRequired,\n  onScroll: PropTypes.func.isRequired,\n  initialScrollTop: PropTypes.number.isRequired,\n};\n\nconst NormalList = React.forwardRef(\n  ({ notes, children, onScroll, initialScrollTop }, forwardedRef) => {\n    const listRef = useRef();\n\n    useImperativeHandle(forwardedRef, () => ({\n      scrollToPosition: scrollTop => {\n        listRef.current.scrollTop = scrollTop;\n      },\n      scrollToRow: index => {\n        const parent = listRef.current;\n        const child = parent.children[index];\n\n        const parentRect = parent.getBoundingClientRect();\n        const childRect = child.getBoundingClientRect();\n\n        const isViewable =\n          childRect.top >= parentRect.top &&\n          childRect.top <= parentRect.top + parent.clientHeight;\n        if (!isViewable) {\n          parent.scrollTop = childRect.top + parent.scrollTop - parentRect.top;\n        }\n      },\n    }));\n\n    useEffect(() => {\n      listRef.current.scrollTop = initialScrollTop;\n    }, [initialScrollTop]);\n\n    const handleScroll = e => {\n      onScroll(e.target.scrollTop);\n    };\n\n    return (\n      <div\n        ref={listRef}\n        className=\"normal-notes-container\"\n        onScroll={handleScroll}\n        role=\"list\"\n      >\n        {notes.map((currNote, index) => (\n          <React.Fragment key={`${index}_${currNote.Id}`}>\n            {children(notes, index)}\n          </React.Fragment>\n        ))}\n      </div>\n    );\n  },\n);\n\nNormalList.propTypes = propTypes;\n\nexport default NormalList;\n","import NormalList from './NormalList';\n\nexport default NormalList;","import React from 'react';\n\nconst NoteContext = React.createContext();\n\nexport default NoteContext;","/**\n * Assigns (shallow copies) the properties of `src` onto `dest`, if the\n * corresponding property on `dest` === `undefined`.\n *\n * @param {Object} dest The destination object.\n * @param {Object} src The source object.\n * @return {Object} The destination object (`dest`)\n */\nexport function defaults(dest, src) {\n    for (var prop in src) {\n        if (src.hasOwnProperty(prop) && dest[prop] === undefined) {\n            dest[prop] = src[prop];\n        }\n    }\n    return dest;\n}\n/**\n * Truncates the `str` at `len - ellipsisChars.length`, and adds the `ellipsisChars` to the\n * end of the string (by default, two periods: '..'). If the `str` length does not exceed\n * `len`, the string will be returned unchanged.\n *\n * @param {String} str The string to truncate and add an ellipsis to.\n * @param {Number} truncateLen The length to truncate the string at.\n * @param {String} [ellipsisChars=...] The ellipsis character(s) to add to the end of `str`\n *   when truncated. Defaults to '...'\n */\nexport function ellipsis(str, truncateLen, ellipsisChars) {\n    var ellipsisLength;\n    if (str.length > truncateLen) {\n        if (ellipsisChars == null) {\n            ellipsisChars = '&hellip;';\n            ellipsisLength = 3;\n        }\n        else {\n            ellipsisLength = ellipsisChars.length;\n        }\n        str = str.substring(0, truncateLen - ellipsisLength) + ellipsisChars;\n    }\n    return str;\n}\n/**\n * Supports `Array.prototype.indexOf()` functionality for old IE (IE8 and below).\n *\n * @param {Array} arr The array to find an element of.\n * @param {*} element The element to find in the array, and return the index of.\n * @return {Number} The index of the `element`, or -1 if it was not found.\n */\nexport function indexOf(arr, element) {\n    // @ts-ignore - As far as TypeScript is concerned, this method will always\n    // exist (lowest \"lib\" in TS is \"ES5\"). Hence we need to ignore this error\n    // to support IE8 which only implements ES3 and doesn't have this method\n    if (Array.prototype.indexOf) {\n        return arr.indexOf(element);\n    }\n    else {\n        for (var i = 0, len = arr.length; i < len; i++) {\n            if (arr[i] === element)\n                return i;\n        }\n        return -1;\n    }\n}\n/**\n * Removes array elements based on a filtering function. Mutates the input\n * array.\n *\n * Using this instead of the ES5 Array.prototype.filter() function, to allow\n * Autolinker compatibility with IE8, and also to prevent creating many new\n * arrays in memory for filtering.\n *\n * @param {Array} arr The array to remove elements from. This array is\n *   mutated.\n * @param {Function} fn A function which should return `true` to\n *   remove an element.\n * @return {Array} The mutated input `arr`.\n */\nexport function remove(arr, fn) {\n    for (var i = arr.length - 1; i >= 0; i--) {\n        if (fn(arr[i]) === true) {\n            arr.splice(i, 1);\n        }\n    }\n}\n/**\n * Performs the functionality of what modern browsers do when `String.prototype.split()` is called\n * with a regular expression that contains capturing parenthesis.\n *\n * For example:\n *\n *     // Modern browsers:\n *     \"a,b,c\".split( /(,)/ );  // --> [ 'a', ',', 'b', ',', 'c' ]\n *\n *     // Old IE (including IE8):\n *     \"a,b,c\".split( /(,)/ );  // --> [ 'a', 'b', 'c' ]\n *\n * This method emulates the functionality of modern browsers for the old IE case.\n *\n * @param {String} str The string to split.\n * @param {RegExp} splitRegex The regular expression to split the input `str` on. The splitting\n *   character(s) will be spliced into the array, as in the \"modern browsers\" example in the\n *   description of this method.\n *   Note #1: the supplied regular expression **must** have the 'g' flag specified.\n *   Note #2: for simplicity's sake, the regular expression does not need\n *   to contain capturing parenthesis - it will be assumed that any match has them.\n * @return {String[]} The split array of strings, with the splitting character(s) included.\n */\nexport function splitAndCapture(str, splitRegex) {\n    if (!splitRegex.global)\n        throw new Error(\"`splitRegex` must have the 'g' flag set\");\n    var result = [], lastIdx = 0, match;\n    while (match = splitRegex.exec(str)) {\n        result.push(str.substring(lastIdx, match.index));\n        result.push(match[0]); // push the splitting char(s)\n        lastIdx = match.index + match[0].length;\n    }\n    result.push(str.substring(lastIdx));\n    return result;\n}\n/**\n * Function that should never be called but is used to check that every\n * enum value is handled using TypeScript's 'never' type.\n */\nexport function throwUnhandledCaseError(theValue) {\n    throw new Error(\"Unhandled case for value: '\".concat(theValue, \"'\"));\n}\n\n//# sourceMappingURL=utils.js.map\n","import { indexOf } from \"./utils\";\n/**\n * @class Autolinker.HtmlTag\n * @extends Object\n *\n * Represents an HTML tag, which can be used to easily build/modify HTML tags programmatically.\n *\n * Autolinker uses this abstraction to create HTML tags, and then write them out as strings. You may also use\n * this class in your code, especially within a {@link Autolinker#replaceFn replaceFn}.\n *\n * ## Examples\n *\n * Example instantiation:\n *\n *     var tag = new Autolinker.HtmlTag( {\n *         tagName : 'a',\n *         attrs   : { 'href': 'http://google.com', 'class': 'external-link' },\n *         innerHtml : 'Google'\n *     } );\n *\n *     tag.toAnchorString();  // <a href=\"http://google.com\" class=\"external-link\">Google</a>\n *\n *     // Individual accessor methods\n *     tag.getTagName();                 // 'a'\n *     tag.getAttr( 'href' );            // 'http://google.com'\n *     tag.hasClass( 'external-link' );  // true\n *\n *\n * Using mutator methods (which may be used in combination with instantiation config properties):\n *\n *     var tag = new Autolinker.HtmlTag();\n *     tag.setTagName( 'a' );\n *     tag.setAttr( 'href', 'http://google.com' );\n *     tag.addClass( 'external-link' );\n *     tag.setInnerHtml( 'Google' );\n *\n *     tag.getTagName();                 // 'a'\n *     tag.getAttr( 'href' );            // 'http://google.com'\n *     tag.hasClass( 'external-link' );  // true\n *\n *     tag.toAnchorString();  // <a href=\"http://google.com\" class=\"external-link\">Google</a>\n *\n *\n * ## Example use within a {@link Autolinker#replaceFn replaceFn}\n *\n *     var html = Autolinker.link( \"Test google.com\", {\n *         replaceFn : function( match ) {\n *             var tag = match.buildTag();  // returns an {@link Autolinker.HtmlTag} instance, configured with the Match's href and anchor text\n *             tag.setAttr( 'rel', 'nofollow' );\n *\n *             return tag;\n *         }\n *     } );\n *\n *     // generated html:\n *     //   Test <a href=\"http://google.com\" target=\"_blank\" rel=\"nofollow\">google.com</a>\n *\n *\n * ## Example use with a new tag for the replacement\n *\n *     var html = Autolinker.link( \"Test google.com\", {\n *         replaceFn : function( match ) {\n *             var tag = new Autolinker.HtmlTag( {\n *                 tagName : 'button',\n *                 attrs   : { 'title': 'Load URL: ' + match.getAnchorHref() },\n *                 innerHtml : 'Load URL: ' + match.getAnchorText()\n *             } );\n *\n *             return tag;\n *         }\n *     } );\n *\n *     // generated html:\n *     //   Test <button title=\"Load URL: http://google.com\">Load URL: google.com</button>\n */\nvar HtmlTag = /** @class */ (function () {\n    /**\n     * @method constructor\n     * @param {Object} [cfg] The configuration properties for this class, in an Object (map)\n     */\n    function HtmlTag(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        /**\n         * @cfg {String} tagName\n         *\n         * The tag name. Ex: 'a', 'button', etc.\n         *\n         * Not required at instantiation time, but should be set using {@link #setTagName} before {@link #toAnchorString}\n         * is executed.\n         */\n        this.tagName = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Object.<String, String>} attrs\n         *\n         * An key/value Object (map) of attributes to create the tag with. The keys are the attribute names, and the\n         * values are the attribute values.\n         */\n        this.attrs = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} innerHTML\n         *\n         * The inner HTML for the tag.\n         */\n        this.innerHTML = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @protected\n         * @property {RegExp} whitespaceRegex\n         *\n         * Regular expression used to match whitespace in a string of CSS classes.\n         */\n        this.whitespaceRegex = /\\s+/; // default value just to get the above doc comment in the ES5 output and documentation generator\n        this.tagName = cfg.tagName || '';\n        this.attrs = cfg.attrs || {};\n        this.innerHTML = cfg.innerHtml || cfg.innerHTML || ''; // accept either the camelCased form or the fully capitalized acronym as in the DOM\n    }\n    /**\n     * Sets the tag name that will be used to generate the tag with.\n     *\n     * @param {String} tagName\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setTagName = function (tagName) {\n        this.tagName = tagName;\n        return this;\n    };\n    /**\n     * Retrieves the tag name.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.getTagName = function () {\n        return this.tagName || '';\n    };\n    /**\n     * Sets an attribute on the HtmlTag.\n     *\n     * @param {String} attrName The attribute name to set.\n     * @param {String} attrValue The attribute value to set.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setAttr = function (attrName, attrValue) {\n        var tagAttrs = this.getAttrs();\n        tagAttrs[attrName] = attrValue;\n        return this;\n    };\n    /**\n     * Retrieves an attribute from the HtmlTag. If the attribute does not exist, returns `undefined`.\n     *\n     * @param {String} attrName The attribute name to retrieve.\n     * @return {String} The attribute's value, or `undefined` if it does not exist on the HtmlTag.\n     */\n    HtmlTag.prototype.getAttr = function (attrName) {\n        return this.getAttrs()[attrName];\n    };\n    /**\n     * Sets one or more attributes on the HtmlTag.\n     *\n     * @param {Object.<String, String>} attrs A key/value Object (map) of the attributes to set.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setAttrs = function (attrs) {\n        Object.assign(this.getAttrs(), attrs);\n        return this;\n    };\n    /**\n     * Retrieves the attributes Object (map) for the HtmlTag.\n     *\n     * @return {Object.<String, String>} A key/value object of the attributes for the HtmlTag.\n     */\n    HtmlTag.prototype.getAttrs = function () {\n        return this.attrs || (this.attrs = {});\n    };\n    /**\n     * Sets the provided `cssClass`, overwriting any current CSS classes on the HtmlTag.\n     *\n     * @param {String} cssClass One or more space-separated CSS classes to set (overwrite).\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setClass = function (cssClass) {\n        return this.setAttr('class', cssClass);\n    };\n    /**\n     * Convenience method to add one or more CSS classes to the HtmlTag. Will not add duplicate CSS classes.\n     *\n     * @param {String} cssClass One or more space-separated CSS classes to add.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.addClass = function (cssClass) {\n        var classAttr = this.getClass(), whitespaceRegex = this.whitespaceRegex, classes = (!classAttr) ? [] : classAttr.split(whitespaceRegex), newClasses = cssClass.split(whitespaceRegex), newClass;\n        while (newClass = newClasses.shift()) {\n            if (indexOf(classes, newClass) === -1) {\n                classes.push(newClass);\n            }\n        }\n        this.getAttrs()['class'] = classes.join(\" \");\n        return this;\n    };\n    /**\n     * Convenience method to remove one or more CSS classes from the HtmlTag.\n     *\n     * @param {String} cssClass One or more space-separated CSS classes to remove.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.removeClass = function (cssClass) {\n        var classAttr = this.getClass(), whitespaceRegex = this.whitespaceRegex, classes = (!classAttr) ? [] : classAttr.split(whitespaceRegex), removeClasses = cssClass.split(whitespaceRegex), removeClass;\n        while (classes.length && (removeClass = removeClasses.shift())) {\n            var idx = indexOf(classes, removeClass);\n            if (idx !== -1) {\n                classes.splice(idx, 1);\n            }\n        }\n        this.getAttrs()['class'] = classes.join(\" \");\n        return this;\n    };\n    /**\n     * Convenience method to retrieve the CSS class(es) for the HtmlTag, which will each be separated by spaces when\n     * there are multiple.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.getClass = function () {\n        return this.getAttrs()['class'] || \"\";\n    };\n    /**\n     * Convenience method to check if the tag has a CSS class or not.\n     *\n     * @param {String} cssClass The CSS class to check for.\n     * @return {Boolean} `true` if the HtmlTag has the CSS class, `false` otherwise.\n     */\n    HtmlTag.prototype.hasClass = function (cssClass) {\n        return (' ' + this.getClass() + ' ').indexOf(' ' + cssClass + ' ') !== -1;\n    };\n    /**\n     * Sets the inner HTML for the tag.\n     *\n     * @param {String} html The inner HTML to set.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setInnerHTML = function (html) {\n        this.innerHTML = html;\n        return this;\n    };\n    /**\n     * Backwards compatibility method name.\n     *\n     * @param {String} html The inner HTML to set.\n     * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n     */\n    HtmlTag.prototype.setInnerHtml = function (html) {\n        return this.setInnerHTML(html);\n    };\n    /**\n     * Retrieves the inner HTML for the tag.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.getInnerHTML = function () {\n        return this.innerHTML || \"\";\n    };\n    /**\n     * Backward compatibility method name.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.getInnerHtml = function () {\n        return this.getInnerHTML();\n    };\n    /**\n     * Override of superclass method used to generate the HTML string for the tag.\n     *\n     * @return {String}\n     */\n    HtmlTag.prototype.toAnchorString = function () {\n        var tagName = this.getTagName(), attrsStr = this.buildAttrsStr();\n        attrsStr = (attrsStr) ? ' ' + attrsStr : ''; // prepend a space if there are actually attributes\n        return ['<', tagName, attrsStr, '>', this.getInnerHtml(), '</', tagName, '>'].join(\"\");\n    };\n    /**\n     * Support method for {@link #toAnchorString}, returns the string space-separated key=\"value\" pairs, used to populate\n     * the stringified HtmlTag.\n     *\n     * @protected\n     * @return {String} Example return: `attr1=\"value1\" attr2=\"value2\"`\n     */\n    HtmlTag.prototype.buildAttrsStr = function () {\n        if (!this.attrs)\n            return \"\"; // no `attrs` Object (map) has been set, return empty string\n        var attrs = this.getAttrs(), attrsArr = [];\n        for (var prop in attrs) {\n            if (attrs.hasOwnProperty(prop)) {\n                attrsArr.push(prop + '=\"' + attrs[prop] + '\"');\n            }\n        }\n        return attrsArr.join(\" \");\n    };\n    return HtmlTag;\n}());\nexport { HtmlTag };\n\n//# sourceMappingURL=html-tag.js.map\n","import { HtmlTag } from \"./html-tag\";\nimport { truncateSmart } from \"./truncate/truncate-smart\";\nimport { truncateMiddle } from \"./truncate/truncate-middle\";\nimport { truncateEnd } from \"./truncate/truncate-end\";\n/**\n * @protected\n * @class Autolinker.AnchorTagBuilder\n * @extends Object\n *\n * Builds anchor (&lt;a&gt;) tags for the Autolinker utility when a match is\n * found.\n *\n * Normally this class is instantiated, configured, and used internally by an\n * {@link Autolinker} instance, but may actually be used indirectly in a\n * {@link Autolinker#replaceFn replaceFn} to create {@link Autolinker.HtmlTag HtmlTag}\n * instances which may be modified before returning from the\n * {@link Autolinker#replaceFn replaceFn}. For example:\n *\n *     var html = Autolinker.link( \"Test google.com\", {\n *         replaceFn : function( match ) {\n *             var tag = match.buildTag();  // returns an {@link Autolinker.HtmlTag} instance\n *             tag.setAttr( 'rel', 'nofollow' );\n *\n *             return tag;\n *         }\n *     } );\n *\n *     // generated html:\n *     //   Test <a href=\"http://google.com\" target=\"_blank\" rel=\"nofollow\">google.com</a>\n */\nvar AnchorTagBuilder = /** @class */ (function () {\n    /**\n     * @method constructor\n     * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map).\n     */\n    function AnchorTagBuilder(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        /**\n         * @cfg {Boolean} newWindow\n         * @inheritdoc Autolinker#newWindow\n         */\n        this.newWindow = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Object} truncate\n         * @inheritdoc Autolinker#truncate\n         */\n        this.truncate = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} className\n         * @inheritdoc Autolinker#className\n         */\n        this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        this.newWindow = cfg.newWindow || false;\n        this.truncate = cfg.truncate || {};\n        this.className = cfg.className || '';\n    }\n    /**\n     * Generates the actual anchor (&lt;a&gt;) tag to use in place of the\n     * matched text, via its `match` object.\n     *\n     * @param {Autolinker.match.Match} match The Match instance to generate an\n     *   anchor tag from.\n     * @return {Autolinker.HtmlTag} The HtmlTag instance for the anchor tag.\n     */\n    AnchorTagBuilder.prototype.build = function (match) {\n        return new HtmlTag({\n            tagName: 'a',\n            attrs: this.createAttrs(match),\n            innerHtml: this.processAnchorText(match.getAnchorText())\n        });\n    };\n    /**\n     * Creates the Object (map) of the HTML attributes for the anchor (&lt;a&gt;)\n     *   tag being generated.\n     *\n     * @protected\n     * @param {Autolinker.match.Match} match The Match instance to generate an\n     *   anchor tag from.\n     * @return {Object} A key/value Object (map) of the anchor tag's attributes.\n     */\n    AnchorTagBuilder.prototype.createAttrs = function (match) {\n        var attrs = {\n            'href': match.getAnchorHref() // we'll always have the `href` attribute\n        };\n        var cssClass = this.createCssClass(match);\n        if (cssClass) {\n            attrs['class'] = cssClass;\n        }\n        if (this.newWindow) {\n            attrs['target'] = \"_blank\";\n            attrs['rel'] = \"noopener noreferrer\"; // Issue #149. See https://mathiasbynens.github.io/rel-noopener/\n        }\n        if (this.truncate) {\n            if (this.truncate.length && this.truncate.length < match.getAnchorText().length) {\n                attrs['title'] = match.getAnchorHref();\n            }\n        }\n        return attrs;\n    };\n    /**\n     * Creates the CSS class that will be used for a given anchor tag, based on\n     * the `matchType` and the {@link #className} config.\n     *\n     * Example returns:\n     *\n     * - \"\"                                      // no {@link #className}\n     * - \"myLink myLink-url\"                     // url match\n     * - \"myLink myLink-email\"                   // email match\n     * - \"myLink myLink-phone\"                   // phone match\n     * - \"myLink myLink-hashtag\"                 // hashtag match\n     * - \"myLink myLink-mention myLink-twitter\"  // mention match with Twitter service\n     *\n     * @protected\n     * @param {Autolinker.match.Match} match The Match instance to generate an\n     *   anchor tag from.\n     * @return {String} The CSS class string for the link. Example return:\n     *   \"myLink myLink-url\". If no {@link #className} was configured, returns\n     *   an empty string.\n     */\n    AnchorTagBuilder.prototype.createCssClass = function (match) {\n        var className = this.className;\n        if (!className) {\n            return \"\";\n        }\n        else {\n            var returnClasses = [className], cssClassSuffixes = match.getCssClassSuffixes();\n            for (var i = 0, len = cssClassSuffixes.length; i < len; i++) {\n                returnClasses.push(className + '-' + cssClassSuffixes[i]);\n            }\n            return returnClasses.join(' ');\n        }\n    };\n    /**\n     * Processes the `anchorText` by truncating the text according to the\n     * {@link #truncate} config.\n     *\n     * @private\n     * @param {String} anchorText The anchor tag's text (i.e. what will be\n     *   displayed).\n     * @return {String} The processed `anchorText`.\n     */\n    AnchorTagBuilder.prototype.processAnchorText = function (anchorText) {\n        anchorText = this.doTruncate(anchorText);\n        return anchorText;\n    };\n    /**\n     * Performs the truncation of the `anchorText` based on the {@link #truncate}\n     * option. If the `anchorText` is longer than the length specified by the\n     * {@link #truncate} option, the truncation is performed based on the\n     * `location` property. See {@link #truncate} for details.\n     *\n     * @private\n     * @param {String} anchorText The anchor tag's text (i.e. what will be\n     *   displayed).\n     * @return {String} The truncated anchor text.\n     */\n    AnchorTagBuilder.prototype.doTruncate = function (anchorText) {\n        var truncate = this.truncate;\n        if (!truncate || !truncate.length)\n            return anchorText;\n        var truncateLength = truncate.length, truncateLocation = truncate.location;\n        if (truncateLocation === 'smart') {\n            return truncateSmart(anchorText, truncateLength);\n        }\n        else if (truncateLocation === 'middle') {\n            return truncateMiddle(anchorText, truncateLength);\n        }\n        else {\n            return truncateEnd(anchorText, truncateLength);\n        }\n    };\n    return AnchorTagBuilder;\n}());\nexport { AnchorTagBuilder };\n\n//# sourceMappingURL=anchor-tag-builder.js.map\n","/**\n * Date: 2015-10-05\n * Author: Kasper Søfren <soefritz@gmail.com> (https://github.com/kafoso)\n *\n * A truncation feature, where the ellipsis will be placed at a section within\n * the URL making it still somewhat human readable.\n *\n * @param {String} url\t\t\t\t\t\t A URL.\n * @param {Number} truncateLen\t\t The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars\t The characters to place within the url, e.g. \"...\".\n * @return {String} The truncated URL.\n */\nexport function truncateSmart(url, truncateLen, ellipsisChars) {\n    var ellipsisLengthBeforeParsing;\n    var ellipsisLength;\n    if (ellipsisChars == null) {\n        ellipsisChars = '&hellip;';\n        ellipsisLength = 3;\n        ellipsisLengthBeforeParsing = 8;\n    }\n    else {\n        ellipsisLength = ellipsisChars.length;\n        ellipsisLengthBeforeParsing = ellipsisChars.length;\n    }\n    var parse_url = function (url) {\n        var urlObj = {};\n        var urlSub = url;\n        var match = urlSub.match(/^([a-z]+):\\/\\//i);\n        if (match) {\n            urlObj.scheme = match[1];\n            urlSub = urlSub.substr(match[0].length);\n        }\n        match = urlSub.match(/^(.*?)(?=(\\?|#|\\/|$))/i);\n        if (match) {\n            urlObj.host = match[1];\n            urlSub = urlSub.substr(match[0].length);\n        }\n        match = urlSub.match(/^\\/(.*?)(?=(\\?|#|$))/i);\n        if (match) {\n            urlObj.path = match[1];\n            urlSub = urlSub.substr(match[0].length);\n        }\n        match = urlSub.match(/^\\?(.*?)(?=(#|$))/i);\n        if (match) {\n            urlObj.query = match[1];\n            urlSub = urlSub.substr(match[0].length);\n        }\n        match = urlSub.match(/^#(.*?)$/i);\n        if (match) {\n            urlObj.fragment = match[1];\n            //urlSub = urlSub.substr(match[0].length);  -- not used. Uncomment if adding another block.\n        }\n        return urlObj;\n    };\n    var buildUrl = function (urlObj) {\n        var url = \"\";\n        if (urlObj.scheme && urlObj.host) {\n            url += urlObj.scheme + \"://\";\n        }\n        if (urlObj.host) {\n            url += urlObj.host;\n        }\n        if (urlObj.path) {\n            url += \"/\" + urlObj.path;\n        }\n        if (urlObj.query) {\n            url += \"?\" + urlObj.query;\n        }\n        if (urlObj.fragment) {\n            url += \"#\" + urlObj.fragment;\n        }\n        return url;\n    };\n    var buildSegment = function (segment, remainingAvailableLength) {\n        var remainingAvailableLengthHalf = remainingAvailableLength / 2, startOffset = Math.ceil(remainingAvailableLengthHalf), endOffset = (-1) * Math.floor(remainingAvailableLengthHalf), end = \"\";\n        if (endOffset < 0) {\n            end = segment.substr(endOffset);\n        }\n        return segment.substr(0, startOffset) + ellipsisChars + end;\n    };\n    if (url.length <= truncateLen) {\n        return url;\n    }\n    var availableLength = truncateLen - ellipsisLength;\n    var urlObj = parse_url(url);\n    // Clean up the URL\n    if (urlObj.query) {\n        var matchQuery = urlObj.query.match(/^(.*?)(?=(\\?|\\#))(.*?)$/i);\n        if (matchQuery) {\n            // Malformed URL; two or more \"?\". Removed any content behind the 2nd.\n            urlObj.query = urlObj.query.substr(0, matchQuery[1].length);\n            url = buildUrl(urlObj);\n        }\n    }\n    if (url.length <= truncateLen) {\n        return url;\n    }\n    if (urlObj.host) {\n        urlObj.host = urlObj.host.replace(/^www\\./, \"\");\n        url = buildUrl(urlObj);\n    }\n    if (url.length <= truncateLen) {\n        return url;\n    }\n    // Process and build the URL\n    var str = \"\";\n    if (urlObj.host) {\n        str += urlObj.host;\n    }\n    if (str.length >= availableLength) {\n        if (urlObj.host.length == truncateLen) {\n            return (urlObj.host.substr(0, (truncateLen - ellipsisLength)) + ellipsisChars).substr(0, availableLength + ellipsisLengthBeforeParsing);\n        }\n        return buildSegment(str, availableLength).substr(0, availableLength + ellipsisLengthBeforeParsing);\n    }\n    var pathAndQuery = \"\";\n    if (urlObj.path) {\n        pathAndQuery += \"/\" + urlObj.path;\n    }\n    if (urlObj.query) {\n        pathAndQuery += \"?\" + urlObj.query;\n    }\n    if (pathAndQuery) {\n        if ((str + pathAndQuery).length >= availableLength) {\n            if ((str + pathAndQuery).length == truncateLen) {\n                return (str + pathAndQuery).substr(0, truncateLen);\n            }\n            var remainingAvailableLength = availableLength - str.length;\n            return (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n        }\n        else {\n            str += pathAndQuery;\n        }\n    }\n    if (urlObj.fragment) {\n        var fragment = \"#\" + urlObj.fragment;\n        if ((str + fragment).length >= availableLength) {\n            if ((str + fragment).length == truncateLen) {\n                return (str + fragment).substr(0, truncateLen);\n            }\n            var remainingAvailableLength2 = availableLength - str.length;\n            return (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n        }\n        else {\n            str += fragment;\n        }\n    }\n    if (urlObj.scheme && urlObj.host) {\n        var scheme = urlObj.scheme + \"://\";\n        if ((str + scheme).length < availableLength) {\n            return (scheme + str).substr(0, truncateLen);\n        }\n    }\n    if (str.length <= truncateLen) {\n        return str;\n    }\n    var end = \"\";\n    if (availableLength > 0) {\n        end = str.substr((-1) * Math.floor(availableLength / 2));\n    }\n    return (str.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\n\n//# sourceMappingURL=truncate-smart.js.map\n","/**\n * Date: 2015-10-05\n * Author: Kasper Søfren <soefritz@gmail.com> (https://github.com/kafoso)\n *\n * A truncation feature, where the ellipsis will be placed in the dead-center of the URL.\n *\n * @param {String} url             A URL.\n * @param {Number} truncateLen     The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars   The characters to place within the url, e.g. \"..\".\n * @return {String} The truncated URL.\n */\nexport function truncateMiddle(url, truncateLen, ellipsisChars) {\n    if (url.length <= truncateLen) {\n        return url;\n    }\n    var ellipsisLengthBeforeParsing;\n    var ellipsisLength;\n    if (ellipsisChars == null) {\n        ellipsisChars = '&hellip;';\n        ellipsisLengthBeforeParsing = 8;\n        ellipsisLength = 3;\n    }\n    else {\n        ellipsisLengthBeforeParsing = ellipsisChars.length;\n        ellipsisLength = ellipsisChars.length;\n    }\n    var availableLength = truncateLen - ellipsisLength;\n    var end = \"\";\n    if (availableLength > 0) {\n        end = url.substr((-1) * Math.floor(availableLength / 2));\n    }\n    return (url.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\n\n//# sourceMappingURL=truncate-middle.js.map\n","import { ellipsis } from \"../utils\";\n/**\n * A truncation feature where the ellipsis will be placed at the end of the URL.\n *\n * @param {String} anchorText\n * @param {Number} truncateLen The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars The characters to place within the url, e.g. \"..\".\n * @return {String} The truncated URL.\n */\nexport function truncateEnd(anchorText, truncateLen, ellipsisChars) {\n    return ellipsis(anchorText, truncateLen, ellipsisChars);\n}\n\n//# sourceMappingURL=truncate-end.js.map\n","/**\n * @abstract\n * @class Autolinker.match.Match\n *\n * Represents a match found in an input string which should be Autolinked. A Match object is what is provided in a\n * {@link Autolinker#replaceFn replaceFn}, and may be used to query for details about the match.\n *\n * For example:\n *\n *     var input = \"...\";  // string with URLs, Email Addresses, and Mentions (Twitter, Instagram, Soundcloud)\n *\n *     var linkedText = Autolinker.link( input, {\n *         replaceFn : function( match ) {\n *             console.log( \"href = \", match.getAnchorHref() );\n *             console.log( \"text = \", match.getAnchorText() );\n *\n *             switch( match.getType() ) {\n *                 case 'url' :\n *                     console.log( \"url: \", match.getUrl() );\n *\n *                 case 'email' :\n *                     console.log( \"email: \", match.getEmail() );\n *\n *                 case 'mention' :\n *                     console.log( \"mention: \", match.getMention() );\n *             }\n *         }\n *     } );\n *\n * See the {@link Autolinker} class for more details on using the {@link Autolinker#replaceFn replaceFn}.\n */\nvar Match = /** @class */ (function () {\n    /**\n     * @member Autolinker.match.Match\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function Match(cfg) {\n        /**\n         * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required)\n         *\n         * Reference to the AnchorTagBuilder instance to use to generate an anchor\n         * tag for the Match.\n         */\n        this.__jsduckDummyDocProp = null; // property used just to get the above doc comment into the ES5 output and documentation generator\n        /**\n         * @cfg {String} matchedText (required)\n         *\n         * The original text that was matched by the {@link Autolinker.matcher.Matcher}.\n         */\n        this.matchedText = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Number} offset (required)\n         *\n         * The offset of where the match was made in the input string.\n         */\n        this.offset = 0; // default value just to get the above doc comment in the ES5 output and documentation generator\n        this.tagBuilder = cfg.tagBuilder;\n        this.matchedText = cfg.matchedText;\n        this.offset = cfg.offset;\n    }\n    /**\n     * Returns the original text that was matched.\n     *\n     * @return {String}\n     */\n    Match.prototype.getMatchedText = function () {\n        return this.matchedText;\n    };\n    /**\n     * Sets the {@link #offset} of where the match was made in the input string.\n     *\n     * A {@link Autolinker.matcher.Matcher} will be fed only HTML text nodes,\n     * and will therefore set an original offset that is relative to the HTML\n     * text node itself. However, we want this offset to be relative to the full\n     * HTML input string, and thus if using {@link Autolinker#parse} (rather\n     * than calling a {@link Autolinker.matcher.Matcher} directly), then this\n     * offset is corrected after the Matcher itself has done its job.\n     *\n     * @param {Number} offset\n     */\n    Match.prototype.setOffset = function (offset) {\n        this.offset = offset;\n    };\n    /**\n     * Returns the offset of where the match was made in the input string. This\n     * is the 0-based index of the match.\n     *\n     * @return {Number}\n     */\n    Match.prototype.getOffset = function () {\n        return this.offset;\n    };\n    /**\n     * Returns the CSS class suffix(es) for this match.\n     *\n     * A CSS class suffix is appended to the {@link Autolinker#className} in\n     * the {@link Autolinker.AnchorTagBuilder} when a match is translated into\n     * an anchor tag.\n     *\n     * For example, if {@link Autolinker#className} was configured as 'myLink',\n     * and this method returns `[ 'url' ]`, the final class name of the element\n     * will become: 'myLink myLink-url'.\n     *\n     * The match may provide multiple CSS class suffixes to be appended to the\n     * {@link Autolinker#className} in order to facilitate better styling\n     * options for different match criteria. See {@link Autolinker.match.Mention}\n     * for an example.\n     *\n     * By default, this method returns a single array with the match's\n     * {@link #getType type} name, but may be overridden by subclasses.\n     *\n     * @return {String[]}\n     */\n    Match.prototype.getCssClassSuffixes = function () {\n        return [this.getType()];\n    };\n    /**\n     * Builds and returns an {@link Autolinker.HtmlTag} instance based on the\n     * Match.\n     *\n     * This can be used to easily generate anchor tags from matches, and either\n     * return their HTML string, or modify them before doing so.\n     *\n     * Example Usage:\n     *\n     *     var tag = match.buildTag();\n     *     tag.addClass( 'cordova-link' );\n     *     tag.setAttr( 'target', '_system' );\n     *\n     *     tag.toAnchorString();  // <a href=\"http://google.com\" class=\"cordova-link\" target=\"_system\">Google</a>\n     *\n     * Example Usage in {@link Autolinker#replaceFn}:\n     *\n     *     var html = Autolinker.link( \"Test google.com\", {\n     *         replaceFn : function( match ) {\n     *             var tag = match.buildTag();  // returns an {@link Autolinker.HtmlTag} instance\n     *             tag.setAttr( 'rel', 'nofollow' );\n     *\n     *             return tag;\n     *         }\n     *     } );\n     *\n     *     // generated html:\n     *     //   Test <a href=\"http://google.com\" target=\"_blank\" rel=\"nofollow\">google.com</a>\n     */\n    Match.prototype.buildTag = function () {\n        return this.tagBuilder.build(this);\n    };\n    return Match;\n}());\nexport { Match };\n\n//# sourceMappingURL=match.js.map\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Email\n * @extends Autolinker.match.Match\n *\n * Represents a Email match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar EmailMatch = /** @class */ (function (_super) {\n    __extends(EmailMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function EmailMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} email (required)\n         *\n         * The email address that was matched.\n         */\n        _this.email = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        _this.email = cfg.email;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of EmailMatch, returns 'email'.\n     *\n     * @return {String}\n     */\n    EmailMatch.prototype.getType = function () {\n        return 'email';\n    };\n    /**\n     * Returns the email address that was matched.\n     *\n     * @return {String}\n     */\n    EmailMatch.prototype.getEmail = function () {\n        return this.email;\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    EmailMatch.prototype.getAnchorHref = function () {\n        return 'mailto:' + this.email;\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    EmailMatch.prototype.getAnchorText = function () {\n        return this.email;\n    };\n    return EmailMatch;\n}(Match));\nexport { EmailMatch };\n\n//# sourceMappingURL=email-match.js.map\n","import { __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericCharsStr, alphaNumericAndMarksCharsStr, getDomainNameStr } from \"../regex-lib\";\nimport { tldRegex } from \"./tld-regex\";\nimport { UrlMatch } from \"../match/url-match\";\nimport { UrlMatchValidator } from \"./url-match-validator\";\n// RegExp objects which are shared by all instances of UrlMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating UrlMatcher and its RegExp \n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314). \n// See descriptions of the properties where they are used for details about them\nvar matcherRegex = (function () {\n    var schemeRegex = /(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\\/\\/)(?!\\d+\\/?)(?:\\/\\/)?)/, // match protocol, allow in format \"http://\" or \"mailto:\". However, do not match the first part of something like 'link:http://www.google.com' (i.e. don't match \"link:\"). Also, make sure we don't interpret 'google.com:8000' as if 'google.com' was a protocol here (i.e. ignore a trailing port number in this regex)\n    wwwRegex = /(?:www\\.)/, // starting with 'www.'\n    // Allow optional path, query string, and hash anchor, not ending in the following characters: \"?!:,.;\"\n    // http://blog.codinghorror.com/the-problem-with-urls/\n    urlSuffixRegex = new RegExp('[/?#](?:[' + alphaNumericAndMarksCharsStr + '\\\\-+&@#/%=~_()|\\'$*\\\\[\\\\]{}?!:,.;^\\u2713]*[' + alphaNumericAndMarksCharsStr + '\\\\-+&@#/%=~_()|\\'$*\\\\[\\\\]{}\\u2713])?');\n    return new RegExp([\n        '(?:',\n        '(',\n        schemeRegex.source,\n        getDomainNameStr(2),\n        ')',\n        '|',\n        '(',\n        '(//)?',\n        wwwRegex.source,\n        getDomainNameStr(6),\n        ')',\n        '|',\n        '(',\n        '(//)?',\n        getDomainNameStr(10) + '\\\\.',\n        tldRegex.source,\n        '(?![-' + alphaNumericCharsStr + '])',\n        ')',\n        ')',\n        '(?::[0-9]+)?',\n        '(?:' + urlSuffixRegex.source + ')?' // match for path, query string, and/or hash anchor - optional\n    ].join(\"\"), 'gi');\n})();\nvar wordCharRegExp = new RegExp('[' + alphaNumericAndMarksCharsStr + ']');\n/**\n * @class Autolinker.matcher.Url\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find URL matches in an input string.\n *\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details.\n */\nvar UrlMatcher = /** @class */ (function (_super) {\n    __extends(UrlMatcher, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match instance,\n     *   specified in an Object (map).\n     */\n    function UrlMatcher(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {Object} stripPrefix (required)\n         *\n         * The Object form of {@link Autolinker#cfg-stripPrefix}.\n         */\n        _this.stripPrefix = { scheme: true, www: true }; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} stripTrailingSlash (required)\n         * @inheritdoc Autolinker#stripTrailingSlash\n         */\n        _this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} decodePercentEncoding (required)\n         * @inheritdoc Autolinker#decodePercentEncoding\n         */\n        _this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @protected\n         * @property {RegExp} matcherRegex\n         *\n         * The regular expression to match URLs with an optional scheme, port\n         * number, path, query string, and hash anchor.\n         *\n         * Example matches:\n         *\n         *     http://google.com\n         *     www.google.com\n         *     google.com/path/to/file?q1=1&q2=2#myAnchor\n         *\n         *\n         * This regular expression will have the following capturing groups:\n         *\n         * 1.  Group that matches a scheme-prefixed URL (i.e. 'http://google.com').\n         *     This is used to match scheme URLs with just a single word, such as\n         *     'http://localhost', where we won't double check that the domain name\n         *     has at least one dot ('.') in it.\n         * 2.  Group that matches a 'www.' prefixed URL. This is only matched if the\n         *     'www.' text was not prefixed by a scheme (i.e.: not prefixed by\n         *     'http://', 'ftp:', etc.)\n         * 3.  A protocol-relative ('//') match for the case of a 'www.' prefixed\n         *     URL. Will be an empty string if it is not a protocol-relative match.\n         *     We need to know the character before the '//' in order to determine\n         *     if it is a valid match or the // was in a string we don't want to\n         *     auto-link.\n         * 4.  Group that matches a known TLD (top level domain), when a scheme\n         *     or 'www.'-prefixed domain is not matched.\n         * 5.  A protocol-relative ('//') match for the case of a known TLD prefixed\n         *     URL. Will be an empty string if it is not a protocol-relative match.\n         *     See #3 for more info.\n         */\n        _this.matcherRegex = matcherRegex;\n        /**\n         * A regular expression to use to check the character before a protocol-relative\n         * URL match. We don't want to match a protocol-relative URL if it is part\n         * of another word.\n         *\n         * For example, we want to match something like \"Go to: //google.com\",\n         * but we don't want to match something like \"abc//google.com\"\n         *\n         * This regular expression is used to test the character before the '//'.\n         *\n         * @protected\n         * @type {RegExp} wordCharRegExp\n         */\n        _this.wordCharRegExp = wordCharRegExp;\n        _this.stripPrefix = cfg.stripPrefix;\n        _this.stripTrailingSlash = cfg.stripTrailingSlash;\n        _this.decodePercentEncoding = cfg.decodePercentEncoding;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    UrlMatcher.prototype.parseMatches = function (text) {\n        var matcherRegex = this.matcherRegex, stripPrefix = this.stripPrefix, stripTrailingSlash = this.stripTrailingSlash, decodePercentEncoding = this.decodePercentEncoding, tagBuilder = this.tagBuilder, matches = [], match;\n        var _loop_1 = function () {\n            var matchStr = match[0], schemeUrlMatch = match[1], wwwUrlMatch = match[4], wwwProtocolRelativeMatch = match[5], \n            //tldUrlMatch = match[ 8 ],  -- not needed at the moment\n            tldProtocolRelativeMatch = match[9], offset = match.index, protocolRelativeMatch = wwwProtocolRelativeMatch || tldProtocolRelativeMatch, prevChar = text.charAt(offset - 1);\n            if (!UrlMatchValidator.isValid(matchStr, schemeUrlMatch)) {\n                return \"continue\";\n            }\n            // If the match is preceded by an '@' character, then it is either\n            // an email address or a username. Skip these types of matches.\n            if (offset > 0 && prevChar === '@') {\n                return \"continue\";\n            }\n            // If it's a protocol-relative '//' match, but the character before the '//'\n            // was a word character (i.e. a letter/number), then we found the '//' in the\n            // middle of another word (such as \"asdf//asdf.com\"). In this case, skip the\n            // match.\n            if (offset > 0 && protocolRelativeMatch && this_1.wordCharRegExp.test(prevChar)) {\n                return \"continue\";\n            }\n            // If the URL ends with a question mark, don't include the question\n            // mark as part of the URL. We'll assume the question mark was the\n            // end of a sentence, such as: \"Going to google.com?\"\n            if (/\\?$/.test(matchStr)) {\n                matchStr = matchStr.substr(0, matchStr.length - 1);\n            }\n            // Handle a closing parenthesis or square bracket at the end of the \n            // match, and exclude it if there is not a matching open parenthesis \n            // or square bracket in the match itself.\n            if (this_1.matchHasUnbalancedClosingParen(matchStr)) {\n                matchStr = matchStr.substr(0, matchStr.length - 1); // remove the trailing \")\"\n            }\n            else {\n                // Handle an invalid character after the TLD\n                var pos = this_1.matchHasInvalidCharAfterTld(matchStr, schemeUrlMatch);\n                if (pos > -1) {\n                    matchStr = matchStr.substr(0, pos); // remove the trailing invalid chars\n                }\n            }\n            // The autolinker accepts many characters in a url's scheme (like `fake://test.com`).\n            // However, in cases where a URL is missing whitespace before an obvious link,\n            // (for example: `nowhitespacehttp://www.test.com`), we only want the match to start\n            // at the http:// part. We will check if the match contains a common scheme and then \n            // shift the match to start from there. \t\t\n            var foundCommonScheme = ['http://', 'https://'].find(function (commonScheme) { return !!schemeUrlMatch && schemeUrlMatch.indexOf(commonScheme) !== -1; });\n            if (foundCommonScheme) {\n                // If we found an overmatched URL, we want to find the index\n                // of where the match should start and shift the match to\n                // start from the beginning of the common scheme\n                var indexOfSchemeStart = matchStr.indexOf(foundCommonScheme);\n                matchStr = matchStr.substr(indexOfSchemeStart);\n                schemeUrlMatch = schemeUrlMatch.substr(indexOfSchemeStart);\n                offset = offset + indexOfSchemeStart;\n            }\n            var urlMatchType = schemeUrlMatch ? 'scheme' : (wwwUrlMatch ? 'www' : 'tld'), protocolUrlMatch = !!schemeUrlMatch;\n            matches.push(new UrlMatch({\n                tagBuilder: tagBuilder,\n                matchedText: matchStr,\n                offset: offset,\n                urlMatchType: urlMatchType,\n                url: matchStr,\n                protocolUrlMatch: protocolUrlMatch,\n                protocolRelativeMatch: !!protocolRelativeMatch,\n                stripPrefix: stripPrefix,\n                stripTrailingSlash: stripTrailingSlash,\n                decodePercentEncoding: decodePercentEncoding,\n            }));\n        };\n        var this_1 = this;\n        while ((match = matcherRegex.exec(text)) !== null) {\n            _loop_1();\n        }\n        return matches;\n    };\n    /**\n     * Determines if a match found has an unmatched closing parenthesis,\n     * square bracket or curly bracket. If so, the symbol will be removed\n     * from the match itself, and appended after the generated anchor tag.\n     *\n     * A match may have an extra closing parenthesis at the end of the match\n     * because the regular expression must include parenthesis for URLs such as\n     * \"wikipedia.com/something_(disambiguation)\", which should be auto-linked.\n     *\n     * However, an extra parenthesis *will* be included when the URL itself is\n     * wrapped in parenthesis, such as in the case of:\n     *     \"(wikipedia.com/something_(disambiguation))\"\n     * In this case, the last closing parenthesis should *not* be part of the\n     * URL itself, and this method will return `true`.\n     *\n     * For square brackets in URLs such as in PHP arrays, the same behavior as\n     * parenthesis discussed above should happen:\n     *     \"[http://www.example.com/foo.php?bar[]=1&bar[]=2&bar[]=3]\"\n     * The closing square bracket should not be part of the URL itself, and this\n     * method will return `true`.\n     *\n     * @protected\n     * @param {String} matchStr The full match string from the {@link #matcherRegex}.\n     * @return {Boolean} `true` if there is an unbalanced closing parenthesis or\n     *   square bracket at the end of the `matchStr`, `false` otherwise.\n     */\n    UrlMatcher.prototype.matchHasUnbalancedClosingParen = function (matchStr) {\n        var endChar = matchStr.charAt(matchStr.length - 1);\n        var startChar;\n        if (endChar === ')') {\n            startChar = '(';\n        }\n        else if (endChar === ']') {\n            startChar = '[';\n        }\n        else if (endChar === '}') {\n            startChar = '{';\n        }\n        else {\n            return false; // not a close parenthesis or square bracket\n        }\n        // Find if there are the same number of open braces as close braces in\n        // the URL string, minus the last character (which we have already \n        // determined to be either ')', ']' or '}'\n        var numOpenBraces = 0;\n        for (var i = 0, len = matchStr.length - 1; i < len; i++) {\n            var char = matchStr.charAt(i);\n            if (char === startChar) {\n                numOpenBraces++;\n            }\n            else if (char === endChar) {\n                numOpenBraces = Math.max(numOpenBraces - 1, 0);\n            }\n        }\n        // If the number of open braces matches the number of close braces in\n        // the URL minus the last character, then the match has *unbalanced*\n        // braces because of the last character. Example of unbalanced braces\n        // from the regex match:\n        //     \"http://example.com?a[]=1]\"\n        if (numOpenBraces === 0) {\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Determine if there's an invalid character after the TLD in a URL. Valid\n     * characters after TLD are ':/?#'. Exclude scheme matched URLs from this\n     * check.\n     *\n     * @protected\n     * @param {String} urlMatch The matched URL, if there was one. Will be an\n     *   empty string if the match is not a URL match.\n     * @param {String} schemeUrlMatch The match URL string for a scheme\n     *   match. Ex: 'http://yahoo.com'. This is used to match something like\n     *   'http://localhost', where we won't double check that the domain name\n     *   has at least one '.' in it.\n     * @return {Number} the position where the invalid character was found. If\n     *   no such character was found, returns -1\n     */\n    UrlMatcher.prototype.matchHasInvalidCharAfterTld = function (urlMatch, schemeUrlMatch) {\n        if (!urlMatch) {\n            return -1;\n        }\n        var offset = 0;\n        if (schemeUrlMatch) {\n            offset = urlMatch.indexOf(':');\n            urlMatch = urlMatch.slice(offset);\n        }\n        var re = new RegExp(\"^((.?\\/\\/)?[-.\" + alphaNumericAndMarksCharsStr + \"]*[-\" + alphaNumericAndMarksCharsStr + \"]\\\\.[-\" + alphaNumericAndMarksCharsStr + \"]+)\");\n        var res = re.exec(urlMatch);\n        if (res === null) {\n            return -1;\n        }\n        offset += res[1].length;\n        urlMatch = urlMatch.slice(res[1].length);\n        if (/^[^-.A-Za-z0-9:\\/?#]/.test(urlMatch)) {\n            return offset;\n        }\n        return -1;\n    };\n    return UrlMatcher;\n}(Matcher));\nexport { UrlMatcher };\n\n//# sourceMappingURL=url-matcher.js.map\n","import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Hashtag\n * @extends Autolinker.match.Match\n *\n * Represents a Hashtag match found in an input string which should be\n * Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more\n * details.\n */\nvar HashtagMatch = /** @class */ (function (_super) {\n    __extends(HashtagMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function HashtagMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} serviceName\n         *\n         * The service to point hashtag matches to. See {@link Autolinker#hashtag}\n         * for available values.\n         */\n        _this.serviceName = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} hashtag (required)\n         *\n         * The HashtagMatch that was matched, without the '#'.\n         */\n        _this.hashtag = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        _this.serviceName = cfg.serviceName;\n        _this.hashtag = cfg.hashtag;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of HashtagMatch, returns 'hashtag'.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getType = function () {\n        return 'hashtag';\n    };\n    /**\n     * Returns the configured {@link #serviceName} to point the HashtagMatch to.\n     * Ex: 'facebook', 'twitter'.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getServiceName = function () {\n        return this.serviceName;\n    };\n    /**\n     * Returns the matched hashtag, without the '#' character.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getHashtag = function () {\n        return this.hashtag;\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getAnchorHref = function () {\n        var serviceName = this.serviceName, hashtag = this.hashtag;\n        switch (serviceName) {\n            case 'twitter':\n                return 'https://twitter.com/hashtag/' + hashtag;\n            case 'facebook':\n                return 'https://www.facebook.com/hashtag/' + hashtag;\n            case 'instagram':\n                return 'https://instagram.com/explore/tags/' + hashtag;\n            case 'tiktok':\n                return 'https://www.tiktok.com/tag/' + hashtag;\n            default: // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case.\n                throw new Error('Unknown service name to point hashtag to: ' + serviceName);\n        }\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    HashtagMatch.prototype.getAnchorText = function () {\n        return '#' + this.hashtag;\n    };\n    return HashtagMatch;\n}(Match));\nexport { HashtagMatch };\n\n//# sourceMappingURL=hashtag-match.js.map\n","import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Mention\n * @extends Autolinker.match.Match\n *\n * Represents a Mention match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar MentionMatch = /** @class */ (function (_super) {\n    __extends(MentionMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function MentionMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} serviceName\n         *\n         * The service to point mention matches to. See {@link Autolinker#mention}\n         * for available values.\n         */\n        _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} mention (required)\n         *\n         * The Mention that was matched, without the '@' character.\n         */\n        _this.mention = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        _this.mention = cfg.mention;\n        _this.serviceName = cfg.serviceName;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of MentionMatch, returns 'mention'.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getType = function () {\n        return 'mention';\n    };\n    /**\n     * Returns the mention, without the '@' character.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getMention = function () {\n        return this.mention;\n    };\n    /**\n     * Returns the configured {@link #serviceName} to point the mention to.\n     * Ex: 'instagram', 'twitter', 'soundcloud'.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getServiceName = function () {\n        return this.serviceName;\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getAnchorHref = function () {\n        switch (this.serviceName) {\n            case 'twitter':\n                return 'https://twitter.com/' + this.mention;\n            case 'instagram':\n                return 'https://instagram.com/' + this.mention;\n            case 'soundcloud':\n                return 'https://soundcloud.com/' + this.mention;\n            case 'tiktok':\n                return 'https://www.tiktok.com/@' + this.mention;\n            default: // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case.\n                throw new Error('Unknown service name to point mention to: ' + this.serviceName);\n        }\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    MentionMatch.prototype.getAnchorText = function () {\n        return '@' + this.mention;\n    };\n    /**\n     * Returns the CSS class suffixes that should be used on a tag built with\n     * the match. See {@link Autolinker.match.Match#getCssClassSuffixes} for\n     * details.\n     *\n     * @return {String[]}\n     */\n    MentionMatch.prototype.getCssClassSuffixes = function () {\n        var cssClassSuffixes = _super.prototype.getCssClassSuffixes.call(this), serviceName = this.getServiceName();\n        if (serviceName) {\n            cssClassSuffixes.push(serviceName);\n        }\n        return cssClassSuffixes;\n    };\n    return MentionMatch;\n}(Match));\nexport { MentionMatch };\n\n//# sourceMappingURL=mention-match.js.map\n","import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Phone\n * @extends Autolinker.match.Match\n *\n * Represents a Phone number match found in an input string which should be\n * Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more\n * details.\n */\nvar PhoneMatch = /** @class */ (function (_super) {\n    __extends(PhoneMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function PhoneMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @protected\n         * @property {String} number (required)\n         *\n         * The phone number that was matched, without any delimiter characters.\n         *\n         * Note: This is a string to allow for prefixed 0's.\n         */\n        _this.number = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @protected\n         * @property  {Boolean} plusSign (required)\n         *\n         * `true` if the matched phone number started with a '+' sign. We'll include\n         * it in the `tel:` URL if so, as this is needed for international numbers.\n         *\n         * Ex: '+1 (123) 456 7879'\n         */\n        _this.plusSign = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        _this.number = cfg.number;\n        _this.plusSign = cfg.plusSign;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of PhoneMatch, returns 'phone'.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getType = function () {\n        return 'phone';\n    };\n    /**\n     * Returns the phone number that was matched as a string, without any\n     * delimiter characters.\n     *\n     * Note: This is a string to allow for prefixed 0's.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getPhoneNumber = function () {\n        return this.number;\n    };\n    /**\n     * Alias of {@link #getPhoneNumber}, returns the phone number that was\n     * matched as a string, without any delimiter characters.\n     *\n     * Note: This is a string to allow for prefixed 0's.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getNumber = function () {\n        return this.getPhoneNumber();\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getAnchorHref = function () {\n        return 'tel:' + (this.plusSign ? '+' : '') + this.number;\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    PhoneMatch.prototype.getAnchorText = function () {\n        return this.matchedText;\n    };\n    return PhoneMatch;\n}(Match));\nexport { PhoneMatch };\n\n//# sourceMappingURL=phone-match.js.map\n","import { __extends } from \"tslib\";\nimport { Match } from \"./match\";\n/**\n * @class Autolinker.match.Url\n * @extends Autolinker.match.Match\n *\n * Represents a Url match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar UrlMatch = /** @class */ (function (_super) {\n    __extends(UrlMatch, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match\n     *   instance, specified in an Object (map).\n     */\n    function UrlMatch(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} url (required)\n         *\n         * The url that was matched.\n         */\n        _this.url = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {\"scheme\"/\"www\"/\"tld\"} urlMatchType (required)\n         *\n         * The type of URL match that this class represents. This helps to determine\n         * if the match was made in the original text with a prefixed scheme (ex:\n         * 'http://www.google.com'), a prefixed 'www' (ex: 'www.google.com'), or\n         * was matched by a known top-level domain (ex: 'google.com').\n         */\n        _this.urlMatchType = 'scheme'; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} protocolUrlMatch (required)\n         *\n         * `true` if the URL is a match which already has a protocol (i.e.\n         * 'http://'), `false` if the match was from a 'www' or known TLD match.\n         */\n        _this.protocolUrlMatch = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} protocolRelativeMatch (required)\n         *\n         * `true` if the URL is a protocol-relative match. A protocol-relative match\n         * is a URL that starts with '//', and will be either http:// or https://\n         * based on the protocol that the site is loaded under.\n         */\n        _this.protocolRelativeMatch = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Object} stripPrefix (required)\n         *\n         * The Object form of {@link Autolinker#cfg-stripPrefix}.\n         */\n        _this.stripPrefix = { scheme: true, www: true }; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} stripTrailingSlash (required)\n         * @inheritdoc Autolinker#cfg-stripTrailingSlash\n         */\n        _this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} decodePercentEncoding (required)\n         * @inheritdoc Autolinker#cfg-decodePercentEncoding\n         */\n        _this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @private\n         * @property {RegExp} schemePrefixRegex\n         *\n         * A regular expression used to remove the 'http://' or 'https://' from\n         * URLs.\n         */\n        _this.schemePrefixRegex = /^(https?:\\/\\/)?/i;\n        /**\n         * @private\n         * @property {RegExp} wwwPrefixRegex\n         *\n         * A regular expression used to remove the 'www.' from URLs.\n         */\n        _this.wwwPrefixRegex = /^(https?:\\/\\/)?(www\\.)?/i;\n        /**\n         * @private\n         * @property {RegExp} protocolRelativeRegex\n         *\n         * The regular expression used to remove the protocol-relative '//' from the {@link #url} string, for purposes\n         * of {@link #getAnchorText}. A protocol-relative URL is, for example, \"//yahoo.com\"\n         */\n        _this.protocolRelativeRegex = /^\\/\\//;\n        /**\n         * @private\n         * @property {Boolean} protocolPrepended\n         *\n         * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the\n         * {@link #url} did not have a protocol)\n         */\n        _this.protocolPrepended = false;\n        _this.urlMatchType = cfg.urlMatchType;\n        _this.url = cfg.url;\n        _this.protocolUrlMatch = cfg.protocolUrlMatch;\n        _this.protocolRelativeMatch = cfg.protocolRelativeMatch;\n        _this.stripPrefix = cfg.stripPrefix;\n        _this.stripTrailingSlash = cfg.stripTrailingSlash;\n        _this.decodePercentEncoding = cfg.decodePercentEncoding;\n        return _this;\n    }\n    /**\n     * Returns a string name for the type of match that this class represents.\n     * For the case of UrlMatch, returns 'url'.\n     *\n     * @return {String}\n     */\n    UrlMatch.prototype.getType = function () {\n        return 'url';\n    };\n    /**\n     * Returns a string name for the type of URL match that this class\n     * represents.\n     *\n     * This helps to determine if the match was made in the original text with a\n     * prefixed scheme (ex: 'http://www.google.com'), a prefixed 'www' (ex:\n     * 'www.google.com'), or was matched by a known top-level domain (ex:\n     * 'google.com').\n     *\n     * @return {\"scheme\"/\"www\"/\"tld\"}\n     */\n    UrlMatch.prototype.getUrlMatchType = function () {\n        return this.urlMatchType;\n    };\n    /**\n     * Returns the url that was matched, assuming the protocol to be 'http://' if the original\n     * match was missing a protocol.\n     *\n     * @return {String}\n     */\n    UrlMatch.prototype.getUrl = function () {\n        var url = this.url;\n        // if the url string doesn't begin with a protocol, assume 'http://'\n        if (!this.protocolRelativeMatch && !this.protocolUrlMatch && !this.protocolPrepended) {\n            url = this.url = 'http://' + url;\n            this.protocolPrepended = true;\n        }\n        return url;\n    };\n    /**\n     * Returns the anchor href that should be generated for the match.\n     *\n     * @return {String}\n     */\n    UrlMatch.prototype.getAnchorHref = function () {\n        var url = this.getUrl();\n        return url.replace(/&amp;/g, '&'); // any &amp;'s in the URL should be converted back to '&' if they were displayed as &amp; in the source html\n    };\n    /**\n     * Returns the anchor text that should be generated for the match.\n     *\n     * @return {String}\n     */\n    UrlMatch.prototype.getAnchorText = function () {\n        var anchorText = this.getMatchedText();\n        if (this.protocolRelativeMatch) {\n            // Strip off any protocol-relative '//' from the anchor text\n            anchorText = this.stripProtocolRelativePrefix(anchorText);\n        }\n        if (this.stripPrefix.scheme) {\n            anchorText = this.stripSchemePrefix(anchorText);\n        }\n        if (this.stripPrefix.www) {\n            anchorText = this.stripWwwPrefix(anchorText);\n        }\n        if (this.stripTrailingSlash) {\n            anchorText = this.removeTrailingSlash(anchorText); // remove trailing slash, if there is one\n        }\n        if (this.decodePercentEncoding) {\n            anchorText = this.removePercentEncoding(anchorText);\n        }\n        return anchorText;\n    };\n    // ---------------------------------------\n    // Utility Functionality\n    /**\n     * Strips the scheme prefix (such as \"http://\" or \"https://\") from the given\n     * `url`.\n     *\n     * @private\n     * @param {String} url The text of the anchor that is being generated, for\n     *   which to strip off the url scheme.\n     * @return {String} The `url`, with the scheme stripped.\n     */\n    UrlMatch.prototype.stripSchemePrefix = function (url) {\n        return url.replace(this.schemePrefixRegex, '');\n    };\n    /**\n     * Strips the 'www' prefix from the given `url`.\n     *\n     * @private\n     * @param {String} url The text of the anchor that is being generated, for\n     *   which to strip off the 'www' if it exists.\n     * @return {String} The `url`, with the 'www' stripped.\n     */\n    UrlMatch.prototype.stripWwwPrefix = function (url) {\n        return url.replace(this.wwwPrefixRegex, '$1'); // leave any scheme ($1), it one exists\n    };\n    /**\n     * Strips any protocol-relative '//' from the anchor text.\n     *\n     * @private\n     * @param {String} text The text of the anchor that is being generated, for which to strip off the\n     *   protocol-relative prefix (such as stripping off \"//\")\n     * @return {String} The `anchorText`, with the protocol-relative prefix stripped.\n     */\n    UrlMatch.prototype.stripProtocolRelativePrefix = function (text) {\n        return text.replace(this.protocolRelativeRegex, '');\n    };\n    /**\n     * Removes any trailing slash from the given `anchorText`, in preparation for the text to be displayed.\n     *\n     * @private\n     * @param {String} anchorText The text of the anchor that is being generated, for which to remove any trailing\n     *   slash ('/') that may exist.\n     * @return {String} The `anchorText`, with the trailing slash removed.\n     */\n    UrlMatch.prototype.removeTrailingSlash = function (anchorText) {\n        if (anchorText.charAt(anchorText.length - 1) === '/') {\n            anchorText = anchorText.slice(0, -1);\n        }\n        return anchorText;\n    };\n    /**\n     * Decodes percent-encoded characters from the given `anchorText`, in\n     * preparation for the text to be displayed.\n     *\n     * @private\n     * @param {String} anchorText The text of the anchor that is being\n     *   generated, for which to decode any percent-encoded characters.\n     * @return {String} The `anchorText`, with the percent-encoded characters\n     *   decoded.\n     */\n    UrlMatch.prototype.removePercentEncoding = function (anchorText) {\n        // First, convert a few of the known % encodings to the corresponding\n        // HTML entities that could accidentally be interpretted as special\n        // HTML characters\n        var preProcessedEntityAnchorText = anchorText\n            .replace(/%22/gi, '&quot;') // \" char\n            .replace(/%26/gi, '&amp;') // & char\n            .replace(/%27/gi, '&#39;') // ' char\n            .replace(/%3C/gi, '&lt;') // < char\n            .replace(/%3E/gi, '&gt;'); // > char\n        try {\n            // Now attempt to decode the rest of the anchor text\n            return decodeURIComponent(preProcessedEntityAnchorText);\n        }\n        catch (e) { // Invalid % escape sequence in the anchor text\n            return preProcessedEntityAnchorText;\n        }\n    };\n    return UrlMatch;\n}(Match));\nexport { UrlMatch };\n\n//# sourceMappingURL=url-match.js.map\n","/**\n * @abstract\n * @class Autolinker.matcher.Matcher\n *\n * An abstract class and interface for individual matchers to find matches in\n * an input string with linkified versions of them.\n *\n * Note that Matchers do not take HTML into account - they must be fed the text\n * nodes of any HTML string, which is handled by {@link Autolinker#parse}.\n */\nvar Matcher = /** @class */ (function () {\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Matcher\n     *   instance, specified in an Object (map).\n     */\n    function Matcher(cfg) {\n        /**\n         * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required)\n         *\n         * Reference to the AnchorTagBuilder instance to use to generate HTML tags\n         * for {@link Autolinker.match.Match Matches}.\n         */\n        this.__jsduckDummyDocProp = null; // property used just to get the above doc comment into the ES5 output and documentation generator\n        this.tagBuilder = cfg.tagBuilder;\n    }\n    return Matcher;\n}());\nexport { Matcher };\n\n//# sourceMappingURL=matcher.js.map\n","/*\n * This file builds and stores a library of the common regular expressions used\n * by the Autolinker utility.\n *\n * Other regular expressions may exist ad-hoc, but these are generally the\n * regular expressions that are shared between source files.\n */\n/**\n * Regular expression to match upper and lowercase ASCII letters\n */\nexport var letterRe = /[A-Za-z]/;\n/**\n * Regular expression to match ASCII digits\n */\nexport var digitRe = /[\\d]/;\n/**\n * Regular expression to match everything *except* ASCII digits\n */\nexport var nonDigitRe = /[\\D]/;\n/**\n * Regular expression to match whitespace\n */\nexport var whitespaceRe = /\\s/;\n/**\n * Regular expression to match quote characters\n */\nexport var quoteRe = /['\"]/;\n/**\n * Regular expression to match the range of ASCII control characters (0-31), and\n * the backspace char (127)\n */\nexport var controlCharsRe = /[\\x00-\\x1F\\x7F]/;\n/**\n * The string form of a regular expression that would match all of the\n * alphabetic (\"letter\") chars in the unicode character set when placed in a\n * RegExp character class (`[]`). This includes all international alphabetic\n * characters.\n *\n * These would be the characters matched by unicode regex engines `\\p{L}`\n * escape (\"all letters\").\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Letter'\n *   regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n *   Expression literal rather than a string literal to prevent UglifyJS from\n *   compressing the unicode escape sequences into their actual unicode\n *   characters. If Uglify compresses these into the unicode characters\n *   themselves, this results in the error \"Range out of order in character\n *   class\" when these characters are used inside of a Regular Expression\n *   character class (`[]`). See usages of this const. Alternatively, we can set\n *   the UglifyJS option `ascii_only` to true for the build, but that doesn't\n *   help others who are pulling in Autolinker into their own build and running\n *   UglifyJS themselves.\n */\nexport var alphaCharsStr = /A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC/\n    .source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all emoji characters\n * Based on the emoji regex defined in this article: https://thekevinscott.com/emojis-in-javascript/\n */\nexport var emojiStr = /\\u2700-\\u27bf\\udde6-\\uddff\\ud800-\\udbff\\udc00-\\udfff\\ufe0e\\ufe0f\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ud83c\\udffb-\\udfff\\u200d\\u3299\\u3297\\u303d\\u3030\\u24c2\\ud83c\\udd70-\\udd71\\udd7e-\\udd7f\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01-\\ude02\\ude1a\\ude2f\\ude32-\\ude3a\\ude50-\\ude51\\u203c\\u2049\\u25aa-\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u00a9\\u00ae\\u2122\\u2139\\udc04\\u2600-\\u26FF\\u2b05\\u2b06\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u231a\\u231b\\u2328\\u23cf\\u23e9-\\u23f3\\u23f8-\\u23fa\\udccf\\u2935\\u2934\\u2190-\\u21ff/\n    .source;\n/**\n * The string form of a regular expression that would match all of the\n * combining mark characters in the unicode character set when placed in a\n * RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines `\\p{M}`\n * escape (\"all marks\").\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Mark'\n *   regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n *   Expression literal rather than a string literal to prevent UglifyJS from\n *   compressing the unicode escape sequences into their actual unicode\n *   characters. If Uglify compresses these into the unicode characters\n *   themselves, this results in the error \"Range out of order in character\n *   class\" when these characters are used inside of a Regular Expression\n *   character class (`[]`). See usages of this const. Alternatively, we can set\n *   the UglifyJS option `ascii_only` to true for the build, but that doesn't\n *   help others who are pulling in Autolinker into their own build and running\n *   UglifyJS themselves.\n */\nexport var marksStr = /\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F/\n    .source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all of the\n * alphabetic (\"letter\") chars, emoji, and combining marks in the unicode character set\n * when placed in a RegExp character class (`[]`). This includes all\n * international alphabetic characters.\n *\n * These would be the characters matched by unicode regex engines `\\p{L}\\p{M}`\n * escapes and emoji characters.\n */\nexport var alphaCharsAndMarksStr = alphaCharsStr + emojiStr + marksStr;\n/**\n * The string form of a regular expression that would match all of the\n * decimal number chars in the unicode character set when placed in a RegExp\n * character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines `\\p{Nd}`\n * escape (\"all decimal numbers\")\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Decimal_Number'\n *   regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n *   Expression literal rather than a string literal to prevent UglifyJS from\n *   compressing the unicode escape sequences into their actual unicode\n *   characters. If Uglify compresses these into the unicode characters\n *   themselves, this results in the error \"Range out of order in character\n *   class\" when these characters are used inside of a Regular Expression\n *   character class (`[]`). See usages of this const. Alternatively, we can set\n *   the UglifyJS option `ascii_only` to true for the build, but that doesn't\n *   help others who are pulling in Autolinker into their own build and running\n *   UglifyJS themselves.\n */\nexport var decimalNumbersStr = /0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19/\n    .source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all of the\n * letters and decimal number chars in the unicode character set when placed in\n * a RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines\n * `[\\p{L}\\p{Nd}]` escape (\"all letters and decimal numbers\")\n */\nexport var alphaNumericCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;\n/**\n * The string form of a regular expression that would match all of the\n * letters, combining marks, and decimal number chars in the unicode character\n * set when placed in a RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines\n * `[\\p{L}\\p{M}\\p{Nd}]` escape (\"all letters, combining marks, and decimal\n * numbers\")\n */\nexport var alphaNumericAndMarksCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;\n// Simplified IP regular expression\nvar ipStr = '(?:[' + decimalNumbersStr + ']{1,3}\\\\.){3}[' + decimalNumbersStr + ']{1,3}';\n// Protected domain label which do not allow \"-\" character on the beginning and the end of a single label\nvar domainLabelStr = '[' + alphaNumericAndMarksCharsStr + '](?:[' + alphaNumericAndMarksCharsStr + '\\\\-]{0,61}[' + alphaNumericAndMarksCharsStr + '])?';\nvar getDomainLabelStr = function (group) {\n    return '(?=(' + domainLabelStr + '))\\\\' + group;\n};\n/**\n * A function to match domain names of a URL or email address.\n * Ex: 'google', 'yahoo', 'some-other-company', etc.\n */\nexport var getDomainNameStr = function (group) {\n    return '(?:' + getDomainLabelStr(group) + '(?:\\\\.' + getDomainLabelStr(group + 1) + '){0,126}|' + ipStr + ')';\n};\n/**\n * A regular expression to match domain names of a URL or email address.\n * Ex: 'google', 'yahoo', 'some-other-company', etc.\n */\nexport var domainNameRegex = new RegExp('[' + alphaNumericAndMarksCharsStr + '.\\\\-]*[' + alphaNumericAndMarksCharsStr + '\\\\-]');\n/**\n * A regular expression that is simply the character class of the characters\n * that may be used in a domain name, minus the '-' or '.'\n */\nexport var domainNameCharRegex = new RegExp(\"[\".concat(alphaNumericAndMarksCharsStr, \"]\"));\n\n//# sourceMappingURL=regex-lib.js.map\n","// NOTE: THIS IS A GENERATED FILE\n// To update with the latest TLD list, run `npm run update-tld-regex` or `yarn update-tld-regex` (depending on which you have installed)\nexport var tldRegex = /(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|travelchannel|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|university|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|etisalat|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abarth|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|macys|mango|media|miami|money|movie|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|duck|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|大众汽车|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceo|cfa|cfd|com|cpa|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/;\n\n//# sourceMappingURL=tld-regex.js.map\n","import { __assign, __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr, domainNameCharRegex } from \"../regex-lib\";\nimport { EmailMatch } from \"../match/email-match\";\nimport { throwUnhandledCaseError } from '../utils';\nimport { tldRegex } from \"./tld-regex\";\n// For debugging: search for other \"For debugging\" lines\n// import CliTable from 'cli-table';\n// RegExp objects which are shared by all instances of EmailMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating EmailMatcher and its RegExp \n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314). \n// See descriptions of the properties where they are used for details about them\nvar localPartCharRegex = new RegExp(\"[\".concat(alphaNumericAndMarksCharsStr, \"!#$%&'*+/=?^_`{|}~-]\"));\nvar strictTldRegex = new RegExp(\"^\".concat(tldRegex.source, \"$\"));\n/**\n * @class Autolinker.matcher.Email\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find email matches in an input string.\n *\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more details.\n */\nvar EmailMatcher = /** @class */ (function (_super) {\n    __extends(EmailMatcher, _super);\n    function EmailMatcher() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * Valid characters that can be used in the \"local\" part of an email address,\n         * i.e. the \"name\" part of \"name@site.com\"\n         */\n        _this.localPartCharRegex = localPartCharRegex;\n        /**\n         * Stricter TLD regex which adds a beginning and end check to ensure\n         * the string is a valid TLD\n         */\n        _this.strictTldRegex = strictTldRegex;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    EmailMatcher.prototype.parseMatches = function (text) {\n        var tagBuilder = this.tagBuilder, localPartCharRegex = this.localPartCharRegex, strictTldRegex = this.strictTldRegex, matches = [], len = text.length, noCurrentEmailMatch = new CurrentEmailMatch();\n        // for matching a 'mailto:' prefix\n        var mailtoTransitions = {\n            'm': 'a',\n            'a': 'i',\n            'i': 'l',\n            'l': 't',\n            't': 'o',\n            'o': ':',\n        };\n        var charIdx = 0, state = 0 /* NonEmailMatch */, currentEmailMatch = noCurrentEmailMatch;\n        // For debugging: search for other \"For debugging\" lines\n        // const table = new CliTable( {\n        // \thead: [ 'charIdx', 'char', 'state', 'charIdx', 'currentEmailAddress.idx', 'hasDomainDot' ]\n        // } );\n        while (charIdx < len) {\n            var char = text.charAt(charIdx);\n            // For debugging: search for other \"For debugging\" lines\n            // table.push( \n            // \t[ charIdx, char, State[ state ], charIdx, currentEmailAddress.idx, currentEmailAddress.hasDomainDot ] \n            // );\n            switch (state) {\n                case 0 /* NonEmailMatch */:\n                    stateNonEmailAddress(char);\n                    break;\n                case 1 /* Mailto */:\n                    stateMailTo(text.charAt(charIdx - 1), char);\n                    break;\n                case 2 /* LocalPart */:\n                    stateLocalPart(char);\n                    break;\n                case 3 /* LocalPartDot */:\n                    stateLocalPartDot(char);\n                    break;\n                case 4 /* AtSign */:\n                    stateAtSign(char);\n                    break;\n                case 5 /* DomainChar */:\n                    stateDomainChar(char);\n                    break;\n                case 6 /* DomainHyphen */:\n                    stateDomainHyphen(char);\n                    break;\n                case 7 /* DomainDot */:\n                    stateDomainDot(char);\n                    break;\n                default:\n                    throwUnhandledCaseError(state);\n            }\n            // For debugging: search for other \"For debugging\" lines\n            // table.push( \n            // \t[ charIdx, char, State[ state ], charIdx, currentEmailAddress.idx, currentEmailAddress.hasDomainDot ] \n            // );\n            charIdx++;\n        }\n        // Capture any valid match at the end of the string\n        captureMatchIfValidAndReset();\n        // For debugging: search for other \"For debugging\" lines\n        //console.log( '\\n' + table.toString() );\n        return matches;\n        // Handles the state when we're not in an email address\n        function stateNonEmailAddress(char) {\n            if (char === 'm') {\n                beginEmailMatch(1 /* Mailto */);\n            }\n            else if (localPartCharRegex.test(char)) {\n                beginEmailMatch();\n            }\n            else {\n                // not an email address character, continue\n            }\n        }\n        // Handles if we're reading a 'mailto:' prefix on the string\n        function stateMailTo(prevChar, char) {\n            if (prevChar === ':') {\n                // We've reached the end of the 'mailto:' prefix\n                if (localPartCharRegex.test(char)) {\n                    state = 2 /* LocalPart */;\n                    currentEmailMatch = new CurrentEmailMatch(__assign(__assign({}, currentEmailMatch), { hasMailtoPrefix: true }));\n                }\n                else {\n                    // we've matched 'mailto:' but didn't get anything meaningful\n                    // immediately afterwards (for example, we encountered a \n                    // space character, or an '@' character which formed 'mailto:@'\n                    resetToNonEmailMatchState();\n                }\n            }\n            else if (mailtoTransitions[prevChar] === char) {\n                // We're currently reading the 'mailto:' prefix, stay in\n                // Mailto state\n            }\n            else if (localPartCharRegex.test(char)) {\n                // We we're reading a prefix of 'mailto:', but encountered a\n                // different character that didn't continue the prefix\n                state = 2 /* LocalPart */;\n            }\n            else if (char === '.') {\n                // We we're reading a prefix of 'mailto:', but encountered a\n                // dot character\n                state = 3 /* LocalPartDot */;\n            }\n            else if (char === '@') {\n                // We we're reading a prefix of 'mailto:', but encountered a\n                // an @ character\n                state = 4 /* AtSign */;\n            }\n            else {\n                // not an email address character, return to \"NonEmailAddress\" state\n                resetToNonEmailMatchState();\n            }\n        }\n        // Handles the state when we're currently in the \"local part\" of an \n        // email address (as opposed to the \"domain part\")\n        function stateLocalPart(char) {\n            if (char === '.') {\n                state = 3 /* LocalPartDot */;\n            }\n            else if (char === '@') {\n                state = 4 /* AtSign */;\n            }\n            else if (localPartCharRegex.test(char)) {\n                // stay in the \"local part\" of the email address\n            }\n            else {\n                // not an email address character, return to \"NonEmailAddress\" state\n                resetToNonEmailMatchState();\n            }\n        }\n        // Handles the state where we've read \n        function stateLocalPartDot(char) {\n            if (char === '.') {\n                // We read a second '.' in a row, not a valid email address \n                // local part\n                resetToNonEmailMatchState();\n            }\n            else if (char === '@') {\n                // We read the '@' character immediately after a dot ('.'), not \n                // an email address\n                resetToNonEmailMatchState();\n            }\n            else if (localPartCharRegex.test(char)) {\n                state = 2 /* LocalPart */;\n            }\n            else {\n                // Anything else, not an email address\n                resetToNonEmailMatchState();\n            }\n        }\n        function stateAtSign(char) {\n            if (domainNameCharRegex.test(char)) {\n                state = 5 /* DomainChar */;\n            }\n            else {\n                // Anything else, not an email address\n                resetToNonEmailMatchState();\n            }\n        }\n        function stateDomainChar(char) {\n            if (char === '.') {\n                state = 7 /* DomainDot */;\n            }\n            else if (char === '-') {\n                state = 6 /* DomainHyphen */;\n            }\n            else if (domainNameCharRegex.test(char)) {\n                // Stay in the DomainChar state\n            }\n            else {\n                // Anything else, we potentially matched if the criteria has\n                // been met\n                captureMatchIfValidAndReset();\n            }\n        }\n        function stateDomainHyphen(char) {\n            if (char === '-' || char === '.') {\n                // Not valid to have two hyphens (\"--\") or hypen+dot (\"-.\")\n                captureMatchIfValidAndReset();\n            }\n            else if (domainNameCharRegex.test(char)) {\n                state = 5 /* DomainChar */;\n            }\n            else {\n                // Anything else\n                captureMatchIfValidAndReset();\n            }\n        }\n        function stateDomainDot(char) {\n            if (char === '.' || char === '-') {\n                // not valid to have two dots (\"..\") or dot+hypen (\".-\")\n                captureMatchIfValidAndReset();\n            }\n            else if (domainNameCharRegex.test(char)) {\n                state = 5 /* DomainChar */;\n                // After having read a '.' and then a valid domain character,\n                // we now know that the domain part of the email is valid, and\n                // we have found at least a partial EmailMatch (however, the\n                // email address may have additional characters from this point)\n                currentEmailMatch = new CurrentEmailMatch(__assign(__assign({}, currentEmailMatch), { hasDomainDot: true }));\n            }\n            else {\n                // Anything else\n                captureMatchIfValidAndReset();\n            }\n        }\n        function beginEmailMatch(newState) {\n            if (newState === void 0) { newState = 2 /* LocalPart */; }\n            state = newState;\n            currentEmailMatch = new CurrentEmailMatch({ idx: charIdx });\n        }\n        function resetToNonEmailMatchState() {\n            state = 0 /* NonEmailMatch */;\n            currentEmailMatch = noCurrentEmailMatch;\n        }\n        /*\n         * Captures the current email address as an EmailMatch if it's valid,\n         * and resets the state to read another email address.\n         */\n        function captureMatchIfValidAndReset() {\n            if (currentEmailMatch.hasDomainDot) { // we need at least one dot in the domain to be considered a valid email address\n                var matchedText = text.slice(currentEmailMatch.idx, charIdx);\n                // If we read a '.' or '-' char that ended the email address\n                // (valid domain name characters, but only valid email address\n                // characters if they are followed by something else), strip \n                // it off now\n                if (/[-.]$/.test(matchedText)) {\n                    matchedText = matchedText.slice(0, -1);\n                }\n                var emailAddress = currentEmailMatch.hasMailtoPrefix\n                    ? matchedText.slice('mailto:'.length)\n                    : matchedText;\n                // if the email address has a valid TLD, add it to the list of matches\n                if (doesEmailHaveValidTld(emailAddress)) {\n                    matches.push(new EmailMatch({\n                        tagBuilder: tagBuilder,\n                        matchedText: matchedText,\n                        offset: currentEmailMatch.idx,\n                        email: emailAddress\n                    }));\n                }\n            }\n            resetToNonEmailMatchState();\n            /**\n             * Determines if the given email address has a valid TLD or not\n             * @param {string} emailAddress - email address\n             * @return {Boolean} - true is email have valid TLD, false otherwise\n             */\n            function doesEmailHaveValidTld(emailAddress) {\n                var emailAddressTld = emailAddress.split('.').pop() || '';\n                var emailAddressNormalized = emailAddressTld.toLowerCase();\n                var isValidTld = strictTldRegex.test(emailAddressNormalized);\n                return isValidTld;\n            }\n        }\n    };\n    return EmailMatcher;\n}(Matcher));\nexport { EmailMatcher };\nvar CurrentEmailMatch = /** @class */ (function () {\n    function CurrentEmailMatch(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        this.idx = cfg.idx !== undefined ? cfg.idx : -1;\n        this.hasMailtoPrefix = !!cfg.hasMailtoPrefix;\n        this.hasDomainDot = !!cfg.hasDomainDot;\n    }\n    return CurrentEmailMatch;\n}());\n\n//# sourceMappingURL=email-matcher.js.map\n","import { alphaCharsStr } from \"../regex-lib\";\n/**\n * @private\n * @class Autolinker.matcher.UrlMatchValidator\n * @singleton\n *\n * Used by Autolinker to filter out false URL positives from the\n * {@link Autolinker.matcher.Url UrlMatcher}.\n *\n * Due to the limitations of regular expressions (including the missing feature\n * of look-behinds in JS regular expressions), we cannot always determine the\n * validity of a given match. This class applies a bit of additional logic to\n * filter out any false positives that have been matched by the\n * {@link Autolinker.matcher.Url UrlMatcher}.\n */\nvar UrlMatchValidator = /** @class */ (function () {\n    function UrlMatchValidator() {\n    }\n    /**\n     * Determines if a given URL match found by the {@link Autolinker.matcher.Url UrlMatcher}\n     * is valid. Will return `false` for:\n     *\n     * 1) URL matches which do not have at least have one period ('.') in the\n     *    domain name (effectively skipping over matches like \"abc:def\").\n     *    However, URL matches with a protocol will be allowed (ex: 'http://localhost')\n     * 2) URL matches which do not have at least one word character in the\n     *    domain name (effectively skipping over matches like \"git:1.0\").\n     *    However, URL matches with a protocol will be allowed (ex: 'intra-net://271219.76')\n     * 3) A protocol-relative url match (a URL beginning with '//') whose\n     *    previous character is a word character (effectively skipping over\n     *    strings like \"abc//google.com\")\n     *\n     * Otherwise, returns `true`.\n     *\n     * @param {String} urlMatch The matched URL, if there was one. Will be an\n     *   empty string if the match is not a URL match.\n     * @param {String} protocolUrlMatch The match URL string for a protocol\n     *   match. Ex: 'http://yahoo.com'. This is used to match something like\n     *   'http://localhost', where we won't double check that the domain name\n     *   has at least one '.' in it.\n     * @return {Boolean} `true` if the match given is valid and should be\n     *   processed, or `false` if the match is invalid and/or should just not be\n     *   processed.\n     */\n    UrlMatchValidator.isValid = function (urlMatch, protocolUrlMatch) {\n        if ((protocolUrlMatch && !this.isValidUriScheme(protocolUrlMatch)) ||\n            this.urlMatchDoesNotHaveProtocolOrDot(urlMatch, protocolUrlMatch) || // At least one period ('.') must exist in the URL match for us to consider it an actual URL, *unless* it was a full protocol match (like 'http://localhost')\n            (this.urlMatchDoesNotHaveAtLeastOneWordChar(urlMatch, protocolUrlMatch) && // At least one letter character must exist in the domain name after a protocol match. Ex: skip over something like \"git:1.0\"\n                !this.isValidIpAddress(urlMatch)) || // Except if it's an IP address\n            this.containsMultipleDots(urlMatch)) {\n            return false;\n        }\n        return true;\n    };\n    UrlMatchValidator.isValidIpAddress = function (uriSchemeMatch) {\n        var newRegex = new RegExp(this.hasFullProtocolRegex.source + this.ipRegex.source);\n        var uriScheme = uriSchemeMatch.match(newRegex);\n        return uriScheme !== null;\n    };\n    UrlMatchValidator.containsMultipleDots = function (urlMatch) {\n        var stringBeforeSlash = urlMatch;\n        if (this.hasFullProtocolRegex.test(urlMatch)) {\n            stringBeforeSlash = urlMatch.split('://')[1];\n        }\n        return stringBeforeSlash.split('/')[0].indexOf(\"..\") > -1;\n    };\n    /**\n     * Determines if the URI scheme is a valid scheme to be autolinked. Returns\n     * `false` if the scheme is 'javascript:' or 'vbscript:'\n     *\n     * @private\n     * @param {String} uriSchemeMatch The match URL string for a full URI scheme\n     *   match. Ex: 'http://yahoo.com' or 'mailto:a@a.com'.\n     * @return {Boolean} `true` if the scheme is a valid one, `false` otherwise.\n     */\n    UrlMatchValidator.isValidUriScheme = function (uriSchemeMatch) {\n        var uriSchemeMatchArr = uriSchemeMatch.match(this.uriSchemeRegex), uriScheme = uriSchemeMatchArr && uriSchemeMatchArr[0].toLowerCase();\n        return (uriScheme !== 'javascript:' && uriScheme !== 'vbscript:');\n    };\n    /**\n     * Determines if a URL match does not have either:\n     *\n     * a) a full protocol (i.e. 'http://'), or\n     * b) at least one dot ('.') in the domain name (for a non-full-protocol\n     *    match).\n     *\n     * Either situation is considered an invalid URL (ex: 'git:d' does not have\n     * either the '://' part, or at least one dot in the domain name. If the\n     * match was 'git:abc.com', we would consider this valid.)\n     *\n     * @private\n     * @param {String} urlMatch The matched URL, if there was one. Will be an\n     *   empty string if the match is not a URL match.\n     * @param {String} protocolUrlMatch The match URL string for a protocol\n     *   match. Ex: 'http://yahoo.com'. This is used to match something like\n     *   'http://localhost', where we won't double check that the domain name\n     *   has at least one '.' in it.\n     * @return {Boolean} `true` if the URL match does not have a full protocol,\n     *   or at least one dot ('.') in a non-full-protocol match.\n     */\n    UrlMatchValidator.urlMatchDoesNotHaveProtocolOrDot = function (urlMatch, protocolUrlMatch) {\n        return (!!urlMatch && (!protocolUrlMatch || !this.hasFullProtocolRegex.test(protocolUrlMatch)) && urlMatch.indexOf('.') === -1);\n    };\n    /**\n     * Determines if a URL match does not have either:\n     *\n     * a) a full protocol (i.e. 'http://'), or\n     * b) at least one word character after the protocol (i.e. in the domain name)\n     *\n     * At least one letter character must exist in the domain name after a\n     * protocol match. Ex: skip over something like \"git:1.0\"\n     *\n     * @private\n     * @param {String} urlMatch The matched URL, if there was one. Will be an\n     *   empty string if the match is not a URL match.\n     * @param {String} protocolUrlMatch The match URL string for a protocol\n     *   match. Ex: 'http://yahoo.com'. This is used to know whether or not we\n     *   have a protocol in the URL string, in order to check for a word\n     *   character after the protocol separator (':').\n     * @return {Boolean} `true` if the URL match does not have a full protocol, or\n     * at least one word character in it, `false` otherwise.\n     */\n    UrlMatchValidator.urlMatchDoesNotHaveAtLeastOneWordChar = function (urlMatch, protocolUrlMatch) {\n        if (urlMatch && protocolUrlMatch) {\n            return !this.hasFullProtocolRegex.test(protocolUrlMatch) && !this.hasWordCharAfterProtocolRegex.test(urlMatch);\n        }\n        else {\n            return false;\n        }\n    };\n    /**\n     * Regex to test for a full protocol, with the two trailing slashes. Ex: 'http://'\n     *\n     * @private\n     * @property {RegExp} hasFullProtocolRegex\n     */\n    UrlMatchValidator.hasFullProtocolRegex = /^[A-Za-z][-.+A-Za-z0-9]*:\\/\\//;\n    /**\n     * Regex to find the URI scheme, such as 'mailto:'.\n     *\n     * This is used to filter out 'javascript:' and 'vbscript:' schemes.\n     *\n     * @private\n     * @property {RegExp} uriSchemeRegex\n     */\n    UrlMatchValidator.uriSchemeRegex = /^[A-Za-z][-.+A-Za-z0-9]*:/;\n    /**\n     * Regex to determine if at least one word char exists after the protocol (i.e. after the ':')\n     *\n     * @private\n     * @property {RegExp} hasWordCharAfterProtocolRegex\n     */\n    UrlMatchValidator.hasWordCharAfterProtocolRegex = new RegExp(\":[^\\\\s]*?[\" + alphaCharsStr + \"]\");\n    /**\n     * Regex to determine if the string is a valid IP address\n     *\n     * @private\n     * @property {RegExp} ipRegex\n     */\n    UrlMatchValidator.ipRegex = /[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?(:[0-9]*)?\\/?$/;\n    return UrlMatchValidator;\n}());\nexport { UrlMatchValidator };\n\n//# sourceMappingURL=url-match-validator.js.map\n","import { __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr } from \"../regex-lib\";\nimport { HashtagMatch } from \"../match/hashtag-match\";\n// RegExp objects which are shared by all instances of HashtagMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating HashtagMatcher and its RegExp \n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314). \n// See descriptions of the properties where they are used for details about them\nvar matcherRegex = new RegExp(\"#[_\".concat(alphaNumericAndMarksCharsStr, \"]{1,139}(?![_\").concat(alphaNumericAndMarksCharsStr, \"])\"), 'g'); // lookahead used to make sure we don't match something above 139 characters\nvar nonWordCharRegex = new RegExp('[^' + alphaNumericAndMarksCharsStr + ']');\n/**\n * @class Autolinker.matcher.Hashtag\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find HashtagMatch matches in an input string.\n */\nvar HashtagMatcher = /** @class */ (function (_super) {\n    __extends(HashtagMatcher, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match instance,\n     *   specified in an Object (map).\n     */\n    function HashtagMatcher(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {String} serviceName\n         *\n         * The service to point hashtag matches to. See {@link Autolinker#hashtag}\n         * for available values.\n         */\n        _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * The regular expression to match Hashtags. Example match:\n         *\n         *     #asdf\n         *\n         * @protected\n         * @property {RegExp} matcherRegex\n         */\n        _this.matcherRegex = matcherRegex;\n        /**\n         * The regular expression to use to check the character before a username match to\n         * make sure we didn't accidentally match an email address.\n         *\n         * For example, the string \"asdf@asdf.com\" should not match \"@asdf\" as a username.\n         *\n         * @protected\n         * @property {RegExp} nonWordCharRegex\n         */\n        _this.nonWordCharRegex = nonWordCharRegex;\n        _this.serviceName = cfg.serviceName;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    HashtagMatcher.prototype.parseMatches = function (text) {\n        var matcherRegex = this.matcherRegex, nonWordCharRegex = this.nonWordCharRegex, serviceName = this.serviceName, tagBuilder = this.tagBuilder, matches = [], match;\n        while ((match = matcherRegex.exec(text)) !== null) {\n            var offset = match.index, prevChar = text.charAt(offset - 1);\n            // If we found the match at the beginning of the string, or we found the match\n            // and there is a whitespace char in front of it (meaning it is not a '#' char\n            // in the middle of a word), then it is a hashtag match.\n            if (offset === 0 || nonWordCharRegex.test(prevChar)) {\n                var matchedText = match[0], hashtag = match[0].slice(1); // strip off the '#' character at the beginning\n                matches.push(new HashtagMatch({\n                    tagBuilder: tagBuilder,\n                    matchedText: matchedText,\n                    offset: offset,\n                    serviceName: serviceName,\n                    hashtag: hashtag\n                }));\n            }\n        }\n        return matches;\n    };\n    return HashtagMatcher;\n}(Matcher));\nexport { HashtagMatcher };\n\n//# sourceMappingURL=hashtag-matcher.js.map\n","import { __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { PhoneMatch } from \"../match/phone-match\";\nimport { nonDigitRe } from '../regex-lib';\n// RegExp objects which are shared by all instances of PhoneMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating PhoneMatcher and its RegExp\n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314).\n// See descriptions of the properties where they are used for details about them\n// Over the years, many people have added to this regex, but it should have been\n// split up by country. Maybe one day we can break this down.\nvar mostPhoneNumbers = /(?:(?:(?:(\\+)?\\d{1,3}[-\\040.]?)?\\(?\\d{3}\\)?[-\\040.]?\\d{3}[-\\040.]?\\d{4})|(?:(\\+)(?:9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\\040.]?(?:\\d[-\\040.]?){6,12}\\d+))([,;]+[0-9]+#?)*/;\n// Regex for Japanese phone numbers\nvar japanesePhoneRe = /(0([1-9]{1}-?[1-9]\\d{3}|[1-9]{2}-?\\d{3}|[1-9]{2}\\d{1}-?\\d{2}|[1-9]{2}\\d{2}-?\\d{1})-?\\d{4}|0[789]0-?\\d{4}-?\\d{4}|050-?\\d{4}-?\\d{4})/;\n// Combined regex\nvar phoneMatcherRegex = new RegExp(\"\".concat(mostPhoneNumbers.source, \"|\").concat(japanesePhoneRe.source), 'g');\n/**\n * @class Autolinker.matcher.Phone\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find Phone number matches in an input string.\n *\n * See this class's superclass ({@link Autolinker.matcher.Matcher}) for more\n * details.\n */\nvar PhoneMatcher = /** @class */ (function (_super) {\n    __extends(PhoneMatcher, _super);\n    function PhoneMatcher() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * The regular expression to match Phone numbers. Example matches:\n         *\n         *     (123) 456-7890\n         *     123 456 7890\n         *     123-456-7890\n         *     +18004441234,,;,10226420346#\n         *     +1 (800) 444 1234\n         *     10226420346#\n         *     1-800-444-1234,1022,64,20346#\n         *\n         * This regular expression has the following capturing groups:\n         *\n         * 1 or 2. The prefixed '+' sign, if there is one.\n         *\n         * @protected\n         * @property {RegExp} matcherRegex\n         */\n        _this.matcherRegex = phoneMatcherRegex;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    PhoneMatcher.prototype.parseMatches = function (text) {\n        var matcherRegex = this.matcherRegex, tagBuilder = this.tagBuilder, matches = [], match;\n        while ((match = matcherRegex.exec(text)) !== null) {\n            // Remove non-numeric values from phone number string\n            var matchedText = match[0], cleanNumber = matchedText.replace(/[^0-9,;#]/g, ''), // strip out non-digit characters exclude comma semicolon and #\n            plusSign = !!(match[1] || match[2]), // match[ 1 ] or match[ 2 ] is the prefixed plus sign, if there is one\n            before = match.index == 0 ? '' : text.substr(match.index - 1, 1), after = text.substr(match.index + matchedText.length, 1), contextClear = !before.match(/\\d/) && !after.match(/\\d/);\n            if (this.testMatch(match[3]) && this.testMatch(matchedText) && contextClear) {\n                matches.push(new PhoneMatch({\n                    tagBuilder: tagBuilder,\n                    matchedText: matchedText,\n                    offset: match.index,\n                    number: cleanNumber,\n                    plusSign: plusSign\n                }));\n            }\n        }\n        return matches;\n    };\n    PhoneMatcher.prototype.testMatch = function (text) {\n        return nonDigitRe.test(text);\n    };\n    return PhoneMatcher;\n}(Matcher));\nexport { PhoneMatcher };\n\n//# sourceMappingURL=phone-matcher.js.map\n","import { __extends } from \"tslib\";\nimport { Matcher } from \"./matcher\";\nimport { alphaNumericAndMarksCharsStr } from \"../regex-lib\";\nimport { MentionMatch } from \"../match/mention-match\";\n// RegExp objects which are shared by all instances of MentionMatcher. These are\n// here to avoid re-instantiating the RegExp objects if `Autolinker.link()` is\n// called multiple times, thus instantiating MentionMatcher and its RegExp \n// objects each time (which is very expensive - see https://github.com/gregjacobs/Autolinker.js/issues/314). \n// See descriptions of the properties where they are used for details about them\nvar twitterRegex = new RegExp(\"@[_\".concat(alphaNumericAndMarksCharsStr, \"]{1,50}(?![_\").concat(alphaNumericAndMarksCharsStr, \"])\"), 'g'); // lookahead used to make sure we don't match something above 50 characters\nvar instagramRegex = new RegExp(\"@[_.\".concat(alphaNumericAndMarksCharsStr, \"]{1,30}(?![_\").concat(alphaNumericAndMarksCharsStr, \"])\"), 'g'); // lookahead used to make sure we don't match something above 30 characters\nvar soundcloudRegex = new RegExp(\"@[-_.\".concat(alphaNumericAndMarksCharsStr, \"]{1,50}(?![-_\").concat(alphaNumericAndMarksCharsStr, \"])\"), 'g'); // lookahead used to make sure we don't match something above 50 characters\n// TikTok usernames are 1-24 characters containing letters, numbers, underscores\n// and periods, but cannot end in a period: https://support.tiktok.com/en/getting-started/setting-up-your-profile/changing-your-username\nvar tiktokRegex = new RegExp(\"@[_.\".concat(alphaNumericAndMarksCharsStr, \"]{1,23}[_\").concat(alphaNumericAndMarksCharsStr, \"](?![_\").concat(alphaNumericAndMarksCharsStr, \"])\"), 'g'); // lookahead used to make sure we don't match something above 24 characters\nvar nonWordCharRegex = new RegExp('[^' + alphaNumericAndMarksCharsStr + ']');\n/**\n * @class Autolinker.matcher.Mention\n * @extends Autolinker.matcher.Matcher\n *\n * Matcher to find/replace username matches in an input string.\n */\nvar MentionMatcher = /** @class */ (function (_super) {\n    __extends(MentionMatcher, _super);\n    /**\n     * @method constructor\n     * @param {Object} cfg The configuration properties for the Match instance,\n     *   specified in an Object (map).\n     */\n    function MentionMatcher(cfg) {\n        var _this = _super.call(this, cfg) || this;\n        /**\n         * @cfg {'twitter'/'instagram'/'soundcloud'} protected\n         *\n         * The name of service to link @mentions to.\n         *\n         * Valid values are: 'twitter', 'instagram', 'soundcloud', or 'tiktok'\n         */\n        _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * Hash of regular expression to match username handles. Example match:\n         *\n         *     @asdf\n         *\n         * @private\n         * @property {Object} matcherRegexes\n         */\n        _this.matcherRegexes = {\n            'twitter': twitterRegex,\n            'instagram': instagramRegex,\n            'soundcloud': soundcloudRegex,\n            'tiktok': tiktokRegex\n        };\n        /**\n         * The regular expression to use to check the character before a username match to\n         * make sure we didn't accidentally match an email address.\n         *\n         * For example, the string \"asdf@asdf.com\" should not match \"@asdf\" as a username.\n         *\n         * @private\n         * @property {RegExp} nonWordCharRegex\n         */\n        _this.nonWordCharRegex = nonWordCharRegex;\n        _this.serviceName = cfg.serviceName;\n        return _this;\n    }\n    /**\n     * @inheritdoc\n     */\n    MentionMatcher.prototype.parseMatches = function (text) {\n        var serviceName = this.serviceName, matcherRegex = this.matcherRegexes[this.serviceName], nonWordCharRegex = this.nonWordCharRegex, tagBuilder = this.tagBuilder, matches = [], match;\n        if (!matcherRegex) {\n            return matches;\n        }\n        while ((match = matcherRegex.exec(text)) !== null) {\n            var offset = match.index, prevChar = text.charAt(offset - 1);\n            // If we found the match at the beginning of the string, or we found the match\n            // and there is a whitespace char in front of it (meaning it is not an email\n            // address), then it is a username match.\n            if (offset === 0 || nonWordCharRegex.test(prevChar)) {\n                var matchedText = match[0].replace(/\\.+$/g, ''), // strip off trailing .\n                mention = matchedText.slice(1); // strip off the '@' character at the beginning\n                matches.push(new MentionMatch({\n                    tagBuilder: tagBuilder,\n                    matchedText: matchedText,\n                    offset: offset,\n                    serviceName: serviceName,\n                    mention: mention\n                }));\n            }\n        }\n        return matches;\n    };\n    return MentionMatcher;\n}(Matcher));\nexport { MentionMatcher };\n\n//# sourceMappingURL=mention-matcher.js.map\n","import { __assign } from \"tslib\";\nimport { letterRe, digitRe, whitespaceRe, quoteRe, controlCharsRe } from '../regex-lib';\nimport { throwUnhandledCaseError } from '../utils';\n// For debugging: search for other \"For debugging\" lines\n// import CliTable from 'cli-table';\n/**\n * Parses an HTML string, calling the callbacks to notify of tags and text.\n *\n * ## History\n *\n * This file previously used a regular expression to find html tags in the input\n * text. Unfortunately, we ran into a bunch of catastrophic backtracking issues\n * with certain input text, causing Autolinker to either hang or just take a\n * really long time to parse the string.\n *\n * The current code is intended to be a O(n) algorithm that walks through\n * the string in one pass, and tries to be as cheap as possible. We don't need\n * to implement the full HTML spec, but rather simply determine where the string\n * looks like an HTML tag, and where it looks like text (so that we can autolink\n * that).\n *\n * This state machine parser is intended just to be a simple but performant\n * parser of HTML for the subset of requirements we have. We simply need to:\n *\n * 1. Determine where HTML tags are\n * 2. Determine the tag name (Autolinker specifically only cares about <a>,\n *    <script>, and <style> tags, so as not to link any text within them)\n *\n * We don't need to:\n *\n * 1. Create a parse tree\n * 2. Auto-close tags with invalid markup\n * 3. etc.\n *\n * The other intention behind this is that we didn't want to add external\n * dependencies on the Autolinker utility which would increase its size. For\n * instance, adding htmlparser2 adds 125kb to the minified output file,\n * increasing its final size from 47kb to 172kb (at the time of writing). It\n * also doesn't work exactly correctly, treating the string \"<3 blah blah blah\"\n * as an HTML tag.\n *\n * Reference for HTML spec:\n *\n *     https://www.w3.org/TR/html51/syntax.html#sec-tokenization\n *\n * @param {String} html The HTML to parse\n * @param {Object} callbacks\n * @param {Function} callbacks.onOpenTag Callback function to call when an open\n *   tag is parsed. Called with the tagName as its argument.\n * @param {Function} callbacks.onCloseTag Callback function to call when a close\n *   tag is parsed. Called with the tagName as its argument. If a self-closing\n *   tag is found, `onCloseTag` is called immediately after `onOpenTag`.\n * @param {Function} callbacks.onText Callback function to call when text (i.e\n *   not an HTML tag) is parsed. Called with the text (string) as its first\n *   argument, and offset (number) into the string as its second.\n */\nexport function parseHtml(html, _a) {\n    var onOpenTag = _a.onOpenTag, onCloseTag = _a.onCloseTag, onText = _a.onText, onComment = _a.onComment, onDoctype = _a.onDoctype;\n    var noCurrentTag = new CurrentTag();\n    var charIdx = 0, len = html.length, state = 0 /* Data */, currentDataIdx = 0, // where the current data start index is\n    currentTag = noCurrentTag; // describes the current tag that is being read\n    // For debugging: search for other \"For debugging\" lines\n    // const table = new CliTable( {\n    // \thead: [ 'charIdx', 'char', 'state', 'currentDataIdx', 'currentOpenTagIdx', 'tag.type' ]\n    // } );\n    while (charIdx < len) {\n        var char = html.charAt(charIdx);\n        // For debugging: search for other \"For debugging\" lines\n        // ALSO: Temporarily remove the 'const' keyword on the State enum\n        // table.push( \n        // \t[ charIdx, char, State[ state ], currentDataIdx, currentTag.idx, currentTag.idx === -1 ? '' : currentTag.type ] \n        // );\n        switch (state) {\n            case 0 /* Data */:\n                stateData(char);\n                break;\n            case 1 /* TagOpen */:\n                stateTagOpen(char);\n                break;\n            case 2 /* EndTagOpen */:\n                stateEndTagOpen(char);\n                break;\n            case 3 /* TagName */:\n                stateTagName(char);\n                break;\n            case 4 /* BeforeAttributeName */:\n                stateBeforeAttributeName(char);\n                break;\n            case 5 /* AttributeName */:\n                stateAttributeName(char);\n                break;\n            case 6 /* AfterAttributeName */:\n                stateAfterAttributeName(char);\n                break;\n            case 7 /* BeforeAttributeValue */:\n                stateBeforeAttributeValue(char);\n                break;\n            case 8 /* AttributeValueDoubleQuoted */:\n                stateAttributeValueDoubleQuoted(char);\n                break;\n            case 9 /* AttributeValueSingleQuoted */:\n                stateAttributeValueSingleQuoted(char);\n                break;\n            case 10 /* AttributeValueUnquoted */:\n                stateAttributeValueUnquoted(char);\n                break;\n            case 11 /* AfterAttributeValueQuoted */:\n                stateAfterAttributeValueQuoted(char);\n                break;\n            case 12 /* SelfClosingStartTag */:\n                stateSelfClosingStartTag(char);\n                break;\n            case 13 /* MarkupDeclarationOpenState */:\n                stateMarkupDeclarationOpen(char);\n                break;\n            case 14 /* CommentStart */:\n                stateCommentStart(char);\n                break;\n            case 15 /* CommentStartDash */:\n                stateCommentStartDash(char);\n                break;\n            case 16 /* Comment */:\n                stateComment(char);\n                break;\n            case 17 /* CommentEndDash */:\n                stateCommentEndDash(char);\n                break;\n            case 18 /* CommentEnd */:\n                stateCommentEnd(char);\n                break;\n            case 19 /* CommentEndBang */:\n                stateCommentEndBang(char);\n                break;\n            case 20 /* Doctype */:\n                stateDoctype(char);\n                break;\n            default:\n                throwUnhandledCaseError(state);\n        }\n        // For debugging: search for other \"For debugging\" lines\n        // ALSO: Temporarily remove the 'const' keyword on the State enum\n        // table.push( \n        // \t[ charIdx, char, State[ state ], currentDataIdx, currentTag.idx, currentTag.idx === -1 ? '' : currentTag.type ] \n        // );\n        charIdx++;\n    }\n    if (currentDataIdx < charIdx) {\n        emitText();\n    }\n    // For debugging: search for other \"For debugging\" lines\n    // console.log( '\\n' + table.toString() );\n    // Called when non-tags are being read (i.e. the text around HTML †ags)\n    // https://www.w3.org/TR/html51/syntax.html#data-state\n    function stateData(char) {\n        if (char === '<') {\n            startNewTag();\n        }\n    }\n    // Called after a '<' is read from the Data state\n    // https://www.w3.org/TR/html51/syntax.html#tag-open-state\n    function stateTagOpen(char) {\n        if (char === '!') {\n            state = 13 /* MarkupDeclarationOpenState */;\n        }\n        else if (char === '/') {\n            state = 2 /* EndTagOpen */;\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { isClosing: true }));\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (letterRe.test(char)) {\n            // tag name start (and no '/' read)\n            state = 3 /* TagName */;\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { isOpening: true }));\n        }\n        else {\n            // Any other \n            state = 0 /* Data */;\n            currentTag = noCurrentTag;\n        }\n    }\n    // After a '<x', '</x' sequence is read (where 'x' is a letter character), \n    // this is to continue reading the tag name\n    // https://www.w3.org/TR/html51/syntax.html#tag-name-state\n    function stateTagName(char) {\n        if (whitespaceRe.test(char)) {\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { name: captureTagName() }));\n            state = 4 /* BeforeAttributeName */;\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (char === '/') {\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { name: captureTagName() }));\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '>') {\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { name: captureTagName() }));\n            emitTagAndPreviousTextNode(); // resets to Data state as well\n        }\n        else if (!letterRe.test(char) && !digitRe.test(char) && char !== ':') {\n            // Anything else that does not form an html tag. Note: the colon \n            // character is accepted for XML namespaced tags\n            resetToDataState();\n        }\n        else {\n            // continue reading tag name\n        }\n    }\n    // Called after the '/' is read from a '</' sequence\n    // https://www.w3.org/TR/html51/syntax.html#end-tag-open-state\n    function stateEndTagOpen(char) {\n        if (char === '>') { // parse error. Encountered \"</>\". Skip it without treating as a tag\n            resetToDataState();\n        }\n        else if (letterRe.test(char)) {\n            state = 3 /* TagName */;\n        }\n        else {\n            // some other non-tag-like character, don't treat this as a tag\n            resetToDataState();\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#before-attribute-name-state\n    function stateBeforeAttributeName(char) {\n        if (whitespaceRe.test(char)) {\n            // stay in BeforeAttributeName state - continue reading chars\n        }\n        else if (char === '/') {\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode(); // resets to Data state as well\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (char === \"=\" || quoteRe.test(char) || controlCharsRe.test(char)) {\n            // \"Parse error\" characters that, according to the spec, should be\n            // appended to the attribute name, but we'll treat these characters\n            // as not forming a real HTML tag\n            resetToDataState();\n        }\n        else {\n            // Any other char, start of a new attribute name\n            state = 5 /* AttributeName */;\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#attribute-name-state\n    function stateAttributeName(char) {\n        if (whitespaceRe.test(char)) {\n            state = 6 /* AfterAttributeName */;\n        }\n        else if (char === '/') {\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '=') {\n            state = 7 /* BeforeAttributeValue */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode(); // resets to Data state as well\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (quoteRe.test(char)) {\n            // \"Parse error\" characters that, according to the spec, should be\n            // appended to the attribute name, but we'll treat these characters\n            // as not forming a real HTML tag\n            resetToDataState();\n        }\n        else {\n            // anything else: continue reading attribute name\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#after-attribute-name-state\n    function stateAfterAttributeName(char) {\n        if (whitespaceRe.test(char)) {\n            // ignore the character - continue reading\n        }\n        else if (char === '/') {\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '=') {\n            state = 7 /* BeforeAttributeValue */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else if (quoteRe.test(char)) {\n            // \"Parse error\" characters that, according to the spec, should be\n            // appended to the attribute name, but we'll treat these characters\n            // as not forming a real HTML tag\n            resetToDataState();\n        }\n        else {\n            // Any other character, start a new attribute in the current tag\n            state = 5 /* AttributeName */;\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#before-attribute-value-state\n    function stateBeforeAttributeValue(char) {\n        if (whitespaceRe.test(char)) {\n            // ignore the character - continue reading\n        }\n        else if (char === \"\\\"\") {\n            state = 8 /* AttributeValueDoubleQuoted */;\n        }\n        else if (char === \"'\") {\n            state = 9 /* AttributeValueSingleQuoted */;\n        }\n        else if (/[>=`]/.test(char)) {\n            // Invalid chars after an '=' for an attribute value, don't count \n            // the current tag as an HTML tag\n            resetToDataState();\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else {\n            // Any other character, consider it an unquoted attribute value\n            state = 10 /* AttributeValueUnquoted */;\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#attribute-value-double-quoted-state\n    function stateAttributeValueDoubleQuoted(char) {\n        if (char === \"\\\"\") { // end the current double-quoted attribute\n            state = 11 /* AfterAttributeValueQuoted */;\n        }\n        else {\n            // consume the character as part of the double-quoted attribute value\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#attribute-value-single-quoted-state\n    function stateAttributeValueSingleQuoted(char) {\n        if (char === \"'\") { // end the current single-quoted attribute\n            state = 11 /* AfterAttributeValueQuoted */;\n        }\n        else {\n            // consume the character as part of the double-quoted attribute value\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#attribute-value-unquoted-state\n    function stateAttributeValueUnquoted(char) {\n        if (whitespaceRe.test(char)) {\n            state = 4 /* BeforeAttributeName */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else {\n            // Any other character, treat it as part of the attribute value\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#after-attribute-value-quoted-state\n    function stateAfterAttributeValueQuoted(char) {\n        if (whitespaceRe.test(char)) {\n            state = 4 /* BeforeAttributeName */;\n        }\n        else if (char === '/') {\n            state = 12 /* SelfClosingStartTag */;\n        }\n        else if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '<') {\n            // start of another tag (ignore the previous, incomplete one)\n            startNewTag();\n        }\n        else {\n            // Any other character, \"parse error\". Spec says to switch to the\n            // BeforeAttributeState and re-consume the character, as it may be\n            // the start of a new attribute name\n            state = 4 /* BeforeAttributeName */;\n            reconsumeCurrentCharacter();\n        }\n    }\n    // A '/' has just been read in the current tag (presumably for '/>'), and \n    // this handles the next character\n    // https://www.w3.org/TR/html51/syntax.html#self-closing-start-tag-state\n    function stateSelfClosingStartTag(char) {\n        if (char === '>') {\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { isClosing: true }));\n            emitTagAndPreviousTextNode(); // resets to Data state as well\n        }\n        else {\n            state = 4 /* BeforeAttributeName */;\n        }\n    }\n    // https://www.w3.org/TR/html51/syntax.html#markup-declaration-open-state\n    // (HTML Comments or !DOCTYPE)\n    function stateMarkupDeclarationOpen(char) {\n        if (html.substr(charIdx, 2) === '--') { // html comment\n            charIdx += 2; // \"consume\" characters\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { type: 'comment' }));\n            state = 14 /* CommentStart */;\n        }\n        else if (html.substr(charIdx, 7).toUpperCase() === 'DOCTYPE') {\n            charIdx += 7; // \"consume\" characters\n            currentTag = new CurrentTag(__assign(__assign({}, currentTag), { type: 'doctype' }));\n            state = 20 /* Doctype */;\n        }\n        else {\n            // At this point, the spec specifies that the state machine should\n            // enter the \"bogus comment\" state, in which case any character(s) \n            // after the '<!' that were read should become an HTML comment up\n            // until the first '>' that is read (or EOF). Instead, we'll assume\n            // that a user just typed '<!' as part of text data\n            resetToDataState();\n        }\n    }\n    // Handles after the sequence '<!--' has been read\n    // https://www.w3.org/TR/html51/syntax.html#comment-start-state\n    function stateCommentStart(char) {\n        if (char === '-') {\n            // We've read the sequence '<!---' at this point (3 dashes)\n            state = 15 /* CommentStartDash */;\n        }\n        else if (char === '>') {\n            // At this point, we'll assume the comment wasn't a real comment\n            // so we'll just emit it as data. We basically read the sequence \n            // '<!-->'\n            resetToDataState();\n        }\n        else {\n            // Any other char, take it as part of the comment\n            state = 16 /* Comment */;\n        }\n    }\n    // We've read the sequence '<!---' at this point (3 dashes)\n    // https://www.w3.org/TR/html51/syntax.html#comment-start-dash-state\n    function stateCommentStartDash(char) {\n        if (char === '-') {\n            // We've read '<!----' (4 dashes) at this point\n            state = 18 /* CommentEnd */;\n        }\n        else if (char === '>') {\n            // At this point, we'll assume the comment wasn't a real comment\n            // so we'll just emit it as data. We basically read the sequence \n            // '<!--->'\n            resetToDataState();\n        }\n        else {\n            // Anything else, take it as a valid comment\n            state = 16 /* Comment */;\n        }\n    }\n    // Currently reading the comment's text (data)\n    // https://www.w3.org/TR/html51/syntax.html#comment-state\n    function stateComment(char) {\n        if (char === '-') {\n            state = 17 /* CommentEndDash */;\n        }\n        else {\n            // Any other character, stay in the Comment state\n        }\n    }\n    // When we we've read the first dash inside a comment, it may signal the\n    // end of the comment if we read another dash\n    // https://www.w3.org/TR/html51/syntax.html#comment-end-dash-state\n    function stateCommentEndDash(char) {\n        if (char === '-') {\n            state = 18 /* CommentEnd */;\n        }\n        else {\n            // Wasn't a dash, must still be part of the comment\n            state = 16 /* Comment */;\n        }\n    }\n    // After we've read two dashes inside a comment, it may signal the end of \n    // the comment if we then read a '>' char\n    // https://www.w3.org/TR/html51/syntax.html#comment-end-state\n    function stateCommentEnd(char) {\n        if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '!') {\n            state = 19 /* CommentEndBang */;\n        }\n        else if (char === '-') {\n            // A 3rd '-' has been read: stay in the CommentEnd state\n        }\n        else {\n            // Anything else, switch back to the comment state since we didn't\n            // read the full \"end comment\" sequence (i.e. '-->')\n            state = 16 /* Comment */;\n        }\n    }\n    // We've read the sequence '--!' inside of a comment\n    // https://www.w3.org/TR/html51/syntax.html#comment-end-bang-state\n    function stateCommentEndBang(char) {\n        if (char === '-') {\n            // We read the sequence '--!-' inside of a comment. The last dash\n            // could signify that the comment is going to close\n            state = 17 /* CommentEndDash */;\n        }\n        else if (char === '>') {\n            // End of comment with the sequence '--!>'\n            emitTagAndPreviousTextNode();\n        }\n        else {\n            // The '--!' was not followed by a '>', continue reading the \n            // comment's text\n            state = 16 /* Comment */;\n        }\n    }\n    /**\n     * For DOCTYPES in particular, we don't care about the attributes. Just\n     * advance to the '>' character and emit the tag, unless we find a '<'\n     * character in which case we'll start a new tag.\n     *\n     * Example doctype tag:\n     *    <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n     *\n     * Actual spec: https://www.w3.org/TR/html51/syntax.html#doctype-state\n     */\n    function stateDoctype(char) {\n        if (char === '>') {\n            emitTagAndPreviousTextNode();\n        }\n        else if (char === '<') {\n            startNewTag();\n        }\n        else {\n            // stay in the Doctype state\n        }\n    }\n    /**\n     * Resets the state back to the Data state, and removes the current tag.\n     *\n     * We'll generally run this function whenever a \"parse error\" is\n     * encountered, where the current tag that is being read no longer looks\n     * like a real HTML tag.\n     */\n    function resetToDataState() {\n        state = 0 /* Data */;\n        currentTag = noCurrentTag;\n    }\n    /**\n     * Starts a new HTML tag at the current index, ignoring any previous HTML\n     * tag that was being read.\n     *\n     * We'll generally run this function whenever we read a new '<' character,\n     * including when we read a '<' character inside of an HTML tag that we were\n     * previously reading.\n     */\n    function startNewTag() {\n        state = 1 /* TagOpen */;\n        currentTag = new CurrentTag({ idx: charIdx });\n    }\n    /**\n     * Once we've decided to emit an open tag, that means we can also emit the\n     * text node before it.\n     */\n    function emitTagAndPreviousTextNode() {\n        var textBeforeTag = html.slice(currentDataIdx, currentTag.idx);\n        if (textBeforeTag) {\n            // the html tag was the first element in the html string, or two \n            // tags next to each other, in which case we should not emit a text \n            // node\n            onText(textBeforeTag, currentDataIdx);\n        }\n        if (currentTag.type === 'comment') {\n            onComment(currentTag.idx);\n        }\n        else if (currentTag.type === 'doctype') {\n            onDoctype(currentTag.idx);\n        }\n        else {\n            if (currentTag.isOpening) {\n                onOpenTag(currentTag.name, currentTag.idx);\n            }\n            if (currentTag.isClosing) { // note: self-closing tags will emit both opening and closing\n                onCloseTag(currentTag.name, currentTag.idx);\n            }\n        }\n        // Since we just emitted a tag, reset to the data state for the next char\n        resetToDataState();\n        currentDataIdx = charIdx + 1;\n    }\n    function emitText() {\n        var text = html.slice(currentDataIdx, charIdx);\n        onText(text, currentDataIdx);\n        currentDataIdx = charIdx + 1;\n    }\n    /**\n     * Captures the tag name from the start of the tag to the current character\n     * index, and converts it to lower case\n     */\n    function captureTagName() {\n        var startIdx = currentTag.idx + (currentTag.isClosing ? 2 : 1);\n        return html.slice(startIdx, charIdx).toLowerCase();\n    }\n    /**\n     * Causes the main loop to re-consume the current character, such as after\n     * encountering a \"parse error\" that changed state and needs to reconsume\n     * the same character in that new state.\n     */\n    function reconsumeCurrentCharacter() {\n        charIdx--;\n    }\n}\nvar CurrentTag = /** @class */ (function () {\n    function CurrentTag(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        this.idx = cfg.idx !== undefined ? cfg.idx : -1;\n        this.type = cfg.type || 'tag';\n        this.name = cfg.name || '';\n        this.isOpening = !!cfg.isOpening;\n        this.isClosing = !!cfg.isClosing;\n    }\n    return CurrentTag;\n}());\n\n//# sourceMappingURL=parse-html.js.map\n","// WARNING: This file is modified a bit when it is compiled into index.js in \n// order to support nodejs interoperability with require('autolinker') directly. \n// This is done by the buildSrcFixCommonJsIndexTask() function in the gulpfile. \n// See that function for more details.\nimport Autolinker from './autolinker';\nexport default Autolinker;\nexport { Autolinker };\nexport * from './autolinker';\nexport * from './anchor-tag-builder';\nexport * from './html-tag';\nexport * from './match/index';\nexport * from './matcher/index';\n\n//# sourceMappingURL=index.js.map\n","import { defaults, remove, splitAndCapture } from \"./utils\";\nimport { AnchorTagBuilder } from \"./anchor-tag-builder\";\nimport { Match } from \"./match/match\";\nimport { EmailMatch } from \"./match/email-match\";\nimport { HashtagMatch } from \"./match/hashtag-match\";\nimport { MentionMatch } from \"./match/mention-match\";\nimport { PhoneMatch } from \"./match/phone-match\";\nimport { UrlMatch } from \"./match/url-match\";\nimport { Matcher } from \"./matcher/matcher\";\nimport { HtmlTag } from \"./html-tag\";\nimport { EmailMatcher } from \"./matcher/email-matcher\";\nimport { UrlMatcher } from \"./matcher/url-matcher\";\nimport { HashtagMatcher } from \"./matcher/hashtag-matcher\";\nimport { PhoneMatcher } from \"./matcher/phone-matcher\";\nimport { MentionMatcher } from \"./matcher/mention-matcher\";\nimport { parseHtml } from './htmlParser/parse-html';\n/**\n * @class Autolinker\n * @extends Object\n *\n * Utility class used to process a given string of text, and wrap the matches in\n * the appropriate anchor (&lt;a&gt;) tags to turn them into links.\n *\n * Any of the configuration options may be provided in an Object provided\n * to the Autolinker constructor, which will configure how the {@link #link link()}\n * method will process the links.\n *\n * For example:\n *\n *     var autolinker = new Autolinker( {\n *         newWindow : false,\n *         truncate  : 30\n *     } );\n *\n *     var html = autolinker.link( \"Joe went to www.yahoo.com\" );\n *     // produces: 'Joe went to <a href=\"http://www.yahoo.com\">yahoo.com</a>'\n *\n *\n * The {@link #static-link static link()} method may also be used to inline\n * options into a single call, which may be more convenient for one-off uses.\n * For example:\n *\n *     var html = Autolinker.link( \"Joe went to www.yahoo.com\", {\n *         newWindow : false,\n *         truncate  : 30\n *     } );\n *     // produces: 'Joe went to <a href=\"http://www.yahoo.com\">yahoo.com</a>'\n *\n *\n * ## Custom Replacements of Links\n *\n * If the configuration options do not provide enough flexibility, a {@link #replaceFn}\n * may be provided to fully customize the output of Autolinker. This function is\n * called once for each URL/Email/Phone#/Hashtag/Mention (Twitter, Instagram, Soundcloud)\n * match that is encountered.\n *\n * For example:\n *\n *     var input = \"...\";  // string with URLs, Email Addresses, Phone #s, Hashtags, and Mentions (Twitter, Instagram, Soundcloud)\n *\n *     var linkedText = Autolinker.link( input, {\n *         replaceFn : function( match ) {\n *             console.log( \"href = \", match.getAnchorHref() );\n *             console.log( \"text = \", match.getAnchorText() );\n *\n *             switch( match.getType() ) {\n *                 case 'url' :\n *                     console.log( \"url: \", match.getUrl() );\n *\n *                     if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) {\n *                         var tag = match.buildTag();  // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes\n *                         tag.setAttr( 'rel', 'nofollow' );\n *                         tag.addClass( 'external-link' );\n *\n *                         return tag;\n *\n *                     } else {\n *                         return true;  // let Autolinker perform its normal anchor tag replacement\n *                     }\n *\n *                 case 'email' :\n *                     var email = match.getEmail();\n *                     console.log( \"email: \", email );\n *\n *                     if( email === \"my@own.address\" ) {\n *                         return false;  // don't auto-link this particular email address; leave as-is\n *                     } else {\n *                         return;  // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`)\n *                     }\n *\n *                 case 'phone' :\n *                     var phoneNumber = match.getPhoneNumber();\n *                     console.log( phoneNumber );\n *\n *                     return '<a href=\"http://newplace.to.link.phone.numbers.to/\">' + phoneNumber + '</a>';\n *\n *                 case 'hashtag' :\n *                     var hashtag = match.getHashtag();\n *                     console.log( hashtag );\n *\n *                     return '<a href=\"http://newplace.to.link.hashtag.handles.to/\">' + hashtag + '</a>';\n *\n *                 case 'mention' :\n *                     var mention = match.getMention();\n *                     console.log( mention );\n *\n *                     return '<a href=\"http://newplace.to.link.mention.to/\">' + mention + '</a>';\n *             }\n *         }\n *     } );\n *\n *\n * The function may return the following values:\n *\n * - `true` (Boolean): Allow Autolinker to replace the match as it normally\n *   would.\n * - `false` (Boolean): Do not replace the current match at all - leave as-is.\n * - Any String: If a string is returned from the function, the string will be\n *   used directly as the replacement HTML for the match.\n * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify\n *   an HTML tag before writing out its HTML text.\n */\nvar Autolinker = /** @class */ (function () {\n    /**\n     * @method constructor\n     * @param {Object} [cfg] The configuration options for the Autolinker instance,\n     *   specified in an Object (map).\n     */\n    function Autolinker(cfg) {\n        if (cfg === void 0) { cfg = {}; }\n        /**\n         * The Autolinker version number exposed on the instance itself.\n         *\n         * Ex: 0.25.1\n         */\n        this.version = Autolinker.version;\n        /**\n         * @cfg {Boolean/Object} [urls]\n         *\n         * `true` if URLs should be automatically linked, `false` if they should not\n         * be. Defaults to `true`.\n         *\n         * Examples:\n         *\n         *     urls: true\n         *\n         *     // or\n         *\n         *     urls: {\n         *         schemeMatches : true,\n         *         wwwMatches    : true,\n         *         tldMatches    : true\n         *     }\n         *\n         * As shown above, this option also accepts an Object form with 3 properties\n         * to allow for more customization of what exactly gets linked. All default\n         * to `true`:\n         *\n         * @cfg {Boolean} [urls.schemeMatches] `true` to match URLs found prefixed\n         *   with a scheme, i.e. `http://google.com`, or `other+scheme://google.com`,\n         *   `false` to prevent these types of matches.\n         * @cfg {Boolean} [urls.wwwMatches] `true` to match urls found prefixed with\n         *   `'www.'`, i.e. `www.google.com`. `false` to prevent these types of\n         *   matches. Note that if the URL had a prefixed scheme, and\n         *   `schemeMatches` is true, it will still be linked.\n         * @cfg {Boolean} [urls.tldMatches] `true` to match URLs with known top\n         *   level domains (.com, .net, etc.) that are not prefixed with a scheme or\n         *   `'www.'`. This option attempts to match anything that looks like a URL\n         *   in the given text. Ex: `google.com`, `asdf.org/?page=1`, etc. `false`\n         *   to prevent these types of matches.\n         */\n        this.urls = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [email=true]\n         *\n         * `true` if email addresses should be automatically linked, `false` if they\n         * should not be.\n         */\n        this.email = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [phone=true]\n         *\n         * `true` if Phone numbers (\"(555)555-5555\") should be automatically linked,\n         * `false` if they should not be.\n         */\n        this.phone = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean/String} [hashtag=false]\n         *\n         * A string for the service name to have hashtags (ex: \"#myHashtag\")\n         * auto-linked to. The currently-supported values are:\n         *\n         * - 'twitter'\n         * - 'facebook'\n         * - 'instagram'\n         *\n         * Pass `false` to skip auto-linking of hashtags.\n         */\n        this.hashtag = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String/Boolean} [mention=false]\n         *\n         * A string for the service name to have mentions (ex: \"@myuser\")\n         * auto-linked to. The currently supported values are:\n         *\n         * - 'twitter'\n         * - 'instagram'\n         * - 'soundcloud'\n         *\n         * Defaults to `false` to skip auto-linking of mentions.\n         */\n        this.mention = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [newWindow=true]\n         *\n         * `true` if the links should open in a new window, `false` otherwise.\n         */\n        this.newWindow = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean/Object} [stripPrefix=true]\n         *\n         * `true` if 'http://' (or 'https://') and/or the 'www.' should be stripped\n         * from the beginning of URL links' text, `false` otherwise. Defaults to\n         * `true`.\n         *\n         * Examples:\n         *\n         *     stripPrefix: true\n         *\n         *     // or\n         *\n         *     stripPrefix: {\n         *         scheme : true,\n         *         www    : true\n         *     }\n         *\n         * As shown above, this option also accepts an Object form with 2 properties\n         * to allow for more customization of what exactly is prevented from being\n         * displayed. Both default to `true`:\n         *\n         * @cfg {Boolean} [stripPrefix.scheme] `true` to prevent the scheme part of\n         *   a URL match from being displayed to the user. Example:\n         *   `'http://google.com'` will be displayed as `'google.com'`. `false` to\n         *   not strip the scheme. NOTE: Only an `'http://'` or `'https://'` scheme\n         *   will be removed, so as not to remove a potentially dangerous scheme\n         *   (such as `'file://'` or `'javascript:'`)\n         * @cfg {Boolean} [stripPrefix.www] www (Boolean): `true` to prevent the\n         *   `'www.'` part of a URL match from being displayed to the user. Ex:\n         *   `'www.google.com'` will be displayed as `'google.com'`. `false` to not\n         *   strip the `'www'`.\n         */\n        this.stripPrefix = { scheme: true, www: true }; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [stripTrailingSlash=true]\n         *\n         * `true` to remove the trailing slash from URL matches, `false` to keep\n         *  the trailing slash.\n         *\n         *  Example when `true`: `http://google.com/` will be displayed as\n         *  `http://google.com`.\n         */\n        this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [decodePercentEncoding=true]\n         *\n         * `true` to decode percent-encoded characters in URL matches, `false` to keep\n         *  the percent-encoded characters.\n         *\n         *  Example when `true`: `https://en.wikipedia.org/wiki/San_Jos%C3%A9` will\n         *  be displayed as `https://en.wikipedia.org/wiki/San_José`.\n         */\n        this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Number/Object} [truncate=0]\n         *\n         * ## Number Form\n         *\n         * A number for how many characters matched text should be truncated to\n         * inside the text of a link. If the matched text is over this number of\n         * characters, it will be truncated to this length by adding a two period\n         * ellipsis ('..') to the end of the string.\n         *\n         * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file'\n         * truncated to 25 characters might look something like this:\n         * 'yahoo.com/some/long/pat..'\n         *\n         * Example Usage:\n         *\n         *     truncate: 25\n         *\n         *\n         *  Defaults to `0` for \"no truncation.\"\n         *\n         *\n         * ## Object Form\n         *\n         * An Object may also be provided with two properties: `length` (Number) and\n         * `location` (String). `location` may be one of the following: 'end'\n         * (default), 'middle', or 'smart'.\n         *\n         * Example Usage:\n         *\n         *     truncate: { length: 25, location: 'middle' }\n         *\n         * @cfg {Number} [truncate.length=0] How many characters to allow before\n         *   truncation will occur. Defaults to `0` for \"no truncation.\"\n         * @cfg {\"end\"/\"middle\"/\"smart\"} [truncate.location=\"end\"]\n         *\n         * - 'end' (default): will truncate up to the number of characters, and then\n         *   add an ellipsis at the end. Ex: 'yahoo.com/some/long/pat..'\n         * - 'middle': will truncate and add the ellipsis in the middle. Ex:\n         *   'yahoo.com/s..th/to/a/file'\n         * - 'smart': for URLs where the algorithm attempts to strip out unnecessary\n         *   parts first (such as the 'www.', then URL scheme, hash, etc.),\n         *   attempting to make the URL human-readable before looking for a good\n         *   point to insert the ellipsis if it is still too long. Ex:\n         *   'yahoo.com/some..to/a/file'. For more details, see\n         *   {@link Autolinker.truncate.TruncateSmart}.\n         */\n        this.truncate = { length: 0, location: 'end' }; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {String} className\n         *\n         * A CSS class name to add to the generated links. This class will be added\n         * to all links, as well as this class plus match suffixes for styling\n         * url/email/phone/hashtag/mention links differently.\n         *\n         * For example, if this config is provided as \"myLink\", then:\n         *\n         * - URL links will have the CSS classes: \"myLink myLink-url\"\n         * - Email links will have the CSS classes: \"myLink myLink-email\", and\n         * - Phone links will have the CSS classes: \"myLink myLink-phone\"\n         * - Hashtag links will have the CSS classes: \"myLink myLink-hashtag\"\n         * - Mention links will have the CSS classes: \"myLink myLink-mention myLink-[type]\"\n         *   where [type] is either \"instagram\", \"twitter\" or \"soundcloud\"\n         */\n        this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Function} replaceFn\n         *\n         * A function to individually process each match found in the input string.\n         *\n         * See the class's description for usage.\n         *\n         * The `replaceFn` can be called with a different context object (`this`\n         * reference) using the {@link #context} cfg.\n         *\n         * This function is called with the following parameter:\n         *\n         * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which\n         *   can be used to retrieve information about the match that the `replaceFn`\n         *   is currently processing. See {@link Autolinker.match.Match} subclasses\n         *   for details.\n         */\n        this.replaceFn = null; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Object} context\n         *\n         * The context object (`this` reference) to call the `replaceFn` with.\n         *\n         * Defaults to this Autolinker instance.\n         */\n        this.context = undefined; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @cfg {Boolean} [sanitizeHtml=false]\n         *\n         * `true` to HTML-encode the start and end brackets of existing HTML tags found\n         * in the input string. This will escape `<` and `>` characters to `&lt;` and\n         * `&gt;`, respectively.\n         *\n         * Setting this to `true` will prevent XSS (Cross-site Scripting) attacks,\n         * but will remove the significance of existing HTML tags in the input string. If\n         * you would like to maintain the significance of existing HTML tags while also\n         * making the output HTML string safe, leave this option as `false` and use a\n         * tool like https://github.com/cure53/DOMPurify (or others) on the input string\n         * before running Autolinker.\n         */\n        this.sanitizeHtml = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n        /**\n         * @private\n         * @property {Autolinker.matcher.Matcher[]} matchers\n         *\n         * The {@link Autolinker.matcher.Matcher} instances for this Autolinker\n         * instance.\n         *\n         * This is lazily created in {@link #getMatchers}.\n         */\n        this.matchers = null;\n        /**\n         * @private\n         * @property {Autolinker.AnchorTagBuilder} tagBuilder\n         *\n         * The AnchorTagBuilder instance used to build match replacement anchor tags.\n         * Note: this is lazily instantiated in the {@link #getTagBuilder} method.\n         */\n        this.tagBuilder = null;\n        // Note: when `this.something` is used in the rhs of these assignments,\n        //       it refers to the default values set above the constructor\n        this.urls = this.normalizeUrlsCfg(cfg.urls);\n        this.email = typeof cfg.email === 'boolean' ? cfg.email : this.email;\n        this.phone = typeof cfg.phone === 'boolean' ? cfg.phone : this.phone;\n        this.hashtag = cfg.hashtag || this.hashtag;\n        this.mention = cfg.mention || this.mention;\n        this.newWindow = typeof cfg.newWindow === 'boolean' ? cfg.newWindow : this.newWindow;\n        this.stripPrefix = this.normalizeStripPrefixCfg(cfg.stripPrefix);\n        this.stripTrailingSlash = typeof cfg.stripTrailingSlash === 'boolean' ? cfg.stripTrailingSlash : this.stripTrailingSlash;\n        this.decodePercentEncoding = typeof cfg.decodePercentEncoding === 'boolean' ? cfg.decodePercentEncoding : this.decodePercentEncoding;\n        this.sanitizeHtml = cfg.sanitizeHtml || false;\n        // Validate the value of the `mention` cfg\n        var mention = this.mention;\n        if (mention !== false && ['twitter', 'instagram', 'soundcloud', 'tiktok'].indexOf(mention) === -1) {\n            throw new Error(\"invalid `mention` cfg '\".concat(mention, \"' - see docs\"));\n        }\n        // Validate the value of the `hashtag` cfg\n        var hashtag = this.hashtag;\n        if (hashtag !== false && ['twitter', 'facebook', 'instagram', 'tiktok'].indexOf(hashtag) === -1) {\n            throw new Error(\"invalid `hashtag` cfg '\".concat(hashtag, \"' - see docs\"));\n        }\n        this.truncate = this.normalizeTruncateCfg(cfg.truncate);\n        this.className = cfg.className || this.className;\n        this.replaceFn = cfg.replaceFn || this.replaceFn;\n        this.context = cfg.context || this;\n    }\n    /**\n     * Automatically links URLs, Email addresses, Phone Numbers, Twitter handles,\n     * Hashtags, and Mentions found in the given chunk of HTML. Does not link URLs\n     * found within HTML tags.\n     *\n     * For instance, if given the text: `You should go to http://www.yahoo.com`,\n     * then the result will be `You should go to &lt;a href=\"http://www.yahoo.com\"&gt;http://www.yahoo.com&lt;/a&gt;`\n     *\n     * Example:\n     *\n     *     var linkedText = Autolinker.link( \"Go to google.com\", { newWindow: false } );\n     *     // Produces: \"Go to <a href=\"http://google.com\">google.com</a>\"\n     *\n     * @static\n     * @param {String} textOrHtml The HTML or text to find matches within (depending\n     *   on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #mention},\n     *   {@link #hashtag}, and {@link #mention} options are enabled).\n     * @param {Object} [options] Any of the configuration options for the Autolinker\n     *   class, specified in an Object (map). See the class description for an\n     *   example call.\n     * @return {String} The HTML text, with matches automatically linked.\n     */\n    Autolinker.link = function (textOrHtml, options) {\n        var autolinker = new Autolinker(options);\n        return autolinker.link(textOrHtml);\n    };\n    /**\n     * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n     * numbers, username handles, and hashtags (depending on the configuration\n     * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n     * objects describing those matches (without making any replacements).\n     *\n     * Note that if parsing multiple pieces of text, it is slightly more efficient\n     * to create an Autolinker instance, and use the instance-level {@link #parse}\n     * method.\n     *\n     * Example:\n     *\n     *     var matches = Autolinker.parse( \"Hello google.com, I am asdf@asdf.com\", {\n     *         urls: true,\n     *         email: true\n     *     } );\n     *\n     *     console.log( matches.length );           // 2\n     *     console.log( matches[ 0 ].getType() );   // 'url'\n     *     console.log( matches[ 0 ].getUrl() );    // 'google.com'\n     *     console.log( matches[ 1 ].getType() );   // 'email'\n     *     console.log( matches[ 1 ].getEmail() );  // 'asdf@asdf.com'\n     *\n     * @static\n     * @param {String} textOrHtml The HTML or text to find matches within\n     *   (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n     *   {@link #hashtag}, and {@link #mention} options are enabled).\n     * @param {Object} [options] Any of the configuration options for the Autolinker\n     *   class, specified in an Object (map). See the class description for an\n     *   example call.\n     * @return {Autolinker.match.Match[]} The array of Matches found in the\n     *   given input `textOrHtml`.\n     */\n    Autolinker.parse = function (textOrHtml, options) {\n        var autolinker = new Autolinker(options);\n        return autolinker.parse(textOrHtml);\n    };\n    /**\n     * Normalizes the {@link #urls} config into an Object with 3 properties:\n     * `schemeMatches`, `wwwMatches`, and `tldMatches`, all Booleans.\n     *\n     * See {@link #urls} config for details.\n     *\n     * @private\n     * @param {Boolean/Object} urls\n     * @return {Object}\n     */\n    Autolinker.prototype.normalizeUrlsCfg = function (urls) {\n        if (urls == null)\n            urls = true; // default to `true`\n        if (typeof urls === 'boolean') {\n            return { schemeMatches: urls, wwwMatches: urls, tldMatches: urls };\n        }\n        else { // object form\n            return {\n                schemeMatches: typeof urls.schemeMatches === 'boolean' ? urls.schemeMatches : true,\n                wwwMatches: typeof urls.wwwMatches === 'boolean' ? urls.wwwMatches : true,\n                tldMatches: typeof urls.tldMatches === 'boolean' ? urls.tldMatches : true\n            };\n        }\n    };\n    /**\n     * Normalizes the {@link #stripPrefix} config into an Object with 2\n     * properties: `scheme`, and `www` - both Booleans.\n     *\n     * See {@link #stripPrefix} config for details.\n     *\n     * @private\n     * @param {Boolean/Object} stripPrefix\n     * @return {Object}\n     */\n    Autolinker.prototype.normalizeStripPrefixCfg = function (stripPrefix) {\n        if (stripPrefix == null)\n            stripPrefix = true; // default to `true`\n        if (typeof stripPrefix === 'boolean') {\n            return { scheme: stripPrefix, www: stripPrefix };\n        }\n        else { // object form\n            return {\n                scheme: typeof stripPrefix.scheme === 'boolean' ? stripPrefix.scheme : true,\n                www: typeof stripPrefix.www === 'boolean' ? stripPrefix.www : true\n            };\n        }\n    };\n    /**\n     * Normalizes the {@link #truncate} config into an Object with 2 properties:\n     * `length` (Number), and `location` (String).\n     *\n     * See {@link #truncate} config for details.\n     *\n     * @private\n     * @param {Number/Object} truncate\n     * @return {Object}\n     */\n    Autolinker.prototype.normalizeTruncateCfg = function (truncate) {\n        if (typeof truncate === 'number') {\n            return { length: truncate, location: 'end' };\n        }\n        else { // object, or undefined/null\n            return defaults(truncate || {}, {\n                length: Number.POSITIVE_INFINITY,\n                location: 'end'\n            });\n        }\n    };\n    /**\n     * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n     * numbers, username handles, and hashtags (depending on the configuration\n     * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n     * objects describing those matches (without making any replacements).\n     *\n     * This method is used by the {@link #link} method, but can also be used to\n     * simply do parsing of the input in order to discover what kinds of links\n     * there are and how many.\n     *\n     * Example usage:\n     *\n     *     var autolinker = new Autolinker( {\n     *         urls: true,\n     *         email: true\n     *     } );\n     *\n     *     var matches = autolinker.parse( \"Hello google.com, I am asdf@asdf.com\" );\n     *\n     *     console.log( matches.length );           // 2\n     *     console.log( matches[ 0 ].getType() );   // 'url'\n     *     console.log( matches[ 0 ].getUrl() );    // 'google.com'\n     *     console.log( matches[ 1 ].getType() );   // 'email'\n     *     console.log( matches[ 1 ].getEmail() );  // 'asdf@asdf.com'\n     *\n     * @param {String} textOrHtml The HTML or text to find matches within\n     *   (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n     *   {@link #hashtag}, and {@link #mention} options are enabled).\n     * @return {Autolinker.match.Match[]} The array of Matches found in the\n     *   given input `textOrHtml`.\n     */\n    Autolinker.prototype.parse = function (textOrHtml) {\n        var _this = this;\n        var skipTagNames = ['a', 'style', 'script'], skipTagsStackCount = 0, // used to only Autolink text outside of anchor/script/style tags. We don't want to autolink something that is already linked inside of an <a> tag, for instance\n        matches = [];\n        // Find all matches within the `textOrHtml` (but not matches that are\n        // already nested within <a>, <style> and <script> tags)\n        parseHtml(textOrHtml, {\n            onOpenTag: function (tagName) {\n                if (skipTagNames.indexOf(tagName) >= 0) {\n                    skipTagsStackCount++;\n                }\n            },\n            onText: function (text, offset) {\n                // Only process text nodes that are not within an <a>, <style> or <script> tag\n                if (skipTagsStackCount === 0) {\n                    // \"Walk around\" common HTML entities. An '&nbsp;' (for example)\n                    // could be at the end of a URL, but we don't want to \n                    // include the trailing '&' in the URL. See issue #76\n                    // TODO: Handle HTML entities separately in parseHtml() and\n                    // don't emit them as \"text\" except for &amp; entities\n                    var htmlCharacterEntitiesRegex = /(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi;\n                    var textSplit = splitAndCapture(text, htmlCharacterEntitiesRegex);\n                    var currentOffset_1 = offset;\n                    textSplit.forEach(function (splitText, i) {\n                        // even number matches are text, odd numbers are html entities\n                        if (i % 2 === 0) {\n                            var textNodeMatches = _this.parseText(splitText, currentOffset_1);\n                            matches.push.apply(matches, textNodeMatches);\n                        }\n                        currentOffset_1 += splitText.length;\n                    });\n                }\n            },\n            onCloseTag: function (tagName) {\n                if (skipTagNames.indexOf(tagName) >= 0) {\n                    skipTagsStackCount = Math.max(skipTagsStackCount - 1, 0); // attempt to handle extraneous </a> tags by making sure the stack count never goes below 0\n                }\n            },\n            onComment: function (offset) { },\n            onDoctype: function (offset) { }, // no need to process doctype nodes\n        });\n        // After we have found all matches, remove subsequent matches that\n        // overlap with a previous match. This can happen for instance with URLs,\n        // where the url 'google.com/#link' would match '#link' as a hashtag.\n        matches = this.compactMatches(matches);\n        // And finally, remove matches for match types that have been turned\n        // off. We needed to have all match types turned on initially so that\n        // things like hashtags could be filtered out if they were really just\n        // part of a URL match (for instance, as a named anchor).\n        matches = this.removeUnwantedMatches(matches);\n        return matches;\n    };\n    /**\n     * After we have found all matches, we need to remove matches that overlap\n     * with a previous match. This can happen for instance with URLs, where the\n     * url 'google.com/#link' would match '#link' as a hashtag. Because the\n     * '#link' part is contained in a larger match that comes before the HashTag\n     * match, we'll remove the HashTag match.\n     *\n     * @private\n     * @param {Autolinker.match.Match[]} matches\n     * @return {Autolinker.match.Match[]}\n     */\n    Autolinker.prototype.compactMatches = function (matches) {\n        // First, the matches need to be sorted in order of offset\n        matches.sort(function (a, b) { return a.getOffset() - b.getOffset(); });\n        var i = 0;\n        while (i < matches.length - 1) {\n            var match = matches[i], offset = match.getOffset(), matchedTextLength = match.getMatchedText().length, endIdx = offset + matchedTextLength;\n            if (i + 1 < matches.length) {\n                // Remove subsequent matches that equal offset with current match\n                if (matches[i + 1].getOffset() === offset) {\n                    var removeIdx = matches[i + 1].getMatchedText().length > matchedTextLength ? i : i + 1;\n                    matches.splice(removeIdx, 1);\n                    continue;\n                }\n                // Remove subsequent matches that overlap with the current match\n                if (matches[i + 1].getOffset() < endIdx) {\n                    matches.splice(i + 1, 1);\n                    continue;\n                }\n            }\n            i++;\n        }\n        return matches;\n    };\n    /**\n     * Removes matches for matchers that were turned off in the options. For\n     * example, if {@link #hashtag hashtags} were not to be matched, we'll\n     * remove them from the `matches` array here.\n     *\n     * Note: we *must* use all Matchers on the input string, and then filter\n     * them out later. For example, if the options were `{ url: false, hashtag: true }`,\n     * we wouldn't want to match the text '#link' as a HashTag inside of the text\n     * 'google.com/#link'. The way the algorithm works is that we match the full\n     * URL first (which prevents the accidental HashTag match), and then we'll\n     * simply throw away the URL match.\n     *\n     * @private\n     * @param {Autolinker.match.Match[]} matches The array of matches to remove\n     *   the unwanted matches from. Note: this array is mutated for the\n     *   removals.\n     * @return {Autolinker.match.Match[]} The mutated input `matches` array.\n     */\n    Autolinker.prototype.removeUnwantedMatches = function (matches) {\n        if (!this.hashtag)\n            remove(matches, function (match) { return match.getType() === 'hashtag'; });\n        if (!this.email)\n            remove(matches, function (match) { return match.getType() === 'email'; });\n        if (!this.phone)\n            remove(matches, function (match) { return match.getType() === 'phone'; });\n        if (!this.mention)\n            remove(matches, function (match) { return match.getType() === 'mention'; });\n        if (!this.urls.schemeMatches) {\n            remove(matches, function (m) { return m.getType() === 'url' && m.getUrlMatchType() === 'scheme'; });\n        }\n        if (!this.urls.wwwMatches) {\n            remove(matches, function (m) { return m.getType() === 'url' && m.getUrlMatchType() === 'www'; });\n        }\n        if (!this.urls.tldMatches) {\n            remove(matches, function (m) { return m.getType() === 'url' && m.getUrlMatchType() === 'tld'; });\n        }\n        return matches;\n    };\n    /**\n     * Parses the input `text` looking for URLs, email addresses, phone\n     * numbers, username handles, and hashtags (depending on the configuration\n     * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n     * objects describing those matches.\n     *\n     * This method processes a **non-HTML string**, and is used to parse and\n     * match within the text nodes of an HTML string. This method is used\n     * internally by {@link #parse}.\n     *\n     * @private\n     * @param {String} text The text to find matches within (depending on if the\n     *   {@link #urls}, {@link #email}, {@link #phone},\n     *   {@link #hashtag}, and {@link #mention} options are enabled). This must be a non-HTML string.\n     * @param {Number} [offset=0] The offset of the text node within the\n     *   original string. This is used when parsing with the {@link #parse}\n     *   method to generate correct offsets within the {@link Autolinker.match.Match}\n     *   instances, but may be omitted if calling this method publicly.\n     * @return {Autolinker.match.Match[]} The array of Matches found in the\n     *   given input `text`.\n     */\n    Autolinker.prototype.parseText = function (text, offset) {\n        if (offset === void 0) { offset = 0; }\n        offset = offset || 0;\n        var matchers = this.getMatchers(), matches = [];\n        for (var i = 0, numMatchers = matchers.length; i < numMatchers; i++) {\n            var textMatches = matchers[i].parseMatches(text);\n            // Correct the offset of each of the matches. They are originally\n            // the offset of the match within the provided text node, but we\n            // need to correct them to be relative to the original HTML input\n            // string (i.e. the one provided to #parse).\n            for (var j = 0, numTextMatches = textMatches.length; j < numTextMatches; j++) {\n                textMatches[j].setOffset(offset + textMatches[j].getOffset());\n            }\n            matches.push.apply(matches, textMatches);\n        }\n        return matches;\n    };\n    /**\n     * Automatically links URLs, Email addresses, Phone numbers, Hashtags,\n     * and Mentions (Twitter, Instagram, Soundcloud) found in the given chunk of HTML. Does not link\n     * URLs found within HTML tags.\n     *\n     * For instance, if given the text: `You should go to http://www.yahoo.com`,\n     * then the result will be `You should go to\n     * &lt;a href=\"http://www.yahoo.com\"&gt;http://www.yahoo.com&lt;/a&gt;`\n     *\n     * This method finds the text around any HTML elements in the input\n     * `textOrHtml`, which will be the text that is processed. Any original HTML\n     * elements will be left as-is, as well as the text that is already wrapped\n     * in anchor (&lt;a&gt;) tags.\n     *\n     * @param {String} textOrHtml The HTML or text to autolink matches within\n     *   (depending on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #hashtag}, and {@link #mention} options are enabled).\n     * @return {String} The HTML, with matches automatically linked.\n     */\n    Autolinker.prototype.link = function (textOrHtml) {\n        if (!textOrHtml) {\n            return \"\";\n        } // handle `null` and `undefined` (for JavaScript users that don't have TypeScript support)\n        /* We would want to sanitize the start and end characters of a tag\n         * before processing the string in order to avoid an XSS scenario.\n         * This behaviour can be changed by toggling the sanitizeHtml option.\n         */\n        if (this.sanitizeHtml) {\n            textOrHtml = textOrHtml\n                .replace(/</g, '&lt;')\n                .replace(/>/g, '&gt;');\n        }\n        var matches = this.parse(textOrHtml), newHtml = [], lastIndex = 0;\n        for (var i = 0, len = matches.length; i < len; i++) {\n            var match = matches[i];\n            newHtml.push(textOrHtml.substring(lastIndex, match.getOffset()));\n            newHtml.push(this.createMatchReturnVal(match));\n            lastIndex = match.getOffset() + match.getMatchedText().length;\n        }\n        newHtml.push(textOrHtml.substring(lastIndex)); // handle the text after the last match\n        return newHtml.join('');\n    };\n    /**\n     * Creates the return string value for a given match in the input string.\n     *\n     * This method handles the {@link #replaceFn}, if one was provided.\n     *\n     * @private\n     * @param {Autolinker.match.Match} match The Match object that represents\n     *   the match.\n     * @return {String} The string that the `match` should be replaced with.\n     *   This is usually the anchor tag string, but may be the `matchStr` itself\n     *   if the match is not to be replaced.\n     */\n    Autolinker.prototype.createMatchReturnVal = function (match) {\n        // Handle a custom `replaceFn` being provided\n        var replaceFnResult;\n        if (this.replaceFn) {\n            replaceFnResult = this.replaceFn.call(this.context, match); // Autolinker instance is the context\n        }\n        if (typeof replaceFnResult === 'string') {\n            return replaceFnResult; // `replaceFn` returned a string, use that\n        }\n        else if (replaceFnResult === false) {\n            return match.getMatchedText(); // no replacement for the match\n        }\n        else if (replaceFnResult instanceof HtmlTag) {\n            return replaceFnResult.toAnchorString();\n        }\n        else { // replaceFnResult === true, or no/unknown return value from function\n            // Perform Autolinker's default anchor tag generation\n            var anchorTag = match.buildTag(); // returns an Autolinker.HtmlTag instance\n            return anchorTag.toAnchorString();\n        }\n    };\n    /**\n     * Lazily instantiates and returns the {@link Autolinker.matcher.Matcher}\n     * instances for this Autolinker instance.\n     *\n     * @private\n     * @return {Autolinker.matcher.Matcher[]}\n     */\n    Autolinker.prototype.getMatchers = function () {\n        if (!this.matchers) {\n            var tagBuilder = this.getTagBuilder();\n            var matchers = [\n                new HashtagMatcher({ tagBuilder: tagBuilder, serviceName: this.hashtag }),\n                new EmailMatcher({ tagBuilder: tagBuilder }),\n                new PhoneMatcher({ tagBuilder: tagBuilder }),\n                new MentionMatcher({ tagBuilder: tagBuilder, serviceName: this.mention }),\n                new UrlMatcher({ tagBuilder: tagBuilder, stripPrefix: this.stripPrefix, stripTrailingSlash: this.stripTrailingSlash, decodePercentEncoding: this.decodePercentEncoding })\n            ];\n            return (this.matchers = matchers);\n        }\n        else {\n            return this.matchers;\n        }\n    };\n    /**\n     * Returns the {@link #tagBuilder} instance for this Autolinker instance,\n     * lazily instantiating it if it does not yet exist.\n     *\n     * @private\n     * @return {Autolinker.AnchorTagBuilder}\n     */\n    Autolinker.prototype.getTagBuilder = function () {\n        var tagBuilder = this.tagBuilder;\n        if (!tagBuilder) {\n            tagBuilder = this.tagBuilder = new AnchorTagBuilder({\n                newWindow: this.newWindow,\n                truncate: this.truncate,\n                className: this.className\n            });\n        }\n        return tagBuilder;\n    };\n    /**\n     * @static\n     * @property {String} version\n     *\n     * The Autolinker version number in the form major.minor.patch\n     *\n     * Ex: 0.25.1\n     */\n    Autolinker.version = '3.15.0';\n    /**\n     * For backwards compatibility with Autolinker 1.x, the AnchorTagBuilder\n     * class is provided as a static on the Autolinker class.\n     */\n    Autolinker.AnchorTagBuilder = AnchorTagBuilder;\n    /**\n     * For backwards compatibility with Autolinker 1.x, the HtmlTag class is\n     * provided as a static on the Autolinker class.\n     */\n    Autolinker.HtmlTag = HtmlTag;\n    /**\n     * For backwards compatibility with Autolinker 1.x, the Matcher classes are\n     * provided as statics on the Autolinker class.\n     */\n    Autolinker.matcher = {\n        Email: EmailMatcher,\n        Hashtag: HashtagMatcher,\n        Matcher: Matcher,\n        Mention: MentionMatcher,\n        Phone: PhoneMatcher,\n        Url: UrlMatcher\n    };\n    /**\n     * For backwards compatibility with Autolinker 1.x, the Match classes are\n     * provided as statics on the Autolinker class.\n     */\n    Autolinker.match = {\n        Email: EmailMatch,\n        Hashtag: HashtagMatch,\n        Match: Match,\n        Mention: MentionMatch,\n        Phone: PhoneMatch,\n        Url: UrlMatch\n    };\n    return Autolinker;\n}());\nexport default Autolinker;\n\n//# sourceMappingURL=autolinker.js.map\n","import Quill from 'quill';\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _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 _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = _getPrototypeOf(object);\n    if (object === null) break;\n  }\n\n  return object;\n}\n\nfunction _get() {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    _get = Reflect.get;\n  } else {\n    _get = function _get(target, property, receiver) {\n      var base = _superPropBase(target, property);\n\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n\n      if (desc.get) {\n        return desc.get.call(arguments.length < 3 ? target : receiver);\n      }\n\n      return desc.value;\n    };\n  }\n\n  return _get.apply(this, arguments);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n  if (!it) {\n    if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n\n      var F = function () {};\n\n      return {\n        s: F,\n        n: function () {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function (e) {\n          throw e;\n        },\n        f: F\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var normalCompletion = true,\n      didErr = false,\n      err;\n  return {\n    s: function () {\n      it = it.call(o);\n    },\n    n: function () {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function (e) {\n      didErr = true;\n      err = e;\n    },\n    f: function () {\n      try {\n        if (!normalCompletion && it.return != null) it.return();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}\n\nvar Keys = {\n  TAB: 9,\n  ENTER: 13,\n  ESCAPE: 27,\n  UP: 38,\n  DOWN: 40\n};\n\nfunction attachDataValues(element, data, dataAttributes) {\n  var mention = element;\n  Object.keys(data).forEach(function (key) {\n    if (dataAttributes.indexOf(key) > -1) {\n      mention.dataset[key] = data[key];\n    } else {\n      delete mention.dataset[key];\n    }\n  });\n  return mention;\n}\n\nfunction getMentionCharIndex(text, mentionDenotationChars) {\n  return mentionDenotationChars.reduce(function (prev, mentionChar) {\n    var mentionCharIndex = text.lastIndexOf(mentionChar);\n\n    if (mentionCharIndex > prev.mentionCharIndex) {\n      return {\n        mentionChar: mentionChar,\n        mentionCharIndex: mentionCharIndex\n      };\n    }\n\n    return {\n      mentionChar: prev.mentionChar,\n      mentionCharIndex: prev.mentionCharIndex\n    };\n  }, {\n    mentionChar: null,\n    mentionCharIndex: -1\n  });\n}\n\nfunction hasValidChars(text, allowedChars) {\n  return allowedChars.test(text);\n}\n\nfunction hasValidMentionCharIndex(mentionCharIndex, text, isolateChar) {\n  if (mentionCharIndex > -1) {\n    if (isolateChar && !(mentionCharIndex === 0 || !!text[mentionCharIndex - 1].match(/\\s/g))) {\n      return false;\n    }\n\n    return true;\n  }\n\n  return false;\n}\n\nvar Embed = Quill[\"import\"](\"blots/embed\");\n\nvar MentionBlot = /*#__PURE__*/function (_Embed) {\n  _inherits(MentionBlot, _Embed);\n\n  var _super = _createSuper(MentionBlot);\n\n  function MentionBlot(scroll, node) {\n    var _this;\n\n    _classCallCheck(this, MentionBlot);\n\n    _this = _super.call(this, scroll, node);\n\n    _defineProperty(_assertThisInitialized(_this), \"hoverHandler\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"hoverHandler\", void 0);\n\n    _this.clickHandler = null;\n    _this.hoverHandler = null;\n    _this.mounted = false;\n    return _this;\n  }\n\n  _createClass(MentionBlot, [{\n    key: \"attach\",\n    value: function attach() {\n      _get(_getPrototypeOf(MentionBlot.prototype), \"attach\", this).call(this);\n\n      if (!this.mounted) {\n        this.mounted = true;\n        this.clickHandler = this.getClickHandler();\n        this.hoverHandler = this.getHoverHandler();\n        this.domNode.addEventListener(\"click\", this.clickHandler, false);\n        this.domNode.addEventListener(\"mouseenter\", this.hoverHandler, false);\n      }\n    }\n  }, {\n    key: \"detach\",\n    value: function detach() {\n      _get(_getPrototypeOf(MentionBlot.prototype), \"detach\", this).call(this);\n\n      this.mounted = false;\n\n      if (this.clickHandler) {\n        this.domNode.removeEventListener(\"click\", this.clickHandler);\n        this.clickHandler = null;\n      }\n    }\n  }, {\n    key: \"getClickHandler\",\n    value: function getClickHandler() {\n      var _this2 = this;\n\n      return function (e) {\n        var event = _this2.buildEvent(\"mention-clicked\", e);\n\n        window.dispatchEvent(event);\n        e.preventDefault();\n      };\n    }\n  }, {\n    key: \"getHoverHandler\",\n    value: function getHoverHandler() {\n      var _this3 = this;\n\n      return function (e) {\n        var event = _this3.buildEvent('mention-hovered', e);\n\n        window.dispatchEvent(event);\n        e.preventDefault();\n      };\n    }\n  }, {\n    key: \"buildEvent\",\n    value: function buildEvent(name, e) {\n      var event = new Event(name, {\n        bubbles: true,\n        cancelable: true\n      });\n      event.value = _extends({}, this.domNode.dataset);\n      event.event = e;\n      return event;\n    }\n  }], [{\n    key: \"create\",\n    value: function create(data) {\n      var node = _get(_getPrototypeOf(MentionBlot), \"create\", this).call(this);\n\n      var denotationChar = document.createElement(\"span\");\n      denotationChar.className = \"ql-mention-denotation-char\";\n      denotationChar.innerHTML = data.denotationChar;\n      node.appendChild(denotationChar);\n      node.innerHTML += data.value;\n      return MentionBlot.setDataValues(node, data);\n    }\n  }, {\n    key: \"setDataValues\",\n    value: function setDataValues(element, data) {\n      var domNode = element;\n      Object.keys(data).forEach(function (key) {\n        domNode.dataset[key] = data[key];\n      });\n      return domNode;\n    }\n  }, {\n    key: \"value\",\n    value: function value(domNode) {\n      return domNode.dataset;\n    }\n  }]);\n\n  return MentionBlot;\n}(Embed);\n\nMentionBlot.blotName = \"mention\";\nMentionBlot.tagName = \"span\";\nMentionBlot.className = \"mention\";\nQuill.register(MentionBlot);\n\nvar Mention = /*#__PURE__*/function () {\n  function Mention(quill, options) {\n    var _this = this;\n\n    _classCallCheck(this, Mention);\n\n    this.isOpen = false;\n    this.itemIndex = 0;\n    this.mentionCharPos = null;\n    this.cursorPos = null;\n    this.values = [];\n    this.suspendMouseEnter = false; //this token is an object that may contains one key \"abandoned\", set to\n    //true when the previous source call should be ignored in favor or a\n    //more recent execution.  This token will be null unless a source call\n    //is in progress.\n\n    this.existingSourceExecutionToken = null;\n    this.quill = quill;\n    this.options = {\n      source: null,\n      renderItem: function renderItem(item) {\n        return \"\".concat(item.value);\n      },\n      renderLoading: function renderLoading() {\n        return null;\n      },\n      onSelect: function onSelect(item, insertItem) {\n        insertItem(item);\n      },\n      mentionDenotationChars: [\"@\"],\n      showDenotationChar: true,\n      allowedChars: /^[a-zA-Z0-9_]*$/,\n      minChars: 0,\n      maxChars: 31,\n      offsetTop: 2,\n      offsetLeft: 0,\n      isolateCharacter: false,\n      fixMentionsToQuill: false,\n      positioningStrategy: \"normal\",\n      defaultMenuOrientation: \"bottom\",\n      blotName: \"mention\",\n      dataAttributes: [\"id\", \"value\", \"denotationChar\", \"link\", \"target\", \"disabled\"],\n      linkTarget: \"_blank\",\n      onOpen: function onOpen() {\n        return true;\n      },\n      onBeforeClose: function onBeforeClose() {\n        return true;\n      },\n      onClose: function onClose() {\n        return true;\n      },\n      // Style options\n      listItemClass: \"ql-mention-list-item\",\n      mentionContainerClass: \"ql-mention-list-container\",\n      mentionListClass: \"ql-mention-list\",\n      spaceAfterInsert: true,\n      selectKeys: [Keys.ENTER]\n    };\n\n    _extends(this.options, options, {\n      dataAttributes: Array.isArray(options.dataAttributes) ? this.options.dataAttributes.concat(options.dataAttributes) : this.options.dataAttributes\n    }); //create mention container\n\n\n    this.mentionContainer = document.createElement(\"div\");\n    this.mentionContainer.className = this.options.mentionContainerClass ? this.options.mentionContainerClass : \"\";\n    this.mentionContainer.style.cssText = \"display: none; position: absolute;\";\n    this.mentionContainer.onmousemove = this.onContainerMouseMove.bind(this);\n\n    if (this.options.fixMentionsToQuill) {\n      this.mentionContainer.style.width = \"auto\";\n    }\n\n    this.mentionList = document.createElement(\"ul\");\n    this.mentionList.id = 'quill-mention-list';\n    quill.root.setAttribute('aria-owns', 'quill-mention-list');\n    this.mentionList.className = this.options.mentionListClass ? this.options.mentionListClass : \"\";\n    this.mentionContainer.appendChild(this.mentionList);\n    quill.on(\"text-change\", this.onTextChange.bind(this));\n    quill.on(\"selection-change\", this.onSelectionChange.bind(this)); //Pasting doesn't fire selection-change after the pasted text is\n    //inserted, so here we manually trigger one\n\n    quill.container.addEventListener(\"paste\", function () {\n      setTimeout(function () {\n        var range = quill.getSelection();\n\n        _this.onSelectionChange(range);\n      });\n    });\n    quill.keyboard.addBinding({\n      key: Keys.TAB\n    }, this.selectHandler.bind(this));\n    quill.keyboard.bindings[Keys.TAB].unshift(quill.keyboard.bindings[Keys.TAB].pop());\n\n    var _iterator = _createForOfIteratorHelper(this.options.selectKeys),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var selectKey = _step.value;\n        quill.keyboard.addBinding({\n          key: selectKey\n        }, this.selectHandler.bind(this));\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    quill.keyboard.bindings[Keys.ENTER].unshift(quill.keyboard.bindings[Keys.ENTER].pop());\n    quill.keyboard.addBinding({\n      key: Keys.ESCAPE\n    }, this.escapeHandler.bind(this));\n    quill.keyboard.addBinding({\n      key: Keys.UP\n    }, this.upHandler.bind(this));\n    quill.keyboard.addBinding({\n      key: Keys.DOWN\n    }, this.downHandler.bind(this));\n  }\n\n  _createClass(Mention, [{\n    key: \"selectHandler\",\n    value: function selectHandler() {\n      if (this.isOpen && !this.existingSourceExecutionToken) {\n        this.selectItem();\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: \"escapeHandler\",\n    value: function escapeHandler() {\n      if (this.isOpen) {\n        if (this.existingSourceExecutionToken) {\n          this.existingSourceExecutionToken.abandoned = true;\n        }\n\n        this.hideMentionList();\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: \"upHandler\",\n    value: function upHandler() {\n      if (this.isOpen && !this.existingSourceExecutionToken) {\n        this.prevItem();\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: \"downHandler\",\n    value: function downHandler() {\n      if (this.isOpen && !this.existingSourceExecutionToken) {\n        this.nextItem();\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: \"showMentionList\",\n    value: function showMentionList() {\n      if (this.options.positioningStrategy === \"fixed\") {\n        document.body.appendChild(this.mentionContainer);\n      } else {\n        this.quill.container.appendChild(this.mentionContainer);\n      }\n\n      this.mentionContainer.style.visibility = \"hidden\";\n      this.mentionContainer.style.display = \"\";\n      this.mentionContainer.scrollTop = 0;\n      this.setMentionContainerPosition();\n      this.setIsOpen(true);\n    }\n  }, {\n    key: \"hideMentionList\",\n    value: function hideMentionList() {\n      this.options.onBeforeClose();\n      this.mentionContainer.style.display = \"none\";\n      this.mentionContainer.remove();\n      this.setIsOpen(false);\n      this.quill.root.removeAttribute('aria-activedescendant');\n    }\n  }, {\n    key: \"highlightItem\",\n    value: function highlightItem() {\n      var scrollItemInView = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      for (var i = 0; i < this.mentionList.childNodes.length; i += 1) {\n        this.mentionList.childNodes[i].classList.remove(\"selected\");\n      }\n\n      if (this.itemIndex === -1 || this.mentionList.childNodes[this.itemIndex].dataset.disabled === \"true\") {\n        return;\n      }\n\n      this.mentionList.childNodes[this.itemIndex].classList.add(\"selected\");\n      this.quill.root.setAttribute('aria-activedescendant', this.mentionList.childNodes[this.itemIndex].id);\n\n      if (scrollItemInView) {\n        var itemHeight = this.mentionList.childNodes[this.itemIndex].offsetHeight;\n        var itemPos = this.mentionList.childNodes[this.itemIndex].offsetTop;\n        var containerTop = this.mentionContainer.scrollTop;\n        var containerBottom = containerTop + this.mentionContainer.offsetHeight;\n\n        if (itemPos < containerTop) {\n          // Scroll up if the item is above the top of the container\n          this.mentionContainer.scrollTop = itemPos;\n        } else if (itemPos > containerBottom - itemHeight) {\n          // scroll down if any part of the element is below the bottom of the container\n          this.mentionContainer.scrollTop += itemPos - containerBottom + itemHeight;\n        }\n      }\n    }\n  }, {\n    key: \"getItemData\",\n    value: function getItemData() {\n      var link = this.mentionList.childNodes[this.itemIndex].dataset.link;\n      var hasLinkValue = typeof link !== \"undefined\";\n      var itemTarget = this.mentionList.childNodes[this.itemIndex].dataset.target;\n\n      if (hasLinkValue) {\n        this.mentionList.childNodes[this.itemIndex].dataset.value = \"<a href=\\\"\".concat(link, \"\\\" target=\").concat(itemTarget || this.options.linkTarget, \">\").concat(this.mentionList.childNodes[this.itemIndex].dataset.value);\n      }\n\n      return this.mentionList.childNodes[this.itemIndex].dataset;\n    }\n  }, {\n    key: \"onContainerMouseMove\",\n    value: function onContainerMouseMove() {\n      this.suspendMouseEnter = false;\n    }\n  }, {\n    key: \"selectItem\",\n    value: function selectItem() {\n      var _this2 = this;\n\n      if (this.itemIndex === -1) {\n        return;\n      }\n\n      var data = this.getItemData();\n\n      if (data.disabled) {\n        return;\n      }\n\n      this.options.onSelect(data, function (asyncData) {\n        _this2.insertItem(asyncData);\n      });\n      this.hideMentionList();\n    }\n  }, {\n    key: \"insertItem\",\n    value: function insertItem(data, programmaticInsert) {\n      var render = data;\n\n      if (render === null) {\n        return;\n      }\n\n      if (!this.options.showDenotationChar) {\n        render.denotationChar = \"\";\n      }\n\n      var insertAtPos;\n\n      if (!programmaticInsert) {\n        insertAtPos = this.mentionCharPos;\n        this.quill.deleteText(this.mentionCharPos, this.cursorPos - this.mentionCharPos, Quill.sources.USER);\n      } else {\n        insertAtPos = this.cursorPos;\n      }\n\n      this.quill.insertEmbed(insertAtPos, this.options.blotName, render, Quill.sources.USER);\n\n      if (this.options.spaceAfterInsert) {\n        this.quill.insertText(insertAtPos + 1, \" \", Quill.sources.USER); // setSelection here sets cursor position\n\n        this.quill.setSelection(insertAtPos + 2, Quill.sources.USER);\n      } else {\n        this.quill.setSelection(insertAtPos + 1, Quill.sources.USER);\n      }\n\n      this.hideMentionList();\n    }\n  }, {\n    key: \"onItemMouseEnter\",\n    value: function onItemMouseEnter(e) {\n      if (this.suspendMouseEnter) {\n        return;\n      }\n\n      var index = Number(e.target.dataset.index);\n\n      if (!Number.isNaN(index) && index !== this.itemIndex) {\n        this.itemIndex = index;\n        this.highlightItem(false);\n      }\n    }\n  }, {\n    key: \"onDisabledItemMouseEnter\",\n    value: function onDisabledItemMouseEnter(e) {\n      if (this.suspendMouseEnter) {\n        return;\n      }\n\n      this.itemIndex = -1;\n      this.highlightItem(false);\n    }\n  }, {\n    key: \"onItemClick\",\n    value: function onItemClick(e) {\n      if (e.button !== 0) {\n        return;\n      }\n\n      e.preventDefault();\n      e.stopImmediatePropagation();\n      this.itemIndex = e.currentTarget.dataset.index;\n      this.highlightItem();\n      this.selectItem();\n    }\n  }, {\n    key: \"onItemMouseDown\",\n    value: function onItemMouseDown(e) {\n      e.preventDefault();\n      e.stopImmediatePropagation();\n    }\n  }, {\n    key: \"renderLoading\",\n    value: function renderLoading() {\n      var renderedLoading = this.options.renderLoading();\n\n      if (!renderedLoading) {\n        return;\n      }\n\n      if (this.mentionContainer.getElementsByClassName(\"ql-mention-loading\").length > 0) {\n        this.showMentionList();\n        return;\n      }\n\n      this.mentionList.innerHTML = \"\";\n      var loadingDiv = document.createElement(\"div\");\n      loadingDiv.className = \"ql-mention-loading\";\n      loadingDiv.innerHTML = this.options.renderLoading();\n      this.mentionContainer.append(loadingDiv);\n      this.showMentionList();\n    }\n  }, {\n    key: \"removeLoading\",\n    value: function removeLoading() {\n      var loadingDiv = this.mentionContainer.getElementsByClassName(\"ql-mention-loading\");\n\n      if (loadingDiv.length > 0) {\n        loadingDiv[0].remove();\n      }\n    }\n  }, {\n    key: \"renderList\",\n    value: function renderList(mentionChar, data, searchTerm) {\n      if (data && data.length > 0) {\n        this.removeLoading();\n        this.values = data;\n        this.mentionList.innerHTML = \"\";\n        var initialSelection = -1;\n\n        for (var i = 0; i < data.length; i += 1) {\n          var li = document.createElement(\"li\");\n          li.id = 'quill-mention-item-' + i;\n          li.className = this.options.listItemClass ? this.options.listItemClass : \"\";\n\n          if (data[i].disabled) {\n            li.className += \" disabled\";\n            li.setAttribute('aria-hidden', 'true');\n          } else if (initialSelection === -1) {\n            initialSelection = i;\n          }\n\n          li.dataset.index = i;\n          li.innerHTML = this.options.renderItem(data[i], searchTerm);\n\n          if (!data[i].disabled) {\n            li.onmouseenter = this.onItemMouseEnter.bind(this);\n            li.onmouseup = this.onItemClick.bind(this);\n            li.onmousedown = this.onItemMouseDown.bind(this);\n          } else {\n            li.onmouseenter = this.onDisabledItemMouseEnter.bind(this);\n          }\n\n          li.dataset.denotationChar = mentionChar;\n          this.mentionList.appendChild(attachDataValues(li, data[i], this.options.dataAttributes));\n        }\n\n        this.itemIndex = initialSelection;\n        this.highlightItem();\n        this.showMentionList();\n      } else {\n        this.hideMentionList();\n      }\n    }\n  }, {\n    key: \"nextItem\",\n    value: function nextItem() {\n      var increment = 0;\n      var newIndex;\n\n      do {\n        increment++;\n        newIndex = (this.itemIndex + increment) % this.values.length;\n        var disabled = this.mentionList.childNodes[newIndex].dataset.disabled === \"true\";\n\n        if (increment === this.values.length + 1) {\n          //we've wrapped around w/o finding an enabled item\n          newIndex = -1;\n          break;\n        }\n      } while (disabled);\n\n      this.itemIndex = newIndex;\n      this.suspendMouseEnter = true;\n      this.highlightItem();\n    }\n  }, {\n    key: \"prevItem\",\n    value: function prevItem() {\n      var decrement = 0;\n      var newIndex;\n\n      do {\n        decrement++;\n        newIndex = (this.itemIndex + this.values.length - decrement) % this.values.length;\n        var disabled = this.mentionList.childNodes[newIndex].dataset.disabled === \"true\";\n\n        if (decrement === this.values.length + 1) {\n          //we've wrapped around w/o finding an enabled item\n          newIndex = -1;\n          break;\n        }\n      } while (disabled);\n\n      this.itemIndex = newIndex;\n      this.suspendMouseEnter = true;\n      this.highlightItem();\n    }\n  }, {\n    key: \"containerBottomIsNotVisible\",\n    value: function containerBottomIsNotVisible(topPos, containerPos) {\n      var mentionContainerBottom = topPos + this.mentionContainer.offsetHeight + containerPos.top;\n      return mentionContainerBottom > window.pageYOffset + window.innerHeight;\n    }\n  }, {\n    key: \"containerRightIsNotVisible\",\n    value: function containerRightIsNotVisible(leftPos, containerPos) {\n      if (this.options.fixMentionsToQuill) {\n        return false;\n      }\n\n      var rightPos = leftPos + this.mentionContainer.offsetWidth + containerPos.left;\n      var browserWidth = window.pageXOffset + document.documentElement.clientWidth;\n      return rightPos > browserWidth;\n    }\n  }, {\n    key: \"setIsOpen\",\n    value: function setIsOpen(isOpen) {\n      if (this.isOpen !== isOpen) {\n        if (isOpen) {\n          this.options.onOpen();\n        } else {\n          this.options.onClose();\n        }\n\n        this.isOpen = isOpen;\n      }\n    }\n  }, {\n    key: \"setMentionContainerPosition\",\n    value: function setMentionContainerPosition() {\n      if (this.options.positioningStrategy === \"fixed\") {\n        this.setMentionContainerPosition_Fixed();\n      } else {\n        this.setMentionContainerPosition_Normal();\n      }\n    }\n  }, {\n    key: \"setMentionContainerPosition_Normal\",\n    value: function setMentionContainerPosition_Normal() {\n      var _this3 = this;\n\n      var containerPos = this.quill.container.getBoundingClientRect();\n      var mentionCharPos = this.quill.getBounds(this.mentionCharPos);\n      var containerHeight = this.mentionContainer.offsetHeight;\n      var topPos = this.options.offsetTop;\n      var leftPos = this.options.offsetLeft; // handle horizontal positioning\n\n      if (this.options.fixMentionsToQuill) {\n        var rightPos = 0;\n        this.mentionContainer.style.right = \"\".concat(rightPos, \"px\");\n      } else {\n        leftPos += mentionCharPos.left;\n      }\n\n      if (this.containerRightIsNotVisible(leftPos, containerPos)) {\n        var containerWidth = this.mentionContainer.offsetWidth + this.options.offsetLeft;\n        var quillWidth = containerPos.width;\n        leftPos = quillWidth - containerWidth;\n      } // handle vertical positioning\n\n\n      if (this.options.defaultMenuOrientation === \"top\") {\n        // Attempt to align the mention container with the top of the quill editor\n        if (this.options.fixMentionsToQuill) {\n          topPos = -1 * (containerHeight + this.options.offsetTop);\n        } else {\n          topPos = mentionCharPos.top - (containerHeight + this.options.offsetTop);\n        } // default to bottom if the top is not visible\n\n\n        if (topPos + containerPos.top <= 0) {\n          var overMentionCharPos = this.options.offsetTop;\n\n          if (this.options.fixMentionsToQuill) {\n            overMentionCharPos += containerPos.height;\n          } else {\n            overMentionCharPos += mentionCharPos.bottom;\n          }\n\n          topPos = overMentionCharPos;\n        }\n      } else {\n        // Attempt to align the mention container with the bottom of the quill editor\n        if (this.options.fixMentionsToQuill) {\n          topPos += containerPos.height;\n        } else {\n          topPos += mentionCharPos.bottom;\n        } // default to the top if the bottom is not visible\n\n\n        if (this.containerBottomIsNotVisible(topPos, containerPos)) {\n          var _overMentionCharPos = this.options.offsetTop * -1;\n\n          if (!this.options.fixMentionsToQuill) {\n            _overMentionCharPos += mentionCharPos.top;\n          }\n\n          topPos = _overMentionCharPos - containerHeight;\n        }\n      }\n\n      if (topPos >= 0) {\n        this.options.mentionContainerClass.split(' ').forEach(function (className) {\n          _this3.mentionContainer.classList.add(\"\".concat(className, \"-bottom\"));\n\n          _this3.mentionContainer.classList.remove(\"\".concat(className, \"-top\"));\n        });\n      } else {\n        this.options.mentionContainerClass.split(' ').forEach(function (className) {\n          _this3.mentionContainer.classList.add(\"\".concat(className, \"-top\"));\n\n          _this3.mentionContainer.classList.remove(\"\".concat(className, \"-bottom\"));\n        });\n      }\n\n      this.mentionContainer.style.top = \"\".concat(topPos, \"px\");\n      this.mentionContainer.style.left = \"\".concat(leftPos, \"px\");\n      this.mentionContainer.style.visibility = \"visible\";\n    }\n  }, {\n    key: \"setMentionContainerPosition_Fixed\",\n    value: function setMentionContainerPosition_Fixed() {\n      var _this4 = this;\n\n      this.mentionContainer.style.position = \"fixed\";\n      this.mentionContainer.style.height = null;\n      var containerPos = this.quill.container.getBoundingClientRect();\n      var mentionCharPos = this.quill.getBounds(this.mentionCharPos);\n      var mentionCharPosAbsolute = {\n        left: containerPos.left + mentionCharPos.left,\n        top: containerPos.top + mentionCharPos.top,\n        width: 0,\n        height: mentionCharPos.height\n      }; //Which rectangle should it be relative to\n\n      var relativeToPos = this.options.fixMentionsToQuill ? containerPos : mentionCharPosAbsolute;\n      var topPos = this.options.offsetTop;\n      var leftPos = this.options.offsetLeft; // handle horizontal positioning\n\n      if (this.options.fixMentionsToQuill) {\n        var rightPos = relativeToPos.right;\n        this.mentionContainer.style.right = \"\".concat(rightPos, \"px\");\n      } else {\n        leftPos += relativeToPos.left; //if its off the righ edge, push it back\n\n        if (leftPos + this.mentionContainer.offsetWidth > document.documentElement.clientWidth) {\n          leftPos -= leftPos + this.mentionContainer.offsetWidth - document.documentElement.clientWidth;\n        }\n      }\n\n      var availableSpaceTop = relativeToPos.top;\n      var availableSpaceBottom = document.documentElement.clientHeight - (relativeToPos.top + relativeToPos.height);\n      var fitsBottom = this.mentionContainer.offsetHeight <= availableSpaceBottom;\n      var fitsTop = this.mentionContainer.offsetHeight <= availableSpaceTop;\n      var placement;\n\n      if (this.options.defaultMenuOrientation === \"top\" && fitsTop) {\n        placement = \"top\";\n      } else if (this.options.defaultMenuOrientation === \"bottom\" && fitsBottom) {\n        placement = \"bottom\";\n      } else {\n        //it doesnt fit either so put it where there's the most space\n        placement = availableSpaceBottom > availableSpaceTop ? \"bottom\" : \"top\";\n      }\n\n      if (placement === \"bottom\") {\n        topPos = relativeToPos.top + relativeToPos.height;\n\n        if (!fitsBottom) {\n          //shrink it to fit\n          //3 is a bit of a fudge factor so it doesnt touch the edge of the screen\n          this.mentionContainer.style.height = availableSpaceBottom - 3 + \"px\";\n        }\n\n        this.options.mentionContainerClass.split(\" \").forEach(function (className) {\n          _this4.mentionContainer.classList.add(\"\".concat(className, \"-bottom\"));\n\n          _this4.mentionContainer.classList.remove(\"\".concat(className, \"-top\"));\n        });\n      } else {\n        topPos = relativeToPos.top - this.mentionContainer.offsetHeight;\n\n        if (!fitsTop) {\n          //shrink it to fit\n          //3 is a bit of a fudge factor so it doesnt touch the edge of the screen\n          this.mentionContainer.style.height = availableSpaceTop - 3 + \"px\";\n          topPos = 3;\n        }\n\n        this.options.mentionContainerClass.split(\" \").forEach(function (className) {\n          _this4.mentionContainer.classList.add(\"\".concat(className, \"-top\"));\n\n          _this4.mentionContainer.classList.remove(\"\".concat(className, \"-bottom\"));\n        });\n      }\n\n      this.mentionContainer.style.top = \"\".concat(topPos, \"px\");\n      this.mentionContainer.style.left = \"\".concat(leftPos, \"px\");\n      this.mentionContainer.style.visibility = \"visible\";\n    }\n  }, {\n    key: \"getTextBeforeCursor\",\n    value: function getTextBeforeCursor() {\n      var startPos = Math.max(0, this.cursorPos - this.options.maxChars);\n      var textBeforeCursorPos = this.quill.getText(startPos, this.cursorPos - startPos);\n      return textBeforeCursorPos;\n    }\n  }, {\n    key: \"onSomethingChange\",\n    value: function onSomethingChange() {\n      var _this5 = this;\n\n      var range = this.quill.getSelection();\n      if (range == null) return;\n      this.cursorPos = range.index;\n      var textBeforeCursor = this.getTextBeforeCursor();\n\n      var _getMentionCharIndex = getMentionCharIndex(textBeforeCursor, this.options.mentionDenotationChars),\n          mentionChar = _getMentionCharIndex.mentionChar,\n          mentionCharIndex = _getMentionCharIndex.mentionCharIndex;\n\n      if (hasValidMentionCharIndex(mentionCharIndex, textBeforeCursor, this.options.isolateCharacter)) {\n        var mentionCharPos = this.cursorPos - (textBeforeCursor.length - mentionCharIndex);\n        this.mentionCharPos = mentionCharPos;\n        var textAfter = textBeforeCursor.substring(mentionCharIndex + mentionChar.length);\n\n        if (textAfter.length >= this.options.minChars && hasValidChars(textAfter, this.getAllowedCharsRegex(mentionChar))) {\n          if (this.existingSourceExecutionToken) {\n            this.existingSourceExecutionToken.abandoned = true;\n          }\n\n          this.renderLoading();\n          var sourceRequestToken = {\n            abandoned: false\n          };\n          this.existingSourceExecutionToken = sourceRequestToken;\n          this.options.source(textAfter, function (data, searchTerm) {\n            if (sourceRequestToken.abandoned) {\n              return;\n            }\n\n            _this5.existingSourceExecutionToken = null;\n\n            _this5.renderList(mentionChar, data, searchTerm);\n          }, mentionChar);\n        } else {\n          if (this.existingSourceExecutionToken) {\n            this.existingSourceExecutionToken.abandoned = true;\n          }\n\n          this.hideMentionList();\n        }\n      } else {\n        if (this.existingSourceExecutionToken) {\n          this.existingSourceExecutionToken.abandoned = true;\n        }\n\n        this.hideMentionList();\n      }\n    }\n  }, {\n    key: \"getAllowedCharsRegex\",\n    value: function getAllowedCharsRegex(denotationChar) {\n      if (this.options.allowedChars instanceof RegExp) {\n        return this.options.allowedChars;\n      } else {\n        return this.options.allowedChars(denotationChar);\n      }\n    }\n  }, {\n    key: \"onTextChange\",\n    value: function onTextChange(delta, oldDelta, source) {\n      if (source === \"user\") {\n        this.onSomethingChange();\n      }\n    }\n  }, {\n    key: \"onSelectionChange\",\n    value: function onSelectionChange(range) {\n      if (range && range.length === 0) {\n        this.onSomethingChange();\n      } else {\n        this.hideMentionList();\n      }\n    }\n  }, {\n    key: \"openMenu\",\n    value: function openMenu(denotationChar) {\n      var selection = this.quill.getSelection(true);\n      this.quill.insertText(selection.index, denotationChar);\n      this.quill.blur();\n      this.quill.focus();\n    }\n  }]);\n\n  return Mention;\n}();\n\nQuill.register(\"modules/mention\", Mention);\n\nexport { Mention as default };\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\n/**\n * @typedef {Object} UI.MentionsManager.Mention\n * @property {string} email The email of the mentioned person. This is passed from setUserData.\n * @property {string} value The value(display name) of the mentioned person. This is passed from setUserData.\n * @property {string} type The type of the mentioned person. This is passed from setUserData.\n * @property {string} id The id of the mentioned person. This is passed from setUserData.\n * @property {string} annotId The id of the annotation in which the contents contain the mentions.\n */\n\n/**\n * @typedef {Object} mentionData\n * @property {UI.MentionsManager.Mention} mentions an array of mentions that an annotation contains\n * @property {string} contentWithoutMentions the content of an annotation, but without mentions\n * @ignore\n */\n\n/**\n * @typedef {Object.<string, string>} UI.MentionsManager.UserData\n * @property {string} value The display name of the user, which will be displayed in the suggestion overlay.\n * @property {string} [id] The unique id of the user. Default to `value`.\n * @property {string} [email] The email of the user, which will be displayed under `value` in the suggestion overlay, if present.\n */\n\n/**\n * @class\n * @name MentionsManager\n * @memberof UI\n * @extends Core.EventHandler\n */\nclass MentionsManager {\n  initialize(store, annotManager) {\n    this.store = store;\n    /**\n     * the key represents the event name\n     * the value is an array of callbacks that will be called when the given key event is triggered\n     * @type {Object.<string, Function[]>}\n     * @ignore\n     */\n    this.events = {};\n    /**\n     * the key represents an annotation's id\n     * the value is a mentionMap\n     * @type {Object.<string, mentionData>}\n     * @example\n     * {\n     *   'eb15d11a-ef1b-6d03-adba-e0eb64bbf6d2': {\n     *     mentions: [\n     *       {\n     *         email: 'cahang@pdftron.com',\n     *         value: 'Edmiz',\n     *         type: 'user',\n     *         id: 'aidsfuha-32123123',\n     *       },\n     *       ...\n     *     ],\n     *     contentWithoutMentions: '...'\n     *   }\n     * }\n     * @ignore\n     */\n    this.idMentionDataMap = {};\n    this.allowedTrailingCharacters = [' '];\n    this.mentionLookupCallback = this.defaultMentionsSearchCallback;\n    annotManager.addEventListener('annotationChanged', (annotations, action, { imported }) => {\n      if (imported || !annotations.length || !this.getUserData().length) {\n        return;\n      }\n\n      if (action === 'add') {\n        this.handleAnnotationsAdded(annotations);\n      } else if (action === 'modify') {\n        this.handleAnnotationsModified(annotations);\n      } else if (action === 'delete') {\n        this.handleAnnotationsDeleted(annotations);\n      }\n    });\n  }\n\n  handleAnnotationsAdded(annotations) {\n    let newMentions = [];\n\n    annotations.forEach(annotation => {\n      const mentionData = this.extractMentionDataFromAnnot(annotation);\n\n      this.idMentionDataMap[annotation.Id] = mentionData;\n      newMentions = newMentions.concat(mentionData.mentions);\n    });\n\n    if (newMentions.length) {\n      this.trigger('mentionChanged', [newMentions, 'add']);\n    }\n  }\n\n  handleAnnotationsModified(annotations) {\n    const newMentions = [];\n    let modifiedMentions = [];\n    const deletedMentions = [];\n\n    annotations.forEach(annotation => {\n      const prevMentionData = this.idMentionDataMap[annotation.Id] || {\n        mentions: [],\n        contentWithoutMentions: '',\n      };\n      const currMentionData = this.extractMentionDataFromAnnot(annotation);\n      const prevMentions = prevMentionData.mentions;\n      const currMentions = currMentionData.mentions;\n\n      this.idMentionDataMap[annotation.Id] = currMentionData;\n\n      currMentions.forEach(currMention => {\n        const isNewMention = !prevMentions.find(prevMention =>\n          this.isSameMention(prevMention, currMention)\n        );\n        if (isNewMention) {\n          newMentions.push(currMention);\n        }\n      });\n\n      prevMentions.forEach(prevMention => {\n        const isDeletedMention = !currMentions.find(currMention =>\n          this.isSameMention(prevMention, currMention)\n        );\n        if (isDeletedMention) {\n          deletedMentions.push(prevMention);\n        }\n      });\n\n      if (\n        prevMentions.length &&\n        prevMentionData.contentWithoutMentions !== currMentionData.contentWithoutMentions\n      ) {\n        modifiedMentions = modifiedMentions.concat(currMentions);\n      }\n    });\n\n    if (newMentions.length) {\n      this.trigger('mentionChanged', [newMentions, 'add']);\n    }\n    if (modifiedMentions.length) {\n      this.trigger('mentionChanged', [modifiedMentions, 'modify']);\n    }\n    if (deletedMentions.length) {\n      this.trigger('mentionChanged', [deletedMentions, 'delete']);\n    }\n  }\n\n  handleAnnotationsDeleted(annotations) {\n    let deletedMentions = [];\n\n    annotations.forEach(annotation => {\n      if (this.idMentionDataMap[annotation.Id]) {\n        deletedMentions = deletedMentions.concat(this.idMentionDataMap[annotation.Id].mentions);\n        delete this.idMentionDataMap[annotation.Id];\n      }\n    });\n\n    if (deletedMentions.length) {\n      this.trigger('mentionChanged', [deletedMentions, 'delete']);\n    }\n  }\n\n  getFormattedTextFromDeltas(deltas) {\n    const formattedMentionTextList = [];\n    deltas.forEach(delta => {\n      if (delta.insert) {\n        if (typeof (delta.insert) === 'string') {\n          formattedMentionTextList.push(delta.insert);\n        } else if (delta.insert.mention) {\n          const mention = delta.insert.mention;\n          const formattedMentionText = `${mention.denotationChar}[${mention.value}](${mention.id})`;\n          formattedMentionTextList.push(formattedMentionText);\n        }\n      }\n    });\n    return formattedMentionTextList.join('');\n  }\n\n  /**\n   * @param {string} str a string to extract mention data from\n   * @returns {object} returns an object that contains the following properties\n   * plainTextValue: a string that has been transformed to not have the markups in the incoming string\n   * ids: an array of strings that contains the mentioned ids\n   * @ignore\n   */\n  extractMentionDataFromStr(str) {\n    // the value of the markup is defined at https://github.com/signavio/react-mentions#configuration\n    const markupRegex = /@\\[(.*?)\\]\\((.*?)\\)/g;\n    const ids = [];\n    let match;\n    let plainTextValue = str;\n\n    // iterate through the matches, extract ids and build the plainTextValue\n    // after the iteration finishes, if the incoming string is Hello! @[Zhijie Zhang](zzhang@pdftron.com), then we should have:\n    // {\n    //   plainTextValue: Hello! Zhijie Zhang,\n    //   ids: ['zzhang@pdftron.com'],\n    // }\n    // eslint-disable-next-line no-cond-assign\n    while ((match = markupRegex.exec(str)) !== null) {\n      const [wholeMatch, displayName, id] = match;\n\n      ids.push(id);\n      plainTextValue = plainTextValue.replace(\n        // keep the @ and only replace the remaining text\n        wholeMatch.slice(1),\n        displayName,\n      );\n    }\n\n    return {\n      plainTextValue,\n      ids,\n    };\n  }\n\n  /**\n   * @param {string} content\n   * @returns {mentionData}\n   * @ignore\n   */\n  extractMentionDataFromAnnot(annotation) {\n    let mentionData = annotation.getCustomData('trn-mention');\n    const userData = this.getUserData();\n    const contents = annotation.getContents();\n    const result = {\n      mentions: [],\n      contentWithoutMentions: contents,\n    };\n\n    if (mentionData === '') {\n      return result;\n    }\n\n    mentionData = JSON.parse(mentionData);\n\n    userData.forEach(user => {\n      if (mentionData.ids.includes(user.id) && this.isValidMention(contents, user.value)) {\n        result.mentions.push({\n          ...user,\n          annotId: annotation.Id,\n        });\n\n        result.contentWithoutMentions = result.contentWithoutMentions.replace(`@${user.value}`, '');\n      }\n    });\n\n    return result;\n  }\n\n  isValidMention(content, value) {\n    value = `@${value}`;\n\n    const startIndex = content.indexOf(value);\n    const nextChar = content[startIndex + value.length];\n    const isEndOfString = typeof nextChar === 'undefined';\n    const allowedChars = this.getAllowedTrailingCharacters();\n\n    return isEndOfString || allowedChars === '*' || allowedChars.includes(nextChar);\n  }\n\n  isSameMention(prevMention, currMention) {\n    for (const key in prevMention) {\n      if (prevMention[key] !== currMention[key]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  createMentionReply(annotation, value) {\n    const { plainTextValue, ids } = this.extractMentionDataFromStr(value);\n\n    const replyAnnot = new Annotations.StickyAnnotation();\n    replyAnnot['InReplyTo'] = annotation['Id'];\n    replyAnnot['X'] = annotation['X'];\n    replyAnnot['Y'] = annotation['Y'];\n    replyAnnot['PageNumber'] = annotation['PageNumber'];\n    replyAnnot['Author'] = core.getCurrentUser();\n    replyAnnot.setContents(plainTextValue || '');\n    replyAnnot.setCustomData('trn-mention', JSON.stringify({\n      contents: value,\n      ids,\n    }));\n\n    annotation.addReply(replyAnnot);\n\n    core.addAnnotations([replyAnnot]);\n\n    return replyAnnot;\n  }\n\n  /**\n   * Sets the user data that will be displayed in the suggestions overlay when an @ is entered in the textarea.\n   * @method UI.MentionsManager#setUserData\n   * @param {UI.MentionsManager.UserData[]} userData An array of user data\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.mentions.setUserData([\n      {\n        value: 'John Doe',\n      },\n      {\n        value: 'Jane Doe',\n        email: 'jDoe@gmail.com'\n      }\n    ]);\n  });\n   */\n  setUserData(userData) {\n    userData = userData.map(user => ({\n      ...user,\n      id: user.id || user.email || user.value,\n    }));\n\n    this.store.dispatch(actions.setUserData(userData));\n  }\n\n  /**\n   * Gets the user data\n   * @method UI.MentionsManager#getUserData\n   * @returns {UI.MentionsManager.UserData[]} An array of user data\n   */\n  getUserData() {\n    return selectors.getUserData(this.store.getState());\n  }\n\n  /**\n   * Sets the characters that can follow a mention, while not invalidating it\n   * By default, a mention can only be followed by a space, or is located at the end of the string\n   * @method UI.MentionsManager#setAllowedTrailingCharacters\n   * @param {string[]|'*'} chars An array of characters. If `*` is passed, then a mention can be followed by any characters\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.mentions.setUserData([\n      {\n        value: 'John Doe',\n      },\n    ]);\n\n    // this is considered as a mention, because `@John Doe` is at the end of the string\n    'Hello, @John Doe'\n\n    // this is considered as a mention, because `@John Doe` is followed by a space\n    'Hello, @John Doe How are you?'\n\n    // this is NOT considered as a mention, because `@John Doe` is followed by a comma\n    '@John Doe, Hello!'\n\n    instance.mentions.setAllowedTrailingCharacters([' ', ',']);\n\n    // this is now considered as a mention, because comma is an allowed trailing character\n    '@John Doe, Hello!'\n  });\n   */\n  setAllowedTrailingCharacters(chars) {\n    this.allowedTrailingCharacters = chars;\n  }\n\n  /**\n   * Gets the allowed trailing characters\n   * @method UI.MentionsManager#getAllowedTrailingCharacters\n   * @returns {string[]|'*'} An array of trailing characters, or '*'\n   */\n  getAllowedTrailingCharacters() {\n    return this.allowedTrailingCharacters;\n  }\n\n  on(eventName, fn) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = [];\n    }\n\n    this.events[eventName].push(fn);\n\n    return this;\n  }\n\n  off(eventName, fn) {\n    if (!this.events) {\n      return this;\n    }\n\n    if (typeof eventName === 'undefined') {\n      this.events = {};\n    }\n\n    if (!this.events[eventName]) {\n      return this;\n    }\n\n    if (fn) {\n      this.events[eventName] = this.events[eventName].filter(handler => handler !== fn);\n    } else {\n      this.events[eventName] = [];\n    }\n\n    return this;\n  }\n\n  one(eventName, fn) {\n    const origFn = fn;\n\n    fn = (...args) => {\n      this.off(eventName, fn);\n\n      origFn.apply(this, args);\n    };\n\n    return this.on(eventName, fn);\n  }\n\n  trigger(eventName, ...data) {\n    if (!this.events) {\n      return this;\n    }\n\n    if (!this.events[eventName]) {\n      return this;\n    }\n\n    // normalize data if only an array is passed in as data\n    // for example: trigger('mentionChanged', [mentions])\n    // data will be passed to the handler: (mentions) => {}\n    if (data.length === 1 && Array.isArray(data[0])) {\n      data = data[0];\n    }\n\n    this.events[eventName].forEach(fn => {\n      fn.call(this, ...data);\n    });\n\n    return this;\n  }\n\n  addEventListener(...args) {\n    this.on(...args);\n  }\n\n  setEventListener(...args) {\n    this.on(...args);\n  }\n\n  removeEventListener(...args) {\n    this.off(...args);\n  }\n\n\n  /**\n   * Sets the mention lookup callback function used by quill-mentions to filter the users in the suggestions overlay.\n   * @method UI.MentionsManager#setMentionLookupCallback\n   * @param {function} callback A callback function that returns an array of users that displayed in the suggestions overlay.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.mentions.setMentionLookupCallback(async (userData, searchTerm) => {\n      const matches = [];\n      userData.forEach((user) => {\n        if (user.name === 'John Doe') {\n          matches.push(user);\n        }\n      });\n      return matches;\n    });\n  });\n   */\n  setMentionLookupCallback(callback) {\n    this.mentionLookupCallback = callback;\n  }\n\n  /**\n   * Gets the current mention lookup callback function being used by quill-mentions to filter the users in the suggestions overlay.\n   * @method UI.MentionsManager#getMentionLookupCallback\n   * @returns {function} the current function used to filter users in the suggestions overlay\n   */\n  getMentionLookupCallback() {\n    return this.mentionLookupCallback;\n  }\n\n  /**\n   * The default mention lookup callback used to filter users in the suggestions overlay.\n   * @method UI.MentionsManager#defaultMentionLookupCallback\n   */\n  defaultMentionsSearchCallback(userData, searchTerm) {\n    if (searchTerm.length === 0) {\n      return (userData);\n    }\n\n    const matches = [];\n    const searchTermLowerCase = searchTerm.toLowerCase();\n    userData.forEach(function(user) {\n      const userValueIncludesSearchTerm = user.value.toLowerCase().includes(searchTermLowerCase);\n      const userIdIncludesSearchTerm = user.id && user.id.toLowerCase().includes(searchTermLowerCase);\n      const userEmailIncludesSearchTerm = user.email && user.email.toLowerCase().includes(searchTermLowerCase);\n\n      if (userValueIncludesSearchTerm || userIdIncludesSearchTerm || userEmailIncludesSearchTerm) {\n        matches.push(user);\n      }\n    });\n\n    return (matches);\n  }\n}\n\n/**\n * Triggered when a mention or mentions have been changed (added, deleted, modified).\n * Attach like instance.mentions.on('mentionChanged', callback)\n * @name UI.MentionsManager#mentionChanged\n * @event\n * @param {UI.MentionsManager.Mention} mentions The mentions that were changed\n * @param {'add'|'modify'|'delete'} action The action that occurred (add, delete, modify)\n */\n\nexport default new MentionsManager();\nexport {\n  MentionsManager\n};\n","import React from 'react';\nimport ReactQuill from 'react-quill';\nimport 'quill-mention';\nimport mentionsManager from 'helpers/MentionsManager';\n\nimport './CommentTextarea.scss';\n\nlet globalUserData = [];\n// mentionsModule has to be outside the funtion to be able to access it without it being destroyed and recreated\nconst mentionModule = {\n  mention : {\n    allowedChars: /^[A-Za-z\\sÅÄÖåäö0-9\\-_]*$/,\n    mentionDenotationChars: [\"@\", \"#\"],\n    mentionContainerClass: 'mention__element',\n    mentionListClass: 'mention__suggestions__list',\n    listItemClass: 'mention__suggestions__item',\n    renderItem: function(item, searchTerm) {\n      // quill-mentions does not support jsx being returned\n      if (item.email) {\n        return (`<div> ${item.value} <p class=\"email\"> ${item.email} </p> </div>`)\n      }\n      return (`<div> ${item.value} </div>`)\n    },\n    source: async function(searchTerm, renderList, mentionChar) {\n      const mentionsSearchFunction = mentionsManager.getMentionLookupCallback();\n      const foundUsers = await mentionsSearchFunction(globalUserData, searchTerm);\n      renderList(foundUsers, searchTerm);\n    }\n  }\n}\n\nconst CommentTextarea = React.forwardRef(\n  (\n    {\n      value='',\n      onChange,\n      onKeyDown,\n      onBlur,\n      onFocus,\n      placeholder,\n      userData\n    },\n    ref\n  ) => {\n    globalUserData = userData;\n\n    // onBlur and onFocus have to be outside in the div because of quill bug\n    return (\n      <div className={'comment-textarea'} onBlur={onBlur} onFocus={onFocus}>\n      <ReactQuill\n        className={\"comment-textarea ql-container ql-editor\"}\n        style={{overflowY: 'visible'}}\n        ref={ref}\n        modules={userData && userData.length > 0 ? mentionModule : {}}\n        theme=\"snow\"\n        value={value}\n        placeholder={placeholder}\n        onChange={onChange}\n        onKeyDown={onKeyDown}\n      />\n      </div>\n    );\n})\n\nexport default CommentTextarea;","import React, { useLayoutEffect, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport NoteContext from 'components/Note/Context';\nimport selectors from 'selectors';\nimport CommentTextarea from './CommentTextarea/CommentTextarea';\n\nconst propTypes = {\n  // same the value attribute of a HTML textarea element\n  value: PropTypes.string,\n  // same the placeholder attribute of a HTML textarea element\n  placeholder: PropTypes.string,\n  // same the onChange attribute of a HTML textarea element\n  onChange: PropTypes.func.isRequired,\n  // same the onBlur attribute of a HTML textarea element\n  onBlur: PropTypes.func,\n  // same the onBlur attribute of a HTML textarea element\n  onFocus: PropTypes.func,\n  // a function that will be invoked when Ctrl + Enter or Cmd + Enter or only Enter are pressed\n  onSubmit: PropTypes.func,\n};\n\nconst NoteTextarea = React.forwardRef((props, forwardedRef) => {\n  const [userData, canSubmitByEnter] = useSelector(\n    state => [\n      selectors.getUserData(state),\n      selectors.isNoteSubmissionWithEnterEnabled(state),\n    ],\n    shallowEqual,\n  );\n\n  const { resize } = useContext(NoteContext);\n  const textareaRef = useRef();\n  const prevHeightRef = useRef();\n\n  useLayoutEffect(() => {\n    // when the height of the textarea changes, we also want to call resize\n    // to clear the cell measurer cache and update the note height in the virtualized list\n    const boxDOMElement = textareaRef.current?.editor?.container.firstElementChild;\n    const boundingBox = boxDOMElement?.getBoundingClientRect() || {};\n    if (prevHeightRef.current && prevHeightRef.current !== boundingBox.height) {\n      resize();\n    }\n\n    prevHeightRef.current = boundingBox.height;\n    // we need value to be in the dependency array because the height will only change when value changes\n    // eslint-disable-next-line\n  }, [props.value, resize]);\n\n  const handleKeyDown = e => {\n    const enterKey = 13;\n    const isSubmittingByEnter = canSubmitByEnter && e.which === enterKey;\n    const isSubmittingByCtrlEnter = (e.metaKey || e.ctrlKey) && e.which === enterKey;\n\n    if (isSubmittingByEnter || isSubmittingByCtrlEnter) {\n      props.onSubmit(e);\n    }\n  };\n\n  const handleChange = (content, delta, source, editor) => {\n    /* For the React Quill editor, the text won't ever be empty, at least a '\\n'\n     * will be there, so it is necessary to trim the value to check if it is empty\n     */\n    const isEmpty = editor && editor.getText().trim() === '' && content === '<p><br></p>';\n    let value = '';\n\n    if(!isEmpty) {\n      value = content.target ? content.target.value : content;\n      props.onChange(value);\n    } else {\n      props.onChange('');\n    }\n\n  };\n\n  const textareaProps = {\n    ...props,\n    ref: el => {\n      textareaRef.current = el;\n      forwardedRef(el);\n    },\n    onChange: handleChange,\n    onKeyDown: handleKeyDown,\n    userData: userData,\n  };\n\n  return (\n    <>\n      <CommentTextarea {...textareaProps}/>\n    </>\n  );\n});\n\nNoteTextarea.propTypes = propTypes;\n\nexport default NoteTextarea;\n","import NoteTextarea from './NoteTextarea';\n\nexport default NoteTextarea;","const setAnnotationRichTextStyle = (editor, annotation) => {\n  const richTextStyle = {};\n  const ops = editor.getContents().ops;\n  let breakpoint = 0;\n  ops.forEach(item => {\n    const attributes = item.attributes;\n    const insert = item.insert;\n    const cssStyle = {};\n    if (attributes === null || attributes === undefined ? undefined : attributes.bold) {\n      cssStyle['font-weight'] = 'bold';\n    }\n    if (attributes === null || attributes === undefined ? undefined : attributes.italic) {\n      cssStyle['font-style'] = 'italic';\n    }\n    if (attributes === null || attributes === undefined ? undefined : attributes.color) {\n      cssStyle['color'] = attributes.color;\n    }\n    if (attributes === null || attributes === undefined ? undefined : attributes.underline) {\n      cssStyle['text-decoration'] = 'word';\n    }\n    if (attributes === null || attributes === undefined ? undefined : attributes.strike) {\n      if (cssStyle['text-decoration']) {\n        cssStyle['text-decoration'] = `${cssStyle['text-decoration']} line-through`;\n      } else {\n        cssStyle['text-decoration'] = 'line-through';\n      }\n    }\n    richTextStyle[breakpoint] = cssStyle;\n    breakpoint += insert.length;\n  });\n  annotation.setRichTextStyle(richTextStyle);\n};\n\nexport default setAnnotationRichTextStyle;\n","/*\n * Transforming RichText Style object into the Object acceptable by React Quill component.\n */\n\nconst setReactQuillContent = annotation => {\n  const richTextStyle = annotation.getRichTextStyle();\n  const indexes = Object.keys(richTextStyle);\n  const editor = annotation.editor;\n  const text = editor.getText();\n  const ops = [];\n\n  for (let i = 0; i < indexes.length; i++) {\n    const element = richTextStyle[indexes[i]];\n    const attr = getAttributtes(element);\n\n    if (isNaN(indexes[i])) {\n      continue;\n    }\n\n    const lastIndex = isNaN(indexes[i + 1]) ? text.length : indexes[i + 1];\n    const textSlice = text.slice(indexes[i], lastIndex);\n\n    ops.push({ insert: textSlice, attributes: attr });\n  }\n\n  editor.setContents(ops);\n  editor.setSelection(text.length, 0);\n};\n\nconst getAttributtes = element => {\n  const attr = {};\n  if (element['font-weight']) {\n    attr['bold'] = true;\n  }\n  if (element['font-style']) {\n    attr['italic'] = true;\n  }\n  if (element['color']) {\n    attr['color'] = element['color'];\n  }\n  if (element['text-decoration']) {\n    const decoration = element['text-decoration'].split(' ');\n\n    if (decoration.includes('line-through')) {\n      attr['strike'] = true;\n    }\n    if (decoration.includes('word')) {\n      attr['underline'] = true;\n    }\n  }\n\n  return attr;\n};\n\nexport default setReactQuillContent;\n","/**\n * Contains string enumeration for all themes for WebViewer. They are used to set the viewer theme.\n * @typedef UI.Theme\n * @property {string} DARK The theme where the WebViewer will be dark.\n * @property {string} LIGHT The theme where the WebViewer will be light.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const theme = instance.UI.Theme;\n    instance.UI.setTheme(theme.DARK);\n  });\n */\n\nexport default {\n  DARK: 'dark',\n  LIGHT: 'light',\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\n\nimport Icon from 'components/Icon';\nimport './NotePopup.scss';\n\nconst propTypes = {\n  handleEdit: PropTypes.func,\n  handleDelete: PropTypes.func,\n  closePopup: PropTypes.func,\n  openPopup: PropTypes.func,\n  isEditable: PropTypes.bool,\n  isDeletable: PropTypes.bool,\n  isOpen: PropTypes.bool,\n};\n\nfunction noop() { }\n\nfunction NotePopup(props) {\n  const {\n    handleEdit = noop,\n    handleDelete = noop,\n    closePopup = noop,\n    openPopup = noop,\n    isEditable,\n    isDeletable,\n    isOpen,\n    isReply,\n  } = props;\n\n  const [t] = useTranslation();\n  const popupRef = React.useRef();\n\n  useOnClickOutside(popupRef, () => {\n    closePopup();\n  });\n\n  const togglePopup = e => {\n    e.stopPropagation();\n    if (isOpen) {\n      closePopup();\n    } else {\n      openPopup();\n    }\n  };\n\n  function onEditButtonClick(e) {\n    e.stopPropagation();\n    closePopup();\n    handleEdit();\n  }\n\n  function onDeleteButtonClick() {\n    closePopup();\n    handleDelete();\n  }\n\n  if (!isEditable && !isDeletable) {\n    return null;\n  }\n\n  const notePopupButtonClass = classNames('overflow note-popup-toggle-trigger', { active: isOpen })\n  const optionsClass = classNames('options note-popup-options', { 'options-reply': isReply })\n  return (\n    <DataElementWrapper\n      className=\"NotePopup\"\n      dataElement=\"notePopup\"\n      ref={popupRef}\n    >\n      <div className={notePopupButtonClass} onClick={togglePopup}>\n        <Icon glyph=\"icon-tools-more\" />\n      </div>\n      {isOpen && (\n        <div className={optionsClass}>\n          {isEditable && (\n            <DataElementWrapper\n              type=\"button\"\n              className=\"option note-popup-option\"\n              dataElement=\"notePopupEdit\"\n              onClick={onEditButtonClick}\n            >\n              {t('action.edit')}\n            </DataElementWrapper>\n          )}\n          {isDeletable && (\n            <DataElementWrapper\n              type=\"button\"\n              className=\"option note-popup-option\"\n              dataElement=\"notePopupDelete\"\n              onClick={onDeleteButtonClick}\n            >\n              {t('action.delete')}\n            </DataElementWrapper>\n          )}\n        </div>\n      )}\n    </DataElementWrapper>\n  );\n}\n\nNotePopup.propTypes = propTypes;\n\nexport default NotePopup;\n","import React from 'react';\nimport core from 'core';\nimport NotePopup from './NotePopup';\nimport Tooltip from 'components/Tooltip';\nimport { useTranslation } from 'react-i18next';\n\n\n\nfunction NotePopupContainer(props) {\n  const { annotation, setIsEditing, noteIndex } = props; // eslint-disable-line react/prop-types\n\n  const [canModify, setCanModify] = React.useState(core.canModify(annotation));\n  const [canModifyContents, setCanModifyContents] = React.useState(core.canModifyContents(annotation));\n  const [isOpen, setIsOpen] = React.useState(false);\n  const [t] = useTranslation();\n\n  React.useEffect(() => {\n    function onUpdateAnnotationPermission() {\n      setCanModify(core.canModify(annotation));\n      setCanModifyContents(core.canModifyContents(annotation));\n    }\n    core.addEventListener('updateAnnotationPermission', onUpdateAnnotationPermission);\n    return () =>\n      core.removeEventListener('updateAnnotationPermission', onUpdateAnnotationPermission);\n  }, [annotation]);\n\n  const handleEdit = React.useCallback(function handleEdit() {\n    const isFreeText = annotation instanceof window.Annotations.FreeTextAnnotation;\n    if (isFreeText && core.getAnnotationManager().isFreeTextEditingEnabled()) {\n      core.getAnnotationManager().trigger('annotationDoubleClicked', annotation);\n    } else {\n      setIsEditing(true, noteIndex);\n    }\n  }, [annotation, setIsEditing, noteIndex]);\n\n  const handleDelete = React.useCallback(function handleDelete() {\n    core.deleteAnnotations([annotation, ...annotation.getGroupedChildren()]);\n  }, [annotation]);\n\n  const openPopup = () => setIsOpen(true);\n  const closePopup = () => setIsOpen(false);\n\n  const isEditable = canModifyContents;\n  const isDeletable = canModify && !annotation?.NoDelete;\n\n  const passProps = {\n    handleEdit,\n    handleDelete,\n    isEditable,\n    isDeletable,\n    isOpen,\n    closePopup,\n    openPopup,\n  };\n\n  // We wrap the element in a div so the tooltip works properly\n  return (\n    <Tooltip content={t('formField.formFieldPopup.options')}>\n      <div>\n        <NotePopup {...props} {...passProps} />\n      </div>\n    </Tooltip>\n  );\n}\n\nexport default NotePopupContainer;\n\n","import NotePopupContainer from './NotePopupContainer';\n\nexport default NotePopupContainer;\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport Tooltip from '../Tooltip';\n\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport Icon from 'components/Icon';\n\nimport './NoteState.scss';\n\nconst propTypes = {\n  annotation: PropTypes.object,\n  isSelected: PropTypes.bool,\n  openOnInitialLoad: PropTypes.bool,\n  handleStateChange: PropTypes.func\n};\n\nfunction NoteState(props) {\n  const {\n    annotation,\n    isSelected = false,\n    openOnInitialLoad = false,\n    handleStateChange,\n  } = props;\n\n  const [t] = useTranslation();\n  const [isOpen, setIsOpen] = useState(openOnInitialLoad);\n  const popupRef = useRef();\n\n  useOnClickOutside(popupRef, () => {\n    setIsOpen(false);\n  });\n\n  const togglePopup = e => {\n    e.stopPropagation();\n    setIsOpen(!isOpen);\n  };\n\n  function onStateOptionsButtonClick() {\n    setIsOpen(false);\n  }\n\n  function createOnStateOptionButtonClickHandler(state) {\n    return function onStateOptionButtonClick() {\n      if (handleStateChange) {\n        handleStateChange(state);\n      }\n    };\n  }\n\n  if (!annotation) {\n    return null;\n  }\n\n  const annotationState = annotation.getStatus();\n  const icon = `icon-annotation-status-${annotationState === '' ? 'none' : annotationState.toLowerCase()}`;\n  const isReply = annotation.isReply();\n\n  if ((annotationState === '' || annotationState === 'None') && !isSelected) {\n    return null;\n  }\n\n  if (isReply) {\n    return null;\n  }\n\n  const noteStateButtonClassName = classNames('overflow', { active: isOpen });\n\n  return (\n    <DataElementWrapper\n      className=\"NoteState\"\n      dataElement=\"noteState\"\n      onClick={togglePopup}\n      ref={popupRef}\n    >\n      <Tooltip content={t('option.notesOrder.status')}>\n        <div className={noteStateButtonClassName}>\n          <Icon glyph={icon} />\n        </div>\n      </Tooltip>\n      {isOpen && (\n        <button className=\"note-state-options\" onClick={onStateOptionsButtonClick}>\n          <DataElementWrapper dataElement=\"notePopupState\">\n            <DataElementWrapper\n              dataElement=\"notePopupStateAccepted\"\n              className=\"note-state-option\"\n              onClick={createOnStateOptionButtonClickHandler('Accepted')}\n            >\n              <Icon glyph=\"icon-annotation-status-accepted\" />\n              {t('option.state.accepted')}\n            </DataElementWrapper>\n            <DataElementWrapper\n              dataElement=\"notePopupStateRejected\"\n              className=\"note-state-option\"\n              onClick={createOnStateOptionButtonClickHandler('Rejected')}\n            >\n              <Icon glyph=\"icon-annotation-status-rejected\" />\n              {t('option.state.rejected')}\n            </DataElementWrapper>\n            <DataElementWrapper\n              dataElement=\"notePopupStateCancelled\"\n              className=\"note-state-option\"\n              onClick={createOnStateOptionButtonClickHandler('Cancelled')}\n            >\n              <Icon glyph=\"icon-annotation-status-cancelled\" />\n              {t('option.state.cancelled')}\n            </DataElementWrapper>\n            <DataElementWrapper\n              dataElement=\"notePopupStateCompleted\"\n              className=\"note-state-option\"\n              onClick={createOnStateOptionButtonClickHandler('Completed')}\n            >\n              <Icon glyph=\"icon-annotation-status-completed\" />\n              {t('option.state.completed')}\n            </DataElementWrapper>\n            <DataElementWrapper\n              dataElement=\"notePopupStateNone\"\n              className=\"note-state-option\"\n              onClick={createOnStateOptionButtonClickHandler('None')}\n            >\n              <Icon glyph=\"icon-annotation-status-none\" />\n              {t('option.state.none')}\n            </DataElementWrapper>\n            <DataElementWrapper\n              dataElement=\"notePopupStateMarked\"\n              className=\"note-state-option\"\n              onClick={createOnStateOptionButtonClickHandler('Marked')}\n            >\n              <Icon glyph=\"icon-annotation-status-marked\" />\n              {t('option.state.marked')}\n            </DataElementWrapper>\n            <DataElementWrapper\n              dataElement=\"notePopupStateUnmarked\"\n              className=\"note-state-option\"\n              onClick={createOnStateOptionButtonClickHandler('Unmarked')}\n            >\n              <Icon glyph=\"icon-annotation-status-unmarked\" />\n              {t('option.state.unmarked')}\n            </DataElementWrapper>\n          </DataElementWrapper>\n        </button>\n      )}\n    </DataElementWrapper>\n  );\n}\n\nNoteState.propTypes = propTypes;\n\nexport default NoteState;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport core from 'core';\n\nimport NoteState from './NoteState';\n\nfunction createStateAnnotation(t, annotation, state) {\n  // TODO: the code below is copied from annotManager.updateAnnotationState in WebViewer to work around the issue\n  // in https://github.com/PDFTron/webviewer-ui/issues/620\n  // the implement before wasn't causing any actual issues, but it was confusing and unnecessary to trigger two annotationChanged events when a status is set\n  // A proper fix should be done once https://trello.com/c/zWlkygNb/1023-consider-adding-a-setlocalizationhandler-to-corecontrols is implemented\n  // at that time, we could use the translation handler(t) internally in updateAnnotationState before setting the contents, and use that function instead in this component\n\n  const stateAnnotation = new Annotations.StickyAnnotation();\n\n  stateAnnotation['InReplyTo'] = annotation['Id'];\n  stateAnnotation['X'] = annotation['X'];\n  stateAnnotation['Y'] = annotation['Y'];\n  stateAnnotation['PageNumber'] = annotation['PageNumber'];\n  stateAnnotation['Subject'] = 'Sticky Note';\n  stateAnnotation['Author'] = core.getCurrentUser();\n  stateAnnotation['State'] = state;\n  stateAnnotation['StateModel'] = state === 'Marked' || state === 'Unmarked' ? 'Marked' : 'Review';\n  stateAnnotation['Hidden'] = true;\n\n  const displayAuthor = core.getDisplayAuthor(stateAnnotation['Author']);\n  const stateMessage = t(`option.state.${state.toLowerCase()}`);\n  const contents = `${stateMessage} ${t('option.state.setBy')} ${displayAuthor}`;\n  stateAnnotation.setContents(contents);\n\n  return stateAnnotation;\n}\n\nconst propTypes = {\n  annotation: PropTypes.object,\n};\n\nfunction NoteStateContainer(props) {\n  const [t] = useTranslation();\n  const { annotation } = props;\n\n  const handleStateChange = React.useCallback(function handleStateChangeCallback(newValue) {\n    const stateAnnotation = createStateAnnotation(t, annotation, newValue);\n    annotation.addReply(stateAnnotation);\n    const annotationManager = core.getAnnotationManager();\n    annotationManager.addAnnotation(stateAnnotation);\n    annotationManager.trigger('addReply', [stateAnnotation, annotation, annotationManager.getRootAnnotation(annotation)]);\n  }, [annotation]);\n\n  return (\n    <div>\n      <NoteState handleStateChange={handleStateChange} {...props} />\n    </div>\n  );\n}\n\nNoteStateContainer.propTypes = propTypes;\nexport default NoteStateContainer;\n","import NoteStateContainer from './NoteStateContainer';\n\nexport default NoteStateContainer;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Tooltip from 'components/Tooltip';\nimport Icon from 'components/Icon';\n\nconst NoteUnpostedCommentIndicatorContainer = (props) => {\n  const { t } = useTranslation();\n  const { annotationId, pendingEditTextMap, pendingReplyMap } = props;\n  const [hasUnpostedComment, setHasUnpostedComment] = useState(false);\n  const [hasUnpostedReply, setHasUnpostedReply] = useState(false);\n\n  useEffect(() => {\n    setHasUnpostedComment(pendingEditTextMap[annotationId]?.length > 0)\n    setHasUnpostedReply(pendingReplyMap[annotationId]?.length > 0)\n  }, [pendingEditTextMap, pendingReplyMap])\n\n  return (\n    hasUnpostedComment || hasUnpostedReply ?\n      <div data-element=\"unpostedCommentIndicator\">\n        <Tooltip content={t('message.unpostedComment')}>\n          <div>\n            <Icon className=\"type-icon\" glyph={'icon-unposted-comment'} />\n          </div>\n        </Tooltip>\n      </div> :\n      null\n  );\n};\n\nexport default NoteUnpostedCommentIndicatorContainer;","import NoteUnpostedCommentIndicator from './NoteUnpostedCommentIndicatorContainer';\n\nexport default NoteUnpostedCommentIndicator;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport NoteContext from 'components/Note/Context';\nimport NoteUnpostedCommentIndicator from './NoteUnpostedCommentIndicator'\n\nconst NoteUnpostedCommentIndicatorContainer = ({ annotationId }) => {\n  const isDisabled = useSelector(state => selectors.isElementDisabled(state, 'unpostedCommentIndicator'));\n  const { pendingEditTextMap, pendingReplyMap } = React.useContext(NoteContext);\n\n  if (isDisabled) {\n    return null;\n  } else {\n    return (\n      <NoteUnpostedCommentIndicator\n        annotationId={annotationId}\n        pendingEditTextMap={pendingEditTextMap}\n        pendingReplyMap={pendingReplyMap}\n      />);\n  }\n};\n\nexport default NoteUnpostedCommentIndicatorContainer;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NotePopup from 'components/NotePopup';\nimport NoteState from 'components/NoteState';\nimport Icon from 'components/Icon';\nimport NoteUnpostedCommentIndicator from 'components/NoteUnpostedCommentIndicator';\nimport getLatestActivityDate from \"helpers/getLatestActivityDate\";\nimport getColor from 'helpers/getColor';\nimport { isDarkColorHex } from 'helpers/color';\nimport dayjs from 'dayjs';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { NotesPanelSortStrategy } from 'constants/sortStrategies';\nimport Theme from 'constants/theme';\n\nimport './NoteHeader.scss';\n\n\n\nconst propTypes = {\n  icon: PropTypes.string,\n  iconColor: PropTypes.string,\n  color: PropTypes.string,\n  fillColor: PropTypes.string,\n  annotation: PropTypes.object,\n  language: PropTypes.string,\n  noteDateFormat: PropTypes.string,\n  isSelected: PropTypes.bool,\n  setIsEditing: PropTypes.func,\n  notesShowLastUpdatedDate: PropTypes.bool,\n  isUnread: PropTypes.bool,\n  renderAuthorName: PropTypes.func,\n  isNoteStateDisabled: PropTypes.bool,\n  isEditing: PropTypes.bool,\n  noteIndex: PropTypes.number,\n  sortStrategy: PropTypes.string,\n  activeTheme: PropTypes.string,\n};\n\n\nfunction NoteHeader(props) {\n  const {\n    icon,\n    iconColor,\n    annotation,\n    language,\n    noteDateFormat,\n    isSelected,\n    setIsEditing,\n    notesShowLastUpdatedDate,\n    isReply,\n    isUnread,\n    renderAuthorName,\n    isNoteStateDisabled,\n    isEditing,\n    noteIndex,\n    sortStrategy,\n    activeTheme,\n  } = props;\n\n  const [t] = useTranslation();\n  const date = (sortStrategy === NotesPanelSortStrategy.MODIFIED_DATE || (notesShowLastUpdatedDate && sortStrategy !== NotesPanelSortStrategy.CREATED_DATE)) ? getLatestActivityDate(annotation) : annotation.DateCreated;\n  const numberOfReplies = annotation.getReplies().length;\n  let color = annotation[iconColor]?.toHexString?.();\n\n  if (activeTheme === Theme.DARK && color && isDarkColorHex(color)) {\n    color = '#FFFFFF';\n  }\n\n  const fillColor = getColor(annotation.FillColor);\n\n  const authorAndDateClass = classNames('author-and-date', { isReply });\n  const noteHeaderClass = classNames('NoteHeader', { parent: !isReply })\n\n  return (\n    <div className={noteHeaderClass}>\n      {!isReply &&\n        <div className=\"type-icon-container\">\n          {isUnread &&\n            <div className=\"unread-notification\"></div>\n          }\n          <Icon className=\"type-icon\" glyph={icon} color={color} fillColor={fillColor} />\n        </div>\n      }\n      <div className={authorAndDateClass}>\n        <div className=\"author-and-overflow\">\n          <div className=\"author-and-time\">\n            <div className='author'>\n              {renderAuthorName(annotation)}\n            </div>\n            <div className=\"date-and-num-replies\">\n              <div className=\"date-and-time\">\n                {date ? dayjs(date).locale(language).format(noteDateFormat) : t('option.notesPanel.noteContent.noDate')}\n              </div>\n              {numberOfReplies > 0 && !isSelected &&\n                <div className=\"num-replies-container\">\n                  <Icon className=\"num-reply-icon\" glyph={\"icon-chat-bubble\"} />\n                  <div className=\"num-replies\">{numberOfReplies}</div>\n                </div>}\n            </div>\n          </div>\n          <div className=\"state-and-overflow\">\n            <NoteUnpostedCommentIndicator annotationId={annotation.Id} />\n            {!isNoteStateDisabled && !isReply &&\n              <NoteState\n                annotation={annotation}\n                isSelected={isSelected}\n              />\n            }\n            {!isEditing && isSelected &&\n              <NotePopup\n                noteIndex={noteIndex}\n                annotation={annotation}\n                setIsEditing={setIsEditing}\n                isReply={isReply}\n              />}\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n};\n\nNoteHeader.propTypes = propTypes;\n\nexport default NoteHeader;","import NoteHeader from './NoteHeader';\n\nexport default NoteHeader;","import React, { useState, useEffect, useLayoutEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\n\nimport './NoteTextPreview.scss'\n\nfunction NoteTextPreview(props) {\n  /* This replace is to remove the break line that the React Quill component add into the text */\n  const text = props.children.replace(/\\n$/, '');\n  const {\n    panelWidth,\n    linesToBreak,\n    renderRichText,\n    richTextStyle,\n    resize,\n    style,\n    /* If text being previewed is a comment it gets a darker font color */\n    comment = false\n  } = props;\n  const [expanded, setExpand] = useState(false);\n  const [previewElementWidth, setPreviewWidth] = useState(null);\n  const [charsPerLine, setCharsperLine] = useState(null);\n  const [showPrompt, setShowPrompt] = useState(false);\n  const ref = React.useRef(null);// Must import this way in order to mock it properly\n  const { t } = useTranslation();\n\n  const onClickHandler = (event) => {\n    event.stopPropagation();\n    setExpand(!expanded)\n    resize && resize();\n  };\n\n  const textToDisplay = expanded ? text : text.substring(0, charsPerLine * linesToBreak);\n  const prompt = expanded ? t('action.showLess') : t('action.showMore');\n  const noteTextPreviewClass = classNames('note-text-preview', { 'preview-comment': comment })\n\n  useEffect(() => {\n    const textNodeWidth = ref.current.clientWidth;\n    setPreviewWidth(textNodeWidth)\n  }, [panelWidth]);\n\n  //useLayoutEffect to avoid a flicker before we get the final text prop\n  useLayoutEffect(() => {\n    function getTextWidth(text) {\n      const canvas = document.createElement('canvas');\n      const context = canvas.getContext('2d');\n      context.font = '13px sans-serif';\n\n      return context.measureText(text).width;\n    }\n\n    const textWidth = getTextWidth(text);\n    const averageCharWidth = textWidth / text.length;\n    const charsPerLine = Math.floor(previewElementWidth / averageCharWidth);\n    setCharsperLine(charsPerLine);\n\n    const totalLines = textWidth / previewElementWidth;\n    setShowPrompt(totalLines > linesToBreak);\n\n  }, [text, previewElementWidth])\n\n  return (\n    <div className={noteTextPreviewClass} ref={ref} style={style}>\n      {renderRichText && richTextStyle ? renderRichText(textToDisplay, richTextStyle, 0) : textToDisplay} {showPrompt && <a className=\"note-text-preview-prompt\" onClick={onClickHandler}>{prompt}</a>}\n    </div>\n  )\n};\n\nexport default NoteTextPreview;","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport NoteTextPreview from './NoteTextPreview';\n\n\nfunction NoteTextPreviewContainer(props) {\n  const [notePanelWidth] = useSelector(\n    state => [\n      selectors.getNotesPanelWidth(state),\n    ],\n    shallowEqual,\n  );\n\n  return (\n    <NoteTextPreview {...props} panelWidth={notePanelWidth} />\n  )\n};\n\nexport default NoteTextPreviewContainer;","import NoteTextPreview from './NoteTextPreviewContainer';\n\nexport default NoteTextPreview;","import React, { useCallback, useContext, useEffect, useMemo, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport Autolinker from 'autolinker';\nimport dayjs from 'dayjs';\nimport classNames from 'classnames';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\n\nimport NoteTextarea from 'components/NoteTextarea';\nimport NoteContext from 'components/Note/Context';\n\nimport core from 'core';\nimport mentionsManager from 'helpers/MentionsManager';\nimport getLatestActivityDate from 'helpers/getLatestActivityDate';\nimport setAnnotationRichTextStyle from 'helpers/setAnnotationRichTextStyle';\nimport setReactQuillContent from 'helpers/setReactQuillContent';\nimport { getDataWithKey, mapAnnotationToKey } from 'constants/map';\nimport Theme from 'constants/theme';\nimport { isDarkColorHex } from 'helpers/color';\nimport useDidUpdate from 'hooks/useDidUpdate';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './NoteContent.scss';\nimport NoteHeader from 'components/NoteHeader';\nimport NoteTextPreview from 'src/components/NoteTextPreview';\nimport isString from 'lodash/isString';\n\ndayjs.extend(LocalizedFormat);\n\nconst propTypes = {\n  annotation: PropTypes.object.isRequired,\n};\n\nconst NoteContent = ({ annotation, isEditing, setIsEditing, noteIndex, onTextChange, isUnread, isNonReplyNoteRead, onReplyClicked }) => {\n  const [\n    noteDateFormat,\n    iconColor,\n    isNoteStateDisabled,\n    language,\n    notesShowLastUpdatedDate,\n    canCollapseTextPreview,\n    canCollapseReplyPreview,\n    activeTheme,\n  ] = useSelector(\n    state => [\n      selectors.getNoteDateFormat(state),\n      selectors.getIconColor(state, mapAnnotationToKey(annotation)),\n      selectors.isElementDisabled(state, 'notePopupState'),\n      selectors.getCurrentLanguage(state),\n      selectors.notesShowLastUpdatedDate(state),\n      selectors.isNotesPanelTextCollapsingEnabled(state),\n      selectors.isNotesPanelRepliesCollapsingEnabled(state),\n      selectors.getActiveTheme(state),\n    ],\n    shallowEqual,\n  );\n\n  const { isSelected, searchInput, resize, pendingEditTextMap, onTopNoteContentClicked, sortStrategy } = useContext(\n    NoteContext,\n  );\n\n  const dispatch = useDispatch();\n  const isReply = annotation.isReply();\n\n  const [t] = useTranslation();\n\n  useDidUpdate(() => {\n    if (!isEditing) {\n      dispatch(actions.finishNoteEditing());\n    }\n\n    resize();\n  }, [isEditing]);\n\n  const renderAuthorName = useCallback(\n    annotation => {\n      const name = core.getDisplayAuthor(annotation['Author']);\n\n      return name ? (\n        highlightSearchInput(name, searchInput)\n      ) : (\n        t('option.notesPanel.noteContent.noName')\n      );\n    },\n    [searchInput],\n  );\n\n  const renderContents = useCallback(\n    (contents, richTextStyle, fontColor) => {\n      const autolinkerContent = [];\n      Autolinker.link(contents, {\n        stripPrefix: false,\n        stripTrailingSlash: false,\n        replaceFn(match) {\n          const href = match.getAnchorHref();\n          const anchorText = match.getAnchorText();\n          const offset = match.getOffset();\n\n          switch (match.getType()) {\n            case 'url':\n            case 'email':\n            case 'phone':\n              autolinkerContent.push({\n                href,\n                text: anchorText,\n                start: offset,\n                end: offset + match.getMatchedText().length\n              });\n              return;\n          }\n        }\n      });\n      if (!autolinkerContent.length) {\n        const highlightResult = highlightSearchInput(contents, searchInput, richTextStyle);\n        const shouldCollapseAnnotationText = !isReply && canCollapseTextPreview;\n        const shouldCollapseReply = isReply && canCollapseReplyPreview;\n\n        /*\n         * Case there is no value on Search input, and the collapse of the text is allowed,\n         * just render the value with Text preview component\n         */\n        if (!searchInput && (shouldCollapseAnnotationText || shouldCollapseReply)) {\n          return (\n            <NoteTextPreview linesToBreak={3} comment renderRichText={renderRichText} richTextStyle={richTextStyle} resize={resize} style={fontColor}>\n              {contents}\n            </NoteTextPreview>\n          )\n        } else {\n          return highlightResult;\n        }\n      }\n      const contentToRender = [];\n      let strIdx = 0;\n      // Iterate through each case detected by Autolinker, wrap all content\n      // before the current link in a span tag, and wrap the current link\n      // in our own anchor tag\n      autolinkerContent.forEach((anchorData, forIdx) => {\n        const { start, end, href } = anchorData;\n        if (strIdx < start) {\n          contentToRender.push(\n            <span key={`span_${forIdx}`}>\n              {\n                highlightSearchInput(\n                  contents,\n                  searchInput,\n                  richTextStyle,\n                  strIdx,\n                  start\n                )\n              }\n            </span>\n          );\n        }\n        contentToRender.push(\n          <a\n            href={href}\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            key={`a_${forIdx}`}\n          >\n            {\n              highlightSearchInput(\n                contents,\n                searchInput,\n                richTextStyle,\n                start,\n                end\n              )\n            }\n          </a>\n        );\n        strIdx = end;\n      });\n      // Ensure any content after the last link is accounted for\n      if (strIdx < contents.length - 1) {\n        contentToRender.push(highlightSearchInput(\n          contents,\n          searchInput,\n          richTextStyle,\n          strIdx\n        ));\n      }\n      return contentToRender;\n    },\n    [searchInput]\n  );\n\n  const icon = getDataWithKey(mapAnnotationToKey(annotation)).icon;\n  let customData;\n  try {\n    customData = JSON.parse(annotation.getCustomData('trn-mention'));\n  } catch (e) {\n    customData = annotation.getCustomData('trn-mention');\n  }\n  const contents = customData?.contents || annotation.getContents();\n  const contentsToRender = annotation.getContents();\n  const richTextStyle = annotation.getRichTextStyle();\n  let textColor = annotation['TextColor'];\n\n  if (activeTheme === Theme.DARK) {\n    if (textColor && isDarkColorHex(textColor.toHexString())) {\n      textColor = new window.Annotations.Color(255, 255, 255, 1);\n    }\n\n    if (richTextStyle) {\n      const sections = Object.keys(richTextStyle);\n      sections.forEach((a) => {\n        if (richTextStyle[a]['color'] && isDarkColorHex(richTextStyle[a]['color'])) {\n          richTextStyle[a]['color'] = '#FFFFFF';\n        }\n      });\n    }\n  }\n  // This is the text placeholder passed to the ContentArea\n  // It ensures that if we try and edit, we get the right placeholder\n  // depending on whether the comment has been saved to the annotation or not\n  const thereIsNoUnpostedEdit = typeof pendingEditTextMap[annotation.Id] === 'undefined';\n  let textAreaValue;\n  if (contents && thereIsNoUnpostedEdit) {\n    textAreaValue = contents;\n  } else {\n    textAreaValue = pendingEditTextMap[annotation.Id];\n  }\n\n  const handleNoteContentClicked = () => {\n    if (isReply) {\n      onReplyClicked(annotation);\n    } else if (!isEditing) {\n      //collapse expanded note when top noteContent is clicked if it's not being edited\n      onTopNoteContentClicked();\n    }\n  };\n\n  const handleContentsClicked = e => {\n    if (window.getSelection()?.toString()) {\n      e?.stopPropagation();\n      return;\n    }\n  };\n\n  const noteContentClass = classNames({\n    NoteContent: true,\n    isReply,\n    unread: isUnread, //The note content itself is unread or it has unread replies\n    clicked: isNonReplyNoteRead, //The top note content is read\n  });\n\n  const content = useMemo(\n    () => {\n      const contentStyle = {};\n      if (textColor) {\n        contentStyle.color = textColor.toHexString();\n      }\n\n      return (\n        <React.Fragment>\n          {isEditing && isSelected ? (\n            <ContentArea\n              annotation={annotation}\n              noteIndex={noteIndex}\n              setIsEditing={setIsEditing}\n              isEditing={isEditing}\n              textAreaValue={textAreaValue}\n              onTextAreaValueChange={onTextChange}\n              pendingText={pendingEditTextMap[annotation.Id]}\n            />\n          ) : (\n            contentsToRender && (\n              <div className={classNames('container', { 'reply-content': isReply })} onClick={handleContentsClicked}>\n                {renderContents(contentsToRender, richTextStyle, contentStyle)}\n              </div>\n            )\n          )}\n        </React.Fragment>\n      );\n    },\n    [annotation, isSelected, isEditing, setIsEditing, contents, renderContents, textAreaValue, onTextChange]\n  );\n\n  const text = annotation.getCustomData('trn-annot-preview');\n  const textPreview = useMemo(\n    () => {\n      if (text === '') {\n        return null;\n      }\n\n      const highlightSearchResult = highlightSearchInput(text, searchInput);\n      const shouldCollapseAnnotationText = !isReply && canCollapseTextPreview;\n      // If we have a search result do not use text\n      // preview but instead show the entire text\n      if (isString(highlightSearchResult) && shouldCollapseAnnotationText) {\n        return (\n          <div className='selected-text-preview'>\n            <NoteTextPreview linesToBreak={3}>\n              {`\"${highlightSearchResult}\"`}\n            </NoteTextPreview>\n          </div>\n        )\n      } else {\n        return (\n          <div className='selected-text-preview' style={{ paddingRight: '12px' }}>\n            {highlightSearchResult}\n          </div>\n        );\n      }\n    }, [text, searchInput]);\n\n  const header = useMemo(\n    () => {\n      return (\n        <NoteHeader\n          icon={icon}\n          iconColor={iconColor}\n          annotation={annotation}\n          language={language}\n          noteDateFormat={noteDateFormat}\n          isSelected={isSelected}\n          setIsEditing={setIsEditing}\n          notesShowLastUpdatedDate={notesShowLastUpdatedDate}\n          isReply={isReply}\n          isUnread={isUnread}\n          renderAuthorName={renderAuthorName}\n          isNoteStateDisabled={isNoteStateDisabled}\n          isEditing={isEditing}\n          noteIndex={noteIndex}\n          sortStrategy={sortStrategy}\n          activeTheme={activeTheme}\n        />\n      )\n    }, [icon, iconColor, annotation, language, noteDateFormat, isSelected, setIsEditing, notesShowLastUpdatedDate, isReply, isUnread, renderAuthorName, core.getDisplayAuthor(annotation['Author']), isNoteStateDisabled, isEditing, noteIndex, getLatestActivityDate(annotation), sortStrategy]\n  );\n\n  return (\n    <div className={noteContentClass} onClick={handleNoteContentClicked}>\n      {header}\n      {textPreview}\n      {content}\n    </div>\n  )\n};\n\nNoteContent.propTypes = propTypes;\n\nexport default NoteContent;\n\n// a component that contains the content textarea, the save button and the cancel button\nconst ContentArea = ({\n  annotation,\n  noteIndex,\n  setIsEditing,\n  isEditing,\n  textAreaValue,\n  onTextAreaValueChange,\n  pendingText\n}) => {\n  const [\n    autoFocusNoteOnAnnotationSelection,\n    isMentionEnabled,\n    isNotesPanelOpen\n  ] = useSelector(state => [\n    selectors.getAutoFocusNoteOnAnnotationSelection(state),\n    selectors.getIsMentionEnabled(state),\n    selectors.isElementOpen(state, 'notesPanel'),\n  ]);\n  const [t] = useTranslation();\n  const textareaRef = useRef();\n  const isReply = annotation.isReply();\n\n  useEffect(() => {\n    // on initial mount, focus the last character of the textarea\n    if (isNotesPanelOpen && textareaRef.current) {\n      const editor = textareaRef.current.getEditor();\n      annotation.editor = editor;\n\n      /**\n       * If there is a pending text we should update the annotation rich text style\n       * with this pending text style.\n       */\n      if (pendingText) {\n        setAnnotationRichTextStyle(editor, annotation);\n      }\n\n      setTimeout(() => {\n        // need setTimeout because textarea seem to rerender and unfocus\n        if (textareaRef && textareaRef.current && autoFocusNoteOnAnnotationSelection) {\n          textareaRef.current.focus();\n          \n          const annotRichTextStyle = annotation.getRichTextStyle();\n          if (annotRichTextStyle && isEditing) {\n\n            setReactQuillContent(annotation);\n          }\n        }\n      }, 0);\n\n      const lastNewLineCharacterLength = 1\n      const textLength = editor.getLength() - lastNewLineCharacterLength;\n      annotation.editor.setSelection(textLength, textLength);\n    }\n  }, [isNotesPanelOpen]);\n\n  const setContents = e => {\n    // prevent the textarea from blurring out which will unmount these two buttons\n    e.preventDefault();\n\n    const editor = textareaRef.current.getEditor();\n    textAreaValue = mentionsManager.getFormattedTextFromDeltas(editor.getContents());\n    setAnnotationRichTextStyle(editor, annotation);\n\n    if (isMentionEnabled) {\n      const { plainTextValue, ids } = mentionsManager.extractMentionDataFromStr(textAreaValue);\n\n      annotation.setCustomData('trn-mention', JSON.stringify({\n        contents: textAreaValue,\n        ids,\n      }));\n      core.setNoteContents(annotation, plainTextValue);\n    } else {\n      core.setNoteContents(annotation, textAreaValue);\n    }\n\n    if (annotation instanceof window.Annotations.FreeTextAnnotation) {\n      core.drawAnnotationsFromList([annotation]);\n    }\n\n    setIsEditing(false, noteIndex);\n    // Only set comment to unposted state if it is not empty\n    if (textAreaValue !== '') {\n      onTextAreaValueChange(undefined, annotation.Id);\n    }\n  };\n\n  const contentClassName = classNames('edit-content', { 'reply-content': isReply })\n\n  return (\n    <div className={contentClassName}>\n      <NoteTextarea\n        ref={el => {\n          textareaRef.current = el;\n        }}\n        value={textAreaValue}\n        onChange={value => onTextAreaValueChange(value, annotation.Id)}\n        onSubmit={setContents}\n        placeholder={`${t('action.comment')}...`}\n        aria-label={`${t('action.comment')}...`}\n      />\n      <div className=\"edit-buttons\">\n        <button\n          className=\"cancel-button\"\n          onClick={e => {\n            e.stopPropagation();\n            setIsEditing(false, noteIndex);\n            // Clear pending text\n            onTextAreaValueChange(undefined, annotation.Id);\n          }}\n        >\n          {t('action.cancel')}\n        </button>\n        <button\n          className={`save-button${!textAreaValue ? ' disabled' : ''}`}\n          disabled={!textAreaValue}\n          onClick={e => {\n            e.stopPropagation();\n            setContents(e);\n          }}\n        >\n          {t('action.save')}\n        </button>\n      </div>\n    </div>\n  );\n};\n\nContentArea.propTypes = {\n  noteIndex: PropTypes.number.isRequired,\n  annotation: PropTypes.object.isRequired,\n  setIsEditing: PropTypes.func.isRequired,\n  textAreaValue: PropTypes.string,\n  onTextAreaValueChange: PropTypes.func.isRequired,\n  pendingText: PropTypes.string\n};\n\nconst getRichTextSpan = (text, richTextStyle, key) => {\n  const style = {\n    fontWeight: richTextStyle['font-weight'],\n    fontStyle: richTextStyle['font-style'],\n    textDecoration: richTextStyle['text-decoration'],\n    color: richTextStyle['color']\n  };\n  if (style.textDecoration) {\n    style.textDecoration = style.textDecoration.replace('word', 'underline');\n  }\n  return (\n    <span style={style} key={key}>{text}</span>\n  );\n};\n\nconst renderRichText = (text, richTextStyle, start) => {\n  if (!richTextStyle || !text) return text;\n\n  const styles = {};\n  const indices = Object.keys(richTextStyle).map(Number).sort((a, b) => a - b);\n  for (let i = 0; i < indices.length; i++) {\n    let index = indices[i] - start;\n    index = Math.min(Math.max(index, 0), text.length);\n    styles[index] = richTextStyle[indices[i]];\n    if (index === text.length) {\n      break;\n    }\n  }\n\n  const contentToRender = [];\n  const styleIndices = Object.keys(styles).map(Number).sort((a, b) => a - b);\n  for (let i = 1; i < styleIndices.length; i++) {\n    contentToRender.push(getRichTextSpan(\n      text.slice(styleIndices[i - 1], styleIndices[i]),\n      styles[styleIndices[i - 1]],\n      `richtext_span_${i}`\n    ));\n  }\n\n  return contentToRender;\n};\n\nconst highlightSearchInput = (fullText, searchInput, richTextStyle, start = 0, end = fullText.length) => {\n  const text = fullText.slice(start, end);\n  const loweredText = text.toLowerCase();\n  const loweredSearchInput = searchInput.toLowerCase();\n  if (richTextStyle) {\n    richTextStyle['0'] = richTextStyle['0'] || {};\n    richTextStyle[fullText.length] = richTextStyle[fullText.length] || {};\n  }\n  let lastFoundInstance = loweredText.indexOf(loweredSearchInput);\n  if (!loweredSearchInput.trim() || lastFoundInstance === -1) {\n    return renderRichText(text, richTextStyle, start);\n  }\n  const contentToRender = [];\n  const allFoundPositions = [lastFoundInstance];\n  // Escape all RegExp special characters\n  const regexSafeSearchInput = loweredSearchInput.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n  if (new RegExp(`(${regexSafeSearchInput})`, 'gi').test(loweredText)) {\n    while (lastFoundInstance !== -1) {\n      lastFoundInstance = loweredText.indexOf(loweredSearchInput, lastFoundInstance + loweredSearchInput.length);\n      if (lastFoundInstance !== -1) {\n        allFoundPositions.push(lastFoundInstance);\n      }\n    }\n  }\n  allFoundPositions.forEach((position, idx) => {\n    // Account for any content at the beginning of the string before the first\n    // instance of the searchInput\n    if (idx === 0 && position !== 0) {\n      contentToRender.push(renderRichText(text.substring(0, position), richTextStyle, start));\n    }\n    contentToRender.push(\n      <span className=\"highlight\" key={`highlight_span_${idx}`}>\n        {\n          renderRichText(\n            text.substring(position, position + loweredSearchInput.length),\n            richTextStyle,\n            start + position)\n        }\n      </span>\n    );\n    if (\n      // Ensure that we do not try to make an out-of-bounds access\n      position + loweredSearchInput.length < loweredText.length\n      // Ensure that this is the end of the allFoundPositions array\n      && position + loweredSearchInput.length !== allFoundPositions[idx + 1]\n    ) {\n      contentToRender.push(renderRichText(\n        text.substring(position + loweredSearchInput.length, allFoundPositions[idx + 1]),\n        richTextStyle,\n        start + position + loweredSearchInput.length\n      ));\n    }\n  });\n  return contentToRender;\n};\n","import NoteContent from './NoteContent';\n\nexport default NoteContent;","import React, { useState, useEffect, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport NoteContext from 'components/Note/Context';\nimport NoteTextarea from 'components/NoteTextarea';\nimport classNames from 'classnames';\nimport core from 'core';\nimport mentionsManager from 'helpers/MentionsManager';\nimport setAnnotationRichTextStyle from 'helpers/setAnnotationRichTextStyle';\nimport useDidUpdate from 'hooks/useDidUpdate';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport Button from 'src/components/Button';\n\nimport './ReplyArea.scss';\n\nconst propTypes = {\n  annotation: PropTypes.object.isRequired,\n};\n\n// a component that contains the reply textarea, the reply button and the cancel button\nconst ReplyArea = ({ annotation, isUnread, onPendingReplyChange }) => {\n  const [\n    autoFocusNoteOnAnnotationSelection,\n    isReadOnly,\n    isReplyDisabled,\n    isReplyDisabledForAnnotation,\n    isMentionEnabled,\n    isNoteEditingTriggeredByAnnotationPopup,\n  ] = useSelector(\n    state => [\n      selectors.getAutoFocusNoteOnAnnotationSelection(state),\n      selectors.isDocumentReadOnly(state),\n      selectors.isElementDisabled(state, 'noteReply'),\n      selectors.getIsReplyDisabled(state)?.(annotation),\n      selectors.getIsMentionEnabled(state),\n      selectors.getIsNoteEditing(state),\n    ],\n    shallowEqual\n  );\n  const { isContentEditable, isSelected, pendingReplyMap, setPendingReply, isExpandedFromSearch, scrollToSelectedAnnot } = useContext(NoteContext);\n  const [isFocused, setIsFocused] = useState(false);\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n  const textareaRef = useRef();\n\n  useDidUpdate(() => {\n    if (!isFocused) {\n      dispatch(actions.finishNoteEditing());\n    }\n  }, [isFocused]);\n\n  useEffect(() => {\n    if (\n      isNoteEditingTriggeredByAnnotationPopup &&\n      isSelected &&\n      !isContentEditable &&\n      autoFocusNoteOnAnnotationSelection &&\n      textareaRef &&\n      textareaRef.current\n    ) {\n      textareaRef.current.focus();\n    }\n  }, [isContentEditable, isNoteEditingTriggeredByAnnotationPopup, isSelected]);\n\n  useEffect(() => {\n    // on initial mount, focus the last character of the textarea\n    // when search item, should disable auto focus\n    if (!isExpandedFromSearch && scrollToSelectedAnnot) {\n      // use \"setTimeout\" to wait for element to be added before focusing to have the blinking text cursor appear\n      setTimeout(() => {\n        // calling focus() cause the \"NotePanel\" to scroll to note that being focused.\n        // we don't want to jump to the selected annotation when scrolling up and down, so only focus once\n        if (textareaRef && textareaRef.current && autoFocusNoteOnAnnotationSelection) {\n          textareaRef.current.focus();\n        }\n      }, 0);\n    }\n    if (textareaRef && textareaRef.current) {\n      const editor = textareaRef.current.getEditor();\n      const lastNewLineCharacterLength = 1\n      const textLength = editor.getLength() - lastNewLineCharacterLength;\n      textareaRef.current.editor.setSelection(textLength, textLength);\n    }\n  }, []);\n\n  const postReply = e => {\n    // prevent the textarea from blurring out\n    e.preventDefault();\n    const editor = textareaRef.current.getEditor();\n    const replyText = mentionsManager.getFormattedTextFromDeltas(editor.getContents())\n\n    if (!replyText.trim()) {\n      return;\n    }\n\n    const annotationHasNoContents = annotation.getContents() === '' || annotation.getContents() === undefined;\n    if (isMentionEnabled) {\n      if (annotationHasNoContents && isContentEditable) {\n        const { plainTextValue, ids } = mentionsManager.extractMentionDataFromStr(replyText);\n\n        annotation.setCustomData('trn-mention', JSON.stringify({\n          contents: replyText,\n          ids,\n        }));\n        core.setNoteContents(annotation, plainTextValue);\n      } else {\n        const replyAnnotation = mentionsManager.createMentionReply(annotation, replyText);\n        setAnnotationRichTextStyle(editor, replyAnnotation);\n      }\n    } else {\n      if (annotationHasNoContents && isContentEditable) {\n        core.setNoteContents(annotation, replyText);\n        setAnnotationRichTextStyle(editor, annotation);\n      } else {\n        const replyAnnotation = core.createAnnotationReply(annotation, replyText);\n        setAnnotationRichTextStyle(editor, replyAnnotation);\n      }\n    }\n\n    setPendingReply('', annotation.Id);\n  };\n\n  const ifReplyNotAllowed =\n    isReadOnly ||\n    isReplyDisabled ||\n    isReplyDisabledForAnnotation;\n\n  const replyAreaClass = classNames({\n    \"reply-area\": true,\n    unread: isUnread,\n  });\n\n  const handleNoteTextareaChange = value => {\n    setPendingReply(value, annotation.Id);\n    onPendingReplyChange();\n  };\n  return ifReplyNotAllowed || !isSelected ? null : (\n    <form onSubmit={postReply} className='reply-area-container'>\n      <div\n        className={replyAreaClass}\n        // stop bubbling up otherwise the note will be closed\n        // due to annotation deselection\n        onMouseDown={e => e.stopPropagation()}\n      >\n        <NoteTextarea\n          ref={el => {\n            textareaRef.current = el;\n          }}\n          value={pendingReplyMap[annotation.Id]}\n          onChange={value => handleNoteTextareaChange(value)}\n          onSubmit={postReply}\n          onBlur={() => setIsFocused(false)}\n          onFocus={() => setIsFocused(true)}\n          placeholder={`${t('action.reply')}...`}\n          aria-label={`${t('action.reply')}...`}\n        />\n      </div>\n      <div className='reply-button-container'>\n        <Button\n          img=\"icon-post-reply\"\n          className={`reply-button${!pendingReplyMap[annotation.Id] ? ' disabled' : ''}`}\n          onMouseUp={e => postReply(e)} \n          isSubmitType={true}\n        />\n      </div>\n    </form>\n  );\n};\n\nReplyArea.propTypes = propTypes;\n\nexport default ReplyArea;\n","import ReplyArea from './ReplyArea';\n\nexport default ReplyArea;","import React, { useEffect, useState, useCallback } from 'react';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { createPortal } from 'react-dom';\nimport { getAnnotationPosition } from '../../helpers/getPopupPosition';\n\nimport './AnnotationNoteConnectorLine.scss';\n\nconst LineConnectorPortal = ({ children }) => {\n  const mount = document.getElementById(\"line-connector-root\");\n  const el = document.createElement(\"div\");\n  el.setAttribute('data-element', 'annotationNoteConnectorLine');\n\n  useEffect(() => {\n    mount.appendChild(el);\n    return () => mount.removeChild(el);\n  }, [el, mount]);\n\n  return createPortal(children, el);\n};\n\nconst AnnotationNoteConnectorLine = ({ annotation, noteContainerRef }) => {\n  const [notePanelWidth, lineIsOpen, notePanelIsOpen, isLineDisabled, documentContainerWidth, documentContainerHeight] = useSelector(\n    state => [\n      selectors.getNotesPanelWidth(state),\n      selectors.isElementOpen(state, 'annotationNoteConnectorLine'),\n      selectors.isElementOpen(state, 'notesPanel'),\n      selectors.isElementDisabled(state, 'annotationNoteConnectorLine'),\n      selectors.getDocumentContainerWidth(state),\n      selectors.getDocumentContainerHeight(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  //Right Horizontal Line\n  const [rightHorizontalLineWidth, setRightHorizontalLineWidth] = useState(0);\n  const [rightHorizontalLineTop, setRightHorizontalLineTop] = useState(0);\n  const [rightHorizontalLineRight, setRightHorizontalLineRight] = useState(0);\n\n  //Left Horizontal Line\n  const [leftHorizontalLineWidth, setLeftHorizontalLineWidth] = useState(0);\n  const [leftHorizontalLineTop, setLeftHorizontalLineTop] = useState(0);\n  const [leftHorizontalLineRight, setLeftHorizontalLineRight] = useState(0);\n\n  const { bottomRight: annotationBottomRight, topLeft: annotationTopLeft } = getAnnotationPosition(annotation);\n\n  const getAnnotationLineOffset = useCallback(() => {\n    if (annotation.Subject === 'Note') {\n      return 4;\n    }\n    return 15;\n  }, [annotation]);\n\n  useEffect(() => {\n    const { scrollTop, scrollLeft } = core.getScrollViewElement();\n    const notePanelLeftPadding = 16;\n\n    const annotWidthInPixels = annotationBottomRight.x - annotationTopLeft.x;\n    const annotHeightInPixels = annotationBottomRight.y - annotationTopLeft.y;\n\n    setRightHorizontalLineRight(notePanelWidth - notePanelLeftPadding);\n    setRightHorizontalLineTop(noteContainerRef.current.getBoundingClientRect().top);\n\n    const lineWidth = window.innerWidth - notePanelWidth - annotationTopLeft.x + notePanelLeftPadding + scrollLeft - annotWidthInPixels;\n    const rightHorizontalLineWidthRatio = 0.75;\n    setRightHorizontalLineWidth(lineWidth * rightHorizontalLineWidthRatio);\n    setLeftHorizontalLineWidth(lineWidth - rightHorizontalLineWidth - getAnnotationLineOffset());\n\n    setLeftHorizontalLineRight(notePanelWidth - notePanelLeftPadding + rightHorizontalLineWidth);\n\n    setLeftHorizontalLineTop(annotationTopLeft.y + (annotHeightInPixels / 2) - scrollTop);\n\n    const onPageNumberUpdated = () => {\n      dispatch(actions.closeElement('annotationNoteConnectorLine'))\n    }\n\n    core.addEventListener('pageNumberUpdated', onPageNumberUpdated);\n\n    return () => {\n      core.removeEventListener('pageNumberUpdated', onPageNumberUpdated);\n    };\n\n  }, [noteContainerRef, notePanelWidth, annotationBottomRight, annotationTopLeft, documentContainerWidth, documentContainerHeight, dispatch]);\n\n  if (lineIsOpen && notePanelIsOpen && !isLineDisabled) {\n    const verticalHeight = Math.abs(rightHorizontalLineTop - leftHorizontalLineTop);\n    const horizontalLineHeight = 2;\n    // Add HorizontalLineHeight of 2px when annot is above note to prevent little gap between lines\n    const verticalTop = rightHorizontalLineTop > leftHorizontalLineTop ? leftHorizontalLineTop + horizontalLineHeight : rightHorizontalLineTop;\n\n    return (\n      <LineConnectorPortal>\n        <div className=\"horizontalLine\" style={{ width: rightHorizontalLineWidth, right: rightHorizontalLineRight, top: rightHorizontalLineTop }} />\n        <div className=\"verticalLine\" style={{ height: verticalHeight, top: verticalTop, right: rightHorizontalLineRight + rightHorizontalLineWidth }} />\n        <div className=\"horizontalLine\" style={{ width: leftHorizontalLineWidth, right: leftHorizontalLineRight, top: leftHorizontalLineTop }}>\n          <div className=\"arrowHead\" />\n        </div>\n      </LineConnectorPortal>);\n  } else {\n    return null;\n  }\n};\n\nexport default AnnotationNoteConnectorLine;","import AnnotationNoteConnectorLine from './AnnotationNoteConnectorLine';\n\nexport default AnnotationNoteConnectorLine;","import React, { useEffect, useRef, useContext, useState, useCallback } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport NoteContext from 'components/Note/Context';\nimport NoteContent from 'components/NoteContent';\nimport ReplyArea from 'components/Note/ReplyArea';\n\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport AnnotationNoteConnectorLine from 'components/AnnotationNoteConnectorLine';\nimport useDidUpdate from 'hooks/useDidUpdate';\nimport Button from 'components/Button';\n\nimport './Note.scss';\n\nconst propTypes = {\n  annotation: PropTypes.object.isRequired,\n};\n\nlet currId = 0;\n\nconst Note = ({\n  annotation,\n}) => {\n  const { isSelected, resize, pendingEditTextMap, setPendingEditText, isContentEditable, isDocumentReadOnly, isNotePanelOpen, isExpandedFromSearch } = useContext(NoteContext);\n  const containerRef = useRef();\n  const containerHeightRef = useRef();\n  const [isEditingMap, setIsEditingMap] = useState({});\n  const ids = useRef([]);\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n  const unreadReplyIdSet = new Set();\n\n  const [\n    noteTransformFunction,\n    customNoteSelectionFunction,\n    unreadAnnotationIdSet,\n    shouldExpandCommentThread,\n  ] = useSelector(\n    state => [\n      selectors.getNoteTransformFunction(state),\n      selectors.getCustomNoteSelectionFunction(state),\n      selectors.getUnreadAnnotationIdSet(state),\n      selectors.isCommentThreadExpansionEnabled(state),\n    ],\n    shallowEqual,\n  );\n\n  const replies = annotation\n    .getReplies()\n    .sort((a, b) => a['DateCreated'] - b['DateCreated']);\n\n  replies.filter(r => unreadAnnotationIdSet.has(r.Id)).forEach(r => unreadReplyIdSet.add(r.Id));\n\n  useEffect(() => {\n    const annotationChangedListener = (annotations, action) => {\n      if (action === 'delete') {\n        annotations.forEach(annot => {\n          if (unreadAnnotationIdSet.has(annot.Id)) {\n            dispatch(actions.setAnnotationReadState({ isRead: true, annotationId: annot.Id }));\n          }\n        });\n      }\n    };\n    core.addEventListener('annotationChanged', annotationChangedListener);\n\n    return () => {\n      core.removeEventListener('annotationChanged', annotationChangedListener);\n    };\n  }, [unreadAnnotationIdSet]);\n\n  useEffect(() => {\n    const prevHeight = containerHeightRef.current;\n    const currHeight = containerRef.current.getBoundingClientRect().height;\n    containerHeightRef.current = currHeight;\n\n    // have a prevHeight check here because we don't want to call resize on mount\n    // use Math.round because in some cases in IE11 these two numbers will differ in just 0.00001\n    // and we don't want call resize in this case\n    if (prevHeight && Math.round(prevHeight) !== Math.round(currHeight)) {\n      resize();\n    }\n  });\n\n  useEffect(() => {\n    if (noteTransformFunction) {\n      ids.current.forEach(id => {\n        const child = document.querySelector(`[data-webviewer-custom-element='${id}']`);\n        if (child) {\n          child.parentNode.removeChild(child);\n        }\n      });\n\n      ids.current = [];\n\n      const state = {\n        annotation,\n        isSelected,\n      };\n\n      noteTransformFunction(containerRef.current, state, (...params) => {\n        const element = document.createElement(...params);\n        const id = `custom-element-${currId}`;\n        currId++;\n        ids.current.push(id);\n        element.setAttribute('data-webviewer-custom-element', id);\n        element.addEventListener('mousedown', e => {\n          e.stopPropagation();\n        });\n\n        return element;\n      });\n    }\n  });\n\n  useEffect(() => {\n    //If this is not a new one, rebuild the isEditing map\n    const pendingText = pendingEditTextMap[annotation.Id]\n    if (pendingText !== '' && isContentEditable && !isDocumentReadOnly) {\n      setIsEditing(true, 0);\n    }\n  }, [isDocumentReadOnly, isContentEditable, setIsEditing, annotation]);\n\n  useDidUpdate(() => {\n    if (isDocumentReadOnly || !isContentEditable) {\n      setIsEditing(false, 0);\n    }\n  }, [isDocumentReadOnly, isContentEditable, setIsEditing])\n\n  const handleNoteClick = e => {\n    // stop bubbling up otherwise the note will be closed\n    // due to annotation deselection\n    e && e.stopPropagation();\n\n    if (isNotePanelOpen && unreadAnnotationIdSet.has(annotation.Id)) {\n      dispatch(actions.setAnnotationReadState({ isRead: true, annotationId: annotation.Id }));\n    }\n\n    if (!isSelected) {\n      customNoteSelectionFunction && customNoteSelectionFunction(annotation);\n      core.deselectAllAnnotations();\n      core.selectAnnotation(annotation);\n      core.jumpToAnnotation(annotation);\n\n      // Need this delay to ensure all other event listeners fire before we open the line\n      setTimeout(() => dispatch(actions.openElement('annotationNoteConnectorLine')), 300);\n    }\n  };\n\n  const hasUnreadReplies = unreadReplyIdSet.size > 0;\n\n  const noteClass = classNames({\n    Note: true,\n    expanded: isSelected,\n    unread: unreadAnnotationIdSet.has(annotation.Id) || hasUnreadReplies,\n  });\n\n  const repliesClass = classNames({\n    replies: true,\n    hidden: !isSelected,\n  });\n\n  useEffect(() => {\n    //Must also restore the isEdit for  any replies, in case someone was editing a\n    //reply when a comment was placed above\n    replies.forEach((reply, index) => {\n      const pendingText = pendingEditTextMap[reply.Id]\n      if ((pendingText !== '' && typeof pendingText !== 'undefined') && isSelected) {\n        setIsEditing(true, 1 + index);\n      }\n    })\n  }, [isSelected]);\n\n  const showReplyArea = !Object.values(isEditingMap).some(val => val);\n\n  const handleNoteKeydown = e => {\n    // Click if enter or space is pressed and is current target.\n    const isNote = e.target === e.currentTarget;\n    if (isNote && (e.key === 'Enter' || e.key === ' ')) {\n      e.preventDefault(); // Stop from being entered in field\n      handleNoteClick();\n    }\n  };\n\n  const handleReplyClicked = reply => {\n    //set clicked reply as read\n    if (unreadReplyIdSet.has(reply.Id)) {\n      dispatch(actions.setAnnotationReadState({ isRead: true, annotationId: reply.Id }));\n      core.getAnnotationManager().selectAnnotation(reply);\n    }\n  };\n\n  const markAllRepliesRead = () => {\n    //set all replies to read state if user starts to type in reply textarea\n    if (unreadReplyIdSet.size > 0) {\n      const repliesSetToRead = replies.filter(r => unreadReplyIdSet.has(r.Id));\n      core.getAnnotationManager().selectAnnotations(repliesSetToRead);\n      repliesSetToRead.forEach(r => dispatch(actions.setAnnotationReadState({ isRead: true, annotationId: r.Id })));\n    }\n  };\n\n  const setIsEditing = useCallback(\n    (isEditing, index) => {\n      setIsEditingMap(map => ({\n        ...map,\n        [index]: isEditing,\n      }));\n    },\n    [setIsEditingMap],\n  );\n\n  //apply unread reply style to replyArea if the last reply is unread\n  const lastReplyId = replies.length > 0 ? replies[replies.length - 1].Id : null;\n  return (\n    <div\n      role=\"button\"\n      tabIndex={0}\n      ref={containerRef}\n      className={noteClass}\n      onClick={handleNoteClick}\n      onKeyDown={handleNoteKeydown}\n      id={`note_${annotation.Id}`}\n    >\n      <NoteContent\n        noteIndex={0}\n        annotation={annotation}\n        isSelected={isSelected}\n        setIsEditing={setIsEditing}\n        isEditing={isEditingMap[0]}\n        textAreaValue={pendingEditTextMap[annotation.Id]}\n        onTextChange={setPendingEditText}\n        isNonReplyNoteRead={!unreadAnnotationIdSet.has(annotation.Id)}\n        isUnread={unreadAnnotationIdSet.has(annotation.Id) || hasUnreadReplies}\n      />\n      {(isSelected || isExpandedFromSearch || shouldExpandCommentThread) && (\n        <React.Fragment>\n          {replies.length > 0 && (\n            <div className={repliesClass}>\n              {hasUnreadReplies && (\n                <Button\n                  dataElement=\"markAllReadButton\"\n                  className=\"mark-all-read-button\"\n                  label={t('action.markAllRead')}\n                  onClick={markAllRepliesRead}\n                />\n              )}\n              {replies.map((reply, i) => (\n                <div className=\"reply\" id={`note_reply_${reply.Id}`} key={`note_reply_${reply.Id}`}>\n                  <NoteContent\n                    noteIndex={i + 1}\n                    key={reply.Id}\n                    annotation={reply}\n                    setIsEditing={setIsEditing}\n                    isEditing={isEditingMap[i + 1]}\n                    onTextChange={setPendingEditText}\n                    onReplyClicked={handleReplyClicked}\n                    isUnread={unreadAnnotationIdSet.has(reply.Id)}\n                  />\n                </div>\n              ))}\n            </div>\n          )}\n          {showReplyArea && (\n            <ReplyArea\n              isUnread={lastReplyId && unreadAnnotationIdSet.has(lastReplyId)}\n              onPendingReplyChange={markAllRepliesRead}\n              annotation={annotation}\n            />\n          )}\n        </React.Fragment>\n      )}\n      {isSelected && <AnnotationNoteConnectorLine annotation={annotation} noteContainerRef={containerRef} />}\n    </div>\n  );\n};\n\nNote.propTypes = propTypes;\n\nexport default Note;","import Note from './Note';\n\nexport default Note;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './ListSeparator.scss';\n\nclass ListSeparator extends React.PureComponent {\n  static propTypes = {\n    renderContent: PropTypes.func,\n    children: PropTypes.node,\n  }\n\n  render() {\n    const content = this.props.renderContent ? this.props.renderContent() : this.props.children;\n    return <div className=\"ListSeparator\">{content}</div>;\n  }\n}\n\nexport default ListSeparator;\n","import ListSeparator from './ListSeparator';\n\nexport default ListSeparator;","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport VirtualizedList from 'components/NotesPanel/VirtualizedList';\nimport NormalList from 'components/NotesPanel/NormalList';\nimport Dropdown from 'components/Dropdown';\nimport Note from 'components/Note';\nimport Icon from 'components/Icon';\nimport NoteContext from 'components/Note/Context';\nimport ListSeparator from 'components/ListSeparator';\nimport Button from 'components/Button';\n\nimport core from 'core';\nimport { getSortStrategies } from 'constants/sortStrategies';\nimport Events from 'constants/events';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport useMedia from 'hooks/useMedia';\nimport { isIE } from 'helpers/device';\n\nimport './NotesPanel.scss';\n\nconst SORT_CONTAINER_ELEMENT = 'sortContainer';\n\nconst NotesPanel = ({ currentLeftPanelWidth }) => {\n  const [\n    sortStrategy,\n    isOpen,\n    isDisabled,\n    pageLabels,\n    customNoteFilter,\n    currentNotesPanelWidth,\n    notesInLeftPanel,\n    isDocumentReadOnly,\n    enableNotesPanelVirtualizedList,\n    isInDesktopOnlyMode,\n    isSortContainerDisabled\n  ] = useSelector(\n    state => [\n      selectors.getSortStrategy(state),\n      selectors.isElementOpen(state, 'notesPanel'),\n      selectors.isElementDisabled(state, 'notesPanel'),\n      selectors.getPageLabels(state),\n      selectors.getCustomNoteFilter(state),\n      selectors.getNotesPanelWidth(state),\n      selectors.getNotesInLeftPanel(state),\n      selectors.isDocumentReadOnly(state),\n      selectors.getEnableNotesPanelVirtualizedList(state),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.isElementDisabled(state, SORT_CONTAINER_ELEMENT)\n    ],\n    shallowEqual,\n  );\n  const currentWidth = currentLeftPanelWidth || currentNotesPanelWidth;\n\n  const dispatch = useDispatch();\n  const inputRef = useRef(null);\n\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const [notes, setNotes] = useState([]);\n\n  const [filterEnabled, setFilterEnabled] = useState(false);\n\n  // the object will be in a shape of { [note.Id]: true }\n  // use a map here instead of an array to achieve an O(1) time complexity for checking if a note is selected\n  const [selectedNoteIds, setSelectedNoteIds] = useState({});\n  const [searchInput, setSearchInput] = useState('');\n  const [scrollToSelectedAnnot, setScrollToSelectedAnnot] = useState(false);\n  const [t] = useTranslation();\n  const listRef = useRef();\n  // a ref that is used to keep track of the current scroll position\n  // when the number of notesToRender goes over/below the threshold, we will unmount the current list and mount the other one\n  // this will result in losing the scroll position and we will use this ref to recover\n  const scrollTopRef = useRef(0);\n  const VIRTUALIZATION_THRESHOLD = enableNotesPanelVirtualizedList ? (isIE ? 25 : 100) : Infinity;\n\n  useEffect(() => {\n    const onDocumentUnloaded = () => {\n      setNotes([]);\n      setSelectedNoteIds({});\n      setSearchInput('');\n    };\n    core.addEventListener('documentUnloaded', onDocumentUnloaded);\n    return () => core.removeEventListener('documentUnloaded', onDocumentUnloaded);\n  }, []);\n\n  useEffect(() => {\n    const _setNotes = () => {\n      setNotes(\n        core\n          .getAnnotationsList()\n          .filter(annot => annot.Listable && !annot.isReply() && !annot.Hidden && !annot.isGrouped() && annot.ToolName !== window.Core.Tools.ToolNames.CROP && !annot.isContentEditPlaceholder()),\n      );\n    };\n\n    const toggleFilterStyle = (e) => {\n      const { types, authors, colors, statuses } = e.detail;\n      if (types.length > 0 || authors.length > 0 || colors.length > 0 || statuses.length > 0) {\n        setFilterEnabled(true);\n      } else {\n        setFilterEnabled(false);\n      }\n    }\n\n    core.addEventListener('annotationChanged', _setNotes);\n    core.addEventListener('annotationHidden', _setNotes);\n    core.addEventListener('updateAnnotationPermission', _setNotes);\n    window.addEventListener(Events.ANNOTATION_FILTER_CHANGED, toggleFilterStyle);\n\n    _setNotes();\n\n    return () => {\n      core.removeEventListener('annotationChanged', _setNotes);\n      core.removeEventListener('annotationHidden', _setNotes);\n      core.removeEventListener('updateAnnotationPermission', _setNotes);\n      window.removeEventListener(Events.ANNOTATION_FILTER_CHANGED, toggleFilterStyle);\n    };\n  }, []);\n\n  useEffect(() => {\n    const onAnnotationSelected = () => {\n      const ids = {};\n\n      core.getSelectedAnnotations().forEach(annot => {\n        ids[annot.Id] = true;\n      });\n      if (isOpen || notesInLeftPanel) {\n        setSelectedNoteIds(ids);\n        setScrollToSelectedAnnot(true);\n      }\n    };\n    onAnnotationSelected();\n\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () => core.removeEventListener('annotationSelected', onAnnotationSelected);\n  }, [isOpen, notesInLeftPanel]);\n\n  let singleSelectedNoteIndex = -1;\n\n  const handleScroll = scrollTop => {\n    if (scrollTop) {\n      scrollTopRef.current = scrollTop;\n    }\n    dispatch(actions.closeElement('annotationNoteConnectorLine'));\n  };\n\n  const filterNotesWithSearch = note => {\n    const content = note.getContents();\n    const authorName = core.getDisplayAuthor(note['Author']);\n    const annotationPreview = note.getCustomData('trn-annot-preview');\n\n    // didn't use regex here because the search input may form an invalid regex, e.g. *\n    return (\n      content?.toLowerCase().includes(searchInput.toLowerCase()) ||\n      authorName?.toLowerCase().includes(searchInput.toLowerCase()) ||\n      annotationPreview?.toLowerCase().includes(searchInput.toLowerCase())\n    );\n  };\n\n  const filterNote = note => {\n    let shouldRender = true;\n\n    if (customNoteFilter) {\n      shouldRender = shouldRender && customNoteFilter(note);\n    }\n\n    if (searchInput) {\n      const replies = note.getReplies();\n      // reply is also a kind of annotation\n      // https://www.pdftron.com/api/web/Core.AnnotationManager.html#createAnnotationReply__anchor\n      const noteAndReplies = [note, ...replies];\n\n      shouldRender =\n        shouldRender &&\n        noteAndReplies.some(filterNotesWithSearch);\n    }\n    return shouldRender;\n  };\n\n  const notesToRender = getSortStrategies()[sortStrategy].getSortedNotes(notes)\n    .filter(filterNote);\n\n  useEffect(() => {\n    if (Object.keys(selectedNoteIds).length && singleSelectedNoteIndex !== -1) {\n      setTimeout(() => {\n        // wait for the previous selected annotation to resize() after closing before scrolling to the newly selected one\n        listRef.current?.scrollToRow(singleSelectedNoteIndex);\n      }, 0);\n    }\n  }, [selectedNoteIds]);\n\n  //expand a reply note when search content is match\n  const onlyReplyContainsSearchInput = currNote => {\n    if (Object.keys(selectedNoteIds).length) {\n      return false;\n    }\n    return searchInput && notesToRender.filter(note => {\n      return note.getReplies().some(filterNotesWithSearch);\n    }).some(replies => replies.Id === currNote.Id);\n  };\n\n  const handleInputChange = e => {\n    _handleInputChange(e.target.value);\n  };\n\n  const _handleInputChange = _.debounce(value => {\n    // this function is used to solve the issue with using synthetic event asynchronously.\n    // https://reactjs.org/docs/events.html#event-pooling\n    core.deselectAllAnnotations();\n\n    setSearchInput(value);\n  }, 500);\n\n  const [pendingEditTextMap, setPendingEditTextMap] = useState({});\n  const setPendingEditText = useCallback(\n    (pendingText, annotationID) => {\n      setPendingEditTextMap(map => ({\n        ...map,\n        [annotationID]: pendingText,\n      }));\n    },\n    [setPendingEditTextMap],\n  );\n\n  const [pendingReplyMap, setPendingReplyMap] = useState({});\n  const setPendingReply = useCallback(\n    (pendingReply, annotationID) => {\n      setPendingReplyMap(map => ({\n        ...map,\n        [annotationID]: pendingReply,\n      }));\n    },\n    [setPendingReplyMap],\n  );\n\n  const renderChild = (\n    notes,\n    index,\n    // when we are virtualizing the notes, all of them will be absolutely positioned\n    // this function needs to be called by a Note component whenever its height changes\n    // to clear the cache(used by react-virtualized) and recompute the height so that each note\n    // can have the correct position\n    resize = () => { },\n  ) => {\n    let listSeparator = null;\n    const { shouldRenderSeparator, getSeparatorContent } = getSortStrategies()[sortStrategy];\n    const prevNote = index === 0 ? null : notes[index - 1];\n    const currNote = notes[index];\n\n    if (shouldRenderSeparator && getSeparatorContent && (!prevNote || shouldRenderSeparator(prevNote, currNote))) {\n      listSeparator = <ListSeparator renderContent={() => getSeparatorContent(prevNote, currNote, { pageLabels })} />;\n    }\n\n    //Collapse an expanded note when the top non-reply NoteContent is clicked\n    const handleNoteClicked = () => {\n      if (selectedNoteIds[currNote.Id]) {\n        setSelectedNoteIds(currIds => {\n          const clone = { ...currIds };\n          delete clone[currNote.Id];\n          return clone;\n        });\n        core.deselectAnnotation(currNote);\n      }\n    };\n\n    // can potentially optimize this a bit since a new reference will cause consumers to rerender\n    const contextValue = {\n      searchInput,\n      resize,\n      isSelected: selectedNoteIds[currNote.Id],\n      isContentEditable: core.canModifyContents(currNote) && !currNote.getContents(),\n      pendingEditTextMap,\n      setPendingEditText,\n      pendingReplyMap,\n      setPendingReply,\n      isDocumentReadOnly,\n      isNotePanelOpen: isOpen || notesInLeftPanel,\n      onTopNoteContentClicked: handleNoteClicked,\n      isExpandedFromSearch: onlyReplyContainsSearchInput(currNote),\n      scrollToSelectedAnnot,\n      sortStrategy,\n    };\n\n    if (index === singleSelectedNoteIndex) {\n      setTimeout(() => {\n        setScrollToSelectedAnnot(false);\n        // open the 'annotationNoteConnectorLine' since the note it's pointing to is being rendered\n        dispatch(actions.openElement('annotationNoteConnectorLine'));\n      }, 0);\n    }\n\n    return (\n      // unfortunately we need to use an actual div instead of React.Fragment here so that we can pass the correct index to scrollToRow\n      // if this is a fragment then the listSeparator is rendered as a separate child, which means\n      // singleSelectedNoteIndex might not be the index of the selected note among all the child elements of the notes panel\n      <div role=\"listitem\" className=\"note-wrapper\">\n        {listSeparator}\n        <NoteContext.Provider value={contextValue}>\n          <Note\n            annotation={currNote}\n          />\n        </NoteContext.Provider>\n      </div>\n    );\n  };\n\n  const NoResults = (\n    <div className=\"no-results\">\n      <div>\n        <Icon className=\"empty-icon\" glyph=\"illustration - empty state - outlines\" />\n      </div>\n      <div className=\"msg\">{t('message.noResults')}</div>\n    </div>\n  );\n\n  const NoAnnotations = (\n    <div className=\"no-annotations\">\n      <div>\n        <Icon className=\"empty-icon\" glyph=\"illustration - empty state - outlines\" />\n      </div>\n      <div className=\"msg\">{isDocumentReadOnly ? t('message.noAnnotationsReadOnly') : t('message.noAnnotations')}</div>\n    </div>\n  );\n\n  // keep track of the index of the single selected note in the sorted and filtered list\n  // in order to scroll it into view in this render effect\n  const ids = Object.keys(selectedNoteIds);\n  if (ids.length === 1) {\n    singleSelectedNoteIndex = notesToRender.findIndex(note => note.Id === ids[0]);\n  } else if (ids.length) {\n    // when selecting annotations that are grouped together, scroll to parent annotation that is in \"notesToRender\"\n    // selectedNoteIds will have every ID in the group, while only the parent is in notesToRender\n    const existingSelectedNotes = notesToRender.filter(note => selectedNoteIds[note.Id]);\n\n    if (existingSelectedNotes.length) {\n      singleSelectedNoteIndex = notesToRender.findIndex(note => note.Id === existingSelectedNotes[0].Id);\n    }\n  }\n\n  let style = {};\n  if ((isInDesktopOnlyMode || !isMobile)) {\n    style = { width: `${currentWidth}px`, minWidth: `${currentWidth}px` };\n  }\n  const showNotePanel = !isDisabled && (isOpen || notesInLeftPanel);\n  return (!showNotePanel ? null : (\n    <div\n      className={classNames({\n        Panel: true,\n        NotesPanel: true\n      })}\n      style={style}\n      data-element=\"notesPanel\"\n      onMouseUp={() => core.deselectAllAnnotations}\n    >\n      {(!isInDesktopOnlyMode && isMobile) && !notesInLeftPanel &&\n        <div\n          className=\"close-container\"\n        >\n          <div\n            className=\"close-icon-container\"\n            onClick={() => {\n              dispatch(actions.closeElements(['notesPanel']));\n            }}\n          >\n            <Icon\n              glyph=\"ic_close_black_24px\"\n              className=\"close-icon\"\n            />\n          </div>\n        </div>}\n      <React.Fragment>\n        <div className=\"header\">\n          <div className=\"input-container\">\n            <input\n              type=\"text\"\n              placeholder={t('message.searchCommentsPlaceholder')}\n              aria-label={t('message.searchCommentsPlaceholder')}\n              onChange={handleInputChange}\n              ref={inputRef}\n              id=\"NotesPanel__input\"\n            />\n          </div>\n          <div className='comments-counter'>\n            <span className='main-comment'>{t('component.notesPanel')}</span> {`(${notesToRender.length})`}\n          </div>\n          <div className=\"sort-row\">\n            {\n              (isSortContainerDisabled) ? <div className=\"sort-container\"></div> :\n                <div className=\"sort-container\" data-element={SORT_CONTAINER_ELEMENT}>\n                  <div className=\"label\">{`${t('message.sortBy')}:`}</div>\n                  <Dropdown\n                    dataElement=\"notesOrderDropdown\"\n                    disabled={notesToRender.length === 0}\n                    items={Object.keys(getSortStrategies())}\n                    translationPrefix=\"option.notesOrder\"\n                    currentSelectionKey={sortStrategy}\n                    onClickItem={sortStrategy => {\n                      dispatch(actions.setNotesPanelSortStrategy(sortStrategy));\n                    }}\n                  />\n                </div>\n            }\n            <Button\n              dataElement=\"filterAnnotationButton\"\n              className={classNames({\n                filterAnnotationButton: true,\n                active: filterEnabled\n              })}\n              disabled={notes.length === 0}\n              img=\"icon-comments-filter\"\n              onClick={() => dispatch(actions.openElement('filterModal'))}\n              title={t('component.filter')}\n            />\n          </div>\n        </div>\n        {notesToRender.length === 0 ? (notes.length === 0 ? NoAnnotations : NoResults) : notesToRender.length <= VIRTUALIZATION_THRESHOLD ? (\n          <NormalList\n            ref={listRef}\n            notes={notesToRender}\n            onScroll={handleScroll}\n            initialScrollTop={scrollTopRef.current}\n          >\n            {renderChild}\n          </NormalList>\n        ) : (\n          <VirtualizedList\n            ref={listRef}\n            notes={notesToRender}\n            sortStrategy={sortStrategy}\n            onScroll={handleScroll}\n            initialScrollTop={scrollTopRef.current}\n            selectedIndex={singleSelectedNoteIndex}\n          >\n            {renderChild}\n          </VirtualizedList>\n        )}\n      </React.Fragment>\n    </div>\n  ));\n};\n\nexport default NotesPanel;\n","import NotesPanel from './NotesPanel';\n\nexport default NotesPanel;\n","import core from 'core';\r\n\r\nexport async function getFileAttachments() {\r\n  const attachments = {\r\n    fileAttachmentAnnotations: [],\r\n    embeddedFiles: [],\r\n  };\r\n  if (!core.isFullPDFEnabled()) {\r\n    console.warn('Need fullAPI to be on to view embedded files.');\r\n  } else {\r\n    const PDFNet = window.Core.PDFNet;\r\n    // There are two types of file attachments:\r\n    // EmbeddedFiles and FileAttachmentAnnotation\r\n    const doc = await core.getDocument().getPDFDoc();\r\n    const files = await PDFNet.NameTree.find(doc, 'EmbeddedFiles');\r\n    if (files && (await files.isValid())) {\r\n      // Traverse the list of embedded files.\r\n      const fileItr = await files.getIteratorBegin();\r\n      for (let counter = 0; await fileItr.hasNext(); await fileItr.next(), ++counter) {\r\n        const filesIteratorValue = await fileItr.value();\r\n        const fileObject = await filesIteratorValue.get('F');\r\n        const fileData = await fileObject.value();\r\n        const filename = await fileData.getAsPDFText();\r\n        const fileSpec = await PDFNet.FileSpec.createFromObj(await fileItr.value());\r\n        const stm = await fileSpec.getFileData();\r\n        const filterReader = await PDFNet.FilterReader.create(stm);\r\n        const dataArray = [];\r\n        const chunkLength = 1024;\r\n        let retrievedLength = chunkLength;\r\n        while (chunkLength === retrievedLength) {\r\n          const bufferSubArray = await filterReader.read(chunkLength);\r\n          retrievedLength = bufferSubArray.length;\r\n          dataArray.push(bufferSubArray);\r\n        }\r\n        const buffer = new Uint8Array(dataArray.length * chunkLength + retrievedLength);\r\n        for (let i = 0; i < dataArray.length; i++) {\r\n          const offset = i * chunkLength;\r\n          const currentArr = dataArray[i];\r\n          buffer.set(currentArr, offset);\r\n        }\r\n        const blob = new Blob([buffer]);\r\n        attachments.embeddedFiles.push({\r\n          filename,\r\n          blob,\r\n        });\r\n      }\r\n    }\r\n  }\r\n  const fileAttachmentAnnotations = core\r\n    .getAnnotationsList()\r\n    .filter(annot => annot instanceof Annotations.FileAttachmentAnnotation);\r\n\r\n  // re-order fileAttachment annotations by page number\r\n  fileAttachmentAnnotations.forEach(annot => {\r\n    if (!attachments.fileAttachmentAnnotations[annot.PageNumber]) {\r\n      attachments.fileAttachmentAnnotations[annot.PageNumber] = [];\r\n    }\r\n    attachments.fileAttachmentAnnotations[annot.PageNumber].push(annot);\r\n  });\r\n  return attachments;\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getFileAttachments } from 'helpers/getFileAttachments';\r\nimport { saveAs } from 'file-saver';\r\nimport Icon from 'components/Icon';\r\nimport core from 'core';\r\nimport './FileAttachmentPanel.scss';\r\n\r\nconst renderAttachment = (filename, onClickCallback, key) => {\r\n  const fileExtension = filename.split('.').pop().toUpperCase();\r\n  return (\r\n    <li onClick={onClickCallback} key={key}>\r\n      <span>{`[${fileExtension}] ${filename}`}</span>\r\n    </li>\r\n  );\r\n};\r\n\r\nconst FileAttachmentPanel = () => {\r\n  const [t] = useTranslation();\r\n  const [fileAttachments, setFileAttachments] = useState({\r\n    embeddedFiles: [],\r\n    fileAttachmentAnnotations: [],\r\n  });\r\n\r\n  useEffect(() => {\r\n    const updateFileAttachments = async () => {\r\n      const attachments = await getFileAttachments();\r\n      setFileAttachments(attachments);\r\n    };\r\n    core.addEventListener('annotationChanged', updateFileAttachments);\r\n    updateFileAttachments();\r\n    return () => {\r\n      core.removeEventListener('annotationChanged', updateFileAttachments);\r\n    };\r\n  }, []);\r\n\r\n  if (\r\n    fileAttachments.embeddedFiles.length === 0 &&\r\n    Object.entries(fileAttachments.fileAttachmentAnnotations).length === 0\r\n  ) {\r\n    return (\r\n      <div className=\"no-attachment\">\r\n        <Icon className=\"empty-icon\" glyph=\"illustration - empty state - outlines\" />\r\n        <div className=\"msg\">{t('message.noAttachments')}</div>\r\n      </div>\r\n    );\r\n  }\r\n  return (\r\n    <div className=\"fileAttachmentPanel\">\r\n      <div className=\"section\">\r\n        {fileAttachments.embeddedFiles.length ? <p className=\"title\">{t('message.embeddedFiles')}</p> : null}\r\n        <ul className=\"downloadable\">\r\n          {fileAttachments.embeddedFiles.map((file, idx) =>\r\n            renderAttachment(\r\n              file.filename,\r\n              () => {\r\n                saveAs(file.blob, file.filename);\r\n              },\r\n              `embeddedFile_${idx}`,\r\n            ),\r\n          )}\r\n        </ul>\r\n      </div>\r\n\r\n      {Object.entries(fileAttachments.fileAttachmentAnnotations).map(([pageNumber, fileAttachmentAnnotsPerPage]) => {\r\n        return (\r\n          <div key={pageNumber} className=\"section\">\r\n            <p className=\"title\">\r\n              {t('message.pageNum')}: {pageNumber}\r\n            </p>\r\n            <ul className=\"downloadable\">\r\n              {fileAttachmentAnnotsPerPage.map((fileAttachmentAnnot, idx) =>\r\n                renderAttachment(\r\n                  fileAttachmentAnnot.filename,\r\n                  () => {\r\n                    core.setCurrentPage(fileAttachmentAnnot['PageNumber']);\r\n                    core.selectAnnotation(fileAttachmentAnnot);\r\n                    core.getAnnotationManager().trigger('annotationDoubleClicked', fileAttachmentAnnot);\r\n                  },\r\n                  `fileAttachmentAnnotation_${idx}`,\r\n                ),\r\n              )}\r\n            </ul>\r\n          </div>\r\n        );\r\n      })}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default FileAttachmentPanel;\r\n","import FileAttachmentPanel from './FileAttachmentPanel';\r\n\r\nexport default FileAttachmentPanel;\r\n","import core from 'core';\nimport actions from 'actions';\n\n/**\n * Side-effect function that sets the verification status of the document.\n * One of three possible results can happen:\n *\n * 1. Valid: All signatures have been successfully verified\n * 2. Unknown: One or more signatures has issues, but the verification API\n * cannot definitively state the signatures are valid or invalid (i.e. a\n * required Public Key Certificate is missing)\n * 3. Invalid: The document has been digitally signed, but has one or more\n * invalid signatures (i.e. because the document was modified after it was\n * signed, and one or more signature field did not allow for this to occur)\n *\n * The above results are dictated by the return values of:\n *\n * PDFNet.VerificationResult.getDocumentStatus:\n * https://www.pdftron.com/api/web/PDFNet.VerificationResult.html#getDocumentStatus__anchor\n *\n * PDFNet.VerificationResult.getTrustStatus:\n * https://www.pdftron.com/api/web/PDFNet.VerificationResult.html#getTrustStatus__anchor\n *\n * PDFNet.VerificationResult.getDigestStatus:\n * https://www.pdftron.com/api/web/PDFNet.VerificationResult.html#getDigestStatus__anchor\n *\n * PDFNet.VerificationResult.getPermissionsStatus:\n * https://www.pdftron.com/api/web/PDFNet.VerificationResult.html#getPermissionsStatus__anchor\n *\n * Valid:\n * DocumentStatus.e_no_error && TrustStatus.e_trust_verified\n *\n * Unknown:\n * DocumentStatus.e_no_error\n * && (\n *  DigestStatus.e_digest_verified\n *  || DigestStatus.e_digest_verification_disabled\n * ) && trustStatus !== TrustStatus.e_no_trust_status\n * && (\n *   ModificationPermissionsStatus.e_unmodified\n *   || ModificationPermissionsStatus.e_has_allowed_changes\n *   || ModificationPermissionsStatus.e_permissions_verification_disabled\n * )\n *\n * Any other combinations will cause the signature field to be considered\n * Invalid.\n * @ignore\n */\nexport default async (certificates, trustLists, dispatch) => {\n  const doc = core.getDocument();\n  if (doc) {\n    const verificationResult = await getVerificationResult(doc, certificates, trustLists);\n    dispatch(actions.setVerificationResult(verificationResult));\n    return verificationResult;\n  }\n};\n\n/**\n * Iterates through each signature widget in the document, retrieves and returns\n * all pertinent information pertaining to Digital Signature Verification\n *\n * @param {Core.Document} doc The document with signatures to verify\n * with the given certificate\n * @param {Array<File | string>} certificates The certificate files to be used\n * for verification. Can be passed as a File object, or a URL in the form\n * of a string, in which a GET call will be made to retrieve the certificate\n * @param {\n *   Array<Blob | ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray>\n * } trustLists The Trust Lists to load for verification.\n * @returns {object} An object mapping the field name of each signature widget\n * to their verification results\n * @ignore\n */\nconst getVerificationResult = async (doc, certificates, trustLists) => {\n  const { PDFNet } = window;\n  const { VerificationResult } = PDFNet;\n  const {\n    TrustStatus,\n    DigestStatus,\n    ModificationPermissionsStatus,\n    DocumentStatus,\n  } = VerificationResult;\n  const verificationResults = {};\n\n  await PDFNet.runWithCleanup(async () => {\n    /**\n     * @todo Remove re-assignment of argument from original code?\n     */\n    doc = await doc.getPDFDoc();\n    const opts = await PDFNet.VerificationOptions.create(\n      PDFNet.VerificationOptions.SecurityLevel.e_compatibility_and_archiving\n    );\n\n    for (const certificate of certificates) {\n      if (typeof certificate === 'string') {\n        try {\n          await opts.addTrustedCertificateFromURL(certificate);\n        } catch {\n          console.error(\n            `Error encountered when trying to load certificate from URL: ${certificate}\\n`\n            + 'Certificate will not be used as part of verification process.'\n          );\n          continue;\n        }\n      } else if (\n        certificate instanceof File ||\n        Object.prototype.toString.call(certificate) === '[object File]'\n      ) {\n        const fileReader = new FileReader();\n        const arrayBufferPromise = new Promise((resolve, reject) => {\n          fileReader.addEventListener('load', async e => {\n            resolve(new Uint8Array(e.target.result));\n          });\n          fileReader.addEventListener('error', () => {\n            reject('Error reading the local certificate');\n          });\n\n          fileReader.readAsArrayBuffer(certificate);\n        });\n        try {\n          await opts.addTrustedCertificate(await arrayBufferPromise);\n        } catch (error) {\n          console.error(\n            `Error encountered when trying to load certificate: ${error}`\n            + 'Certificate will not be used as part of the verification process.'\n          );\n          continue;\n        }\n      } else if (\n        certificate instanceof ArrayBuffer\n        || certificate instanceof Int8Array\n        || certificate instanceof Uint8Array\n        || certificate instanceof Uint8ClampedArray\n      ) {\n        try {\n          await opts.addTrustedCertificate(certificate);\n        } catch (error) {\n          console.error(\n            `Error encountered when trying to load certificate: ${error}`\n            + 'Certificate will not be used as part of the verification process.'\n          );\n          continue;\n        }\n      }\n    }\n\n    for (const trustList of trustLists) {\n      const trustListDataStructure = trustList.constructor.name;\n      const supportedDataStructures = [\n        'ArrayBuffer',\n        'Int8Array',\n        'Uint8Array',\n        'Uint8ClampedArray',\n      ];\n      let fdfDocBuffer;\n      if (trustListDataStructure === 'Blob') {\n        fdfDocBuffer = await trustList.arrayBuffer();\n      } else if (supportedDataStructures.includes(trustListDataStructure)) {\n        fdfDocBuffer = trustList;\n      } else {\n        console.error(\n          'The provided TrustList is an unsupported data-structure. '\n          + 'Please ensure the TrustList is formatted as one of the following '\n          + `data-structures: ${[...supportedDataStructures, 'Blob'].join('|')}`\n        );\n        continue;\n      }\n      try {\n        const fdf = await PDFNet.FDFDoc.createFromMemoryBuffer(fdfDocBuffer);\n        await opts.loadTrustList(fdf);\n      } catch (error) {\n        console.error(\n          `Error encountered when trying to load certificate: ${error}. `\n          + 'Certificate will not be used as part of the verification process.'\n        );\n        continue;\n      }\n    }\n\n    const fieldIterator = await doc.getFieldIteratorBegin();\n    for (; (await fieldIterator.hasNext()); fieldIterator.next()) {\n      const field = await fieldIterator.current();\n      if (\n        !(await field.isValid())\n        || await field.getType() !== PDFNet.Field.Type.e_signature\n      ) {\n        continue;\n      }\n      const digitalSigField = await PDFNet.DigitalSignatureField.createFromField(field);\n      try {\n        const result = await digitalSigField.verify(opts);\n        const id = await (await digitalSigField.getSDFObj()).getObjNum();\n\n        let signer;\n        let signTime;\n        let documentPermission;\n        let isCertification;\n        let contactInfo;\n        let location;\n        let reason;\n        let validAtTimeOfSigning;\n        let signerName;\n        const issuerField = {};\n        const subjectField = {};\n\n        const signed = await digitalSigField.hasCryptographicSignature();\n        if (signed) {\n          const subFilter = await digitalSigField.getSubFilter();\n          if (subFilter === PDFNet.DigitalSignatureField.SubFilterType.e_adbe_pkcs7_detached) {\n            const signerCert = await digitalSigField.getSignerCertFromCMS();\n            /**\n             * @note \"Issuer\" refers to the Certificate Authority that issued the\n             * certificate\n             * \"Subject\" refers to the organization/person that the Certificate\n             * Auhority issued this certificate to\n             *\n             * It is likely that future UI iterations will leverage Issuer\n             * information, so the code has been commented out for now, but will\n             * be uncommented in future feature implementations\n             */\n            // const retrievedIssuerField = await signerCert.getIssuerField();\n            // const processedIssuerField = await processX501DistinguishedName(retrievedIssuerField) || {};\n            const retrievedSubjectField = await signerCert.getSubjectField();\n            const processedSubjectField = await processX501DistinguishedName(retrievedSubjectField) || {};\n            signer = processedSubjectField['e_commonName'];\n          }\n          // Getter functions cannot be called on Digital Signature fields using\n          // e_ETSI_RFC3161\n          if (subFilter !== PDFNet.DigitalSignatureField.SubFilterType.e_ETSI_RFC3161) {\n            if (!signer) {\n              signer = (\n                await digitalSigField.getSignatureName()\n                || await digitalSigField.getContactInfo()\n              );\n            }\n            signTime = await digitalSigField.getSigningTime();\n\n            if (await signTime.isValid()) {\n              signTime = formatPDFNetDate(signTime);\n            } else {\n              signTime = null;\n            }\n\n            contactInfo = await digitalSigField.getContactInfo();\n            location = await digitalSigField.getLocation();\n            reason = await digitalSigField.getReason();\n          }\n\n          documentPermission = await digitalSigField.getDocumentPermissions();\n          isCertification = await digitalSigField.isCertification();\n        }\n\n        const verificationStatus = await result.getVerificationStatus();\n        const documentStatus = await result.getDocumentStatus();\n        const digestStatus = await result.getDigestStatus();\n        const trustStatus = await result.getTrustStatus();\n        const permissionStatus = await result.getPermissionsStatus();\n        const digestAlgorithm = await result.getDigestAlgorithm();\n        const disallowedChanges = await Promise.all(\n          (await result.getDisallowedChanges()).map(async change => ({\n            objnum: await change.getObjNum(),\n            type: await change.getTypeAsString(),\n          }))\n        );\n        const validSignerIdentity = trustStatus === TrustStatus.e_trust_verified;\n\n        let trustVerificationResultString;\n        let timeOfTrustVerificationEnum;\n        let trustVerificationTime;\n        const hasTrustVerificationResult = await result.hasTrustVerificationResult();\n        if (hasTrustVerificationResult) {\n          const trustVerificationResult = await result.getTrustVerificationResult();\n\n          trustVerificationResultString = await trustVerificationResult.getResultString();\n          timeOfTrustVerificationEnum = await trustVerificationResult.getTimeOfTrustVerificationEnum();\n\n          const epochTrustVerificationTime = await trustVerificationResult.getTimeOfTrustVerification();\n          if (epochTrustVerificationTime) {\n            trustVerificationTime = formatDate(epochTrustVerificationTime);\n          }\n          const certPath = await trustVerificationResult.getCertPath();\n          if (certPath.length) {\n            const firstX509Cert = certPath[0];\n            const retrievedIssuerField = await firstX509Cert.getIssuerField();\n            const processedIssuerField = await processX501DistinguishedName(retrievedIssuerField);\n            Object.assign(issuerField, processedIssuerField);\n            const retrievedSubjectField = await firstX509Cert.getSubjectField();\n            const processedSubjectField = await processX501DistinguishedName(retrievedSubjectField);\n            Object.assign(subjectField, processedSubjectField);\n            const lastX509Cert = certPath[certPath.length - 1];\n            /**\n             * @todo @colim @rdjericpdftron 2022-05-30\n             * Using the pdftron::PDF::VerificationOptions::LoadTrustList API\n             * in combination with\n             * pdftron::Crypto::X509Certificate::GetNotBeforeEpochTime\n             * or\n             * pdftron::Crypto::X509Certificate::GetNotAfterEpochTime\n             * Results in the following fatal error being thrown:\n             *\n             * calendar_point::to_std_timepoint() does not support years after\n             * 2037 on this system\n             *\n             * @rdjericpdftron Mentions that this should be addressed in a\n             * future release of PDFNet when the Botan library has been patched\n             */\n            try {\n              const notBeforeEpochTime = await lastX509Cert.getNotBeforeEpochTime();\n              const notAfterEpochTime = await lastX509Cert.getNotAfterEpochTime();\n              validAtTimeOfSigning = (\n                notAfterEpochTime >= epochTrustVerificationTime\n                && epochTrustVerificationTime >= notBeforeEpochTime\n              );\n            } catch (dateBugError) {\n              if (dateBugError.includes('calendar_point::to_std_timepoint() does not support years after')) {\n                console.warn(\n                  'The following error is a known issue with Botan, and aims to be addressed in a future release of '\n                  + 'PDFNet. This currently does not impact PDFTron\\'s Digital Signature Verification capabilities.'\n                );\n                console.warn(dateBugError);\n              }\n            }\n          }\n        }\n\n        let badgeIcon;\n        if (verificationStatus) {\n          badgeIcon = 'digital_signature_valid';\n        } else if (\n          documentStatus === DocumentStatus.e_no_error &&\n          (digestStatus === DigestStatus.e_digest_verified ||\n            digestStatus === DigestStatus.e_digest_verification_disabled) &&\n          trustStatus !== TrustStatus.e_no_trust_status &&\n          (permissionStatus === ModificationPermissionsStatus.e_unmodified ||\n            permissionStatus === ModificationPermissionsStatus.e_has_allowed_changes ||\n            permissionStatus === ModificationPermissionsStatus.e_permissions_verification_disabled)\n        ) {\n          badgeIcon = 'digital_signature_warning';\n        } else {\n          badgeIcon = 'digital_signature_error';\n        }\n\n        if (signer) {\n          signerName = signer;\n        } else if (!signer && subjectField.e_commonName) {\n          signerName = subjectField.e_commonName;\n        }\n        const fieldName = await field.getName();\n        verificationResults[fieldName] = {\n          signed,\n          signer,\n          signerName,\n          signTime,\n          verificationStatus,\n          documentStatus,\n          digestStatus,\n          trustStatus,\n          permissionStatus,\n          disallowedChanges,\n          trustVerificationResultString,\n          timeOfTrustVerificationEnum,\n          trustVerificationTime,\n          id,\n          badgeIcon,\n          validSignerIdentity,\n          digestAlgorithm,\n          documentPermission,\n          isCertification,\n          contactInfo,\n          location,\n          reason,\n          issuerField,\n          subjectField,\n          validAtTimeOfSigning,\n        };\n      } catch (e) {\n        /**\n         * @todo Add proper error handling when an error occurs?\n         */\n        // console.log(e);\n      }\n    }\n  });\n\n  return verificationResults;\n};\n\n/**\n * Retrieves the relevant information from the given object, containing date\n * information that originates from epoch time, and returns a string containing\n * the date and time information in a human readable string\n *\n * @param {object} date The date object that is returned from PDFNet\n * @returns {string} Human readable formatted date and time\n * @ignore\n */\nconst formatPDFNetDate = date => {\n  const { year, month, day, hour, minute, second } = date;\n\n  return `${year}-${month}-${day}, ${hour}:${minute}:${second}`;\n};\n\n/**\n * Converts an epoch time input to an instance of Javascript's Date class\n *\n * @param {Number} epochTime The epoch time to be converted\n * @returns {Date} The converted epoch time\n * @ignore\n */\nconst formatDate = epochTime => {\n  const date = new Date(0);\n  // Values greater than 59 are converted into their parent values\n  // (i.e. seconds -> minutes -> hours -> day etc.)\n  date.setUTCSeconds(epochTime);\n\n  return date.toLocaleDateString('en-US', {\n    year: 'numeric',\n    month: 'long',\n    weekday: 'long',\n    day: 'numeric',\n    hour: 'numeric',\n    minute: 'numeric',\n  });\n};\n\n/**\n * Processes an instance of the PDFNet.X501DistinguishedName class into a\n * Javascript object that is human readable\n *\n * Intended to process the objects returned from invoking\n * PDFNet.X509Certificate.GetIssuerField and\n * PDFNet.X509Certificate.GetSubjectField\n *\n * @param {PDFNet.X501DistinguishedName} x501DistinguishedNameObject An instance\n * of the PDFNet.X501DistinguishedName class, to be processed into a Javascript\n * object\n * @returns {object} Maps human readable keys (as opposed to the Botan Crpyto\n * OIDs, represented as Array<int> in PDFTron Core) to the corresponding values\n * they map to\n * @ignore\n */\nconst processX501DistinguishedName = async x501DistinguishedNameObject => {\n  const processedObject = {};\n  const allAttributeAndValues = await x501DistinguishedNameObject.getAllAttributesAndValues();\n  for (const x501AttributeTypeAndValue of allAttributeAndValues) {\n    const objectIdentifier = await x501AttributeTypeAndValue.getAttributeTypeOID();\n    const key = await objectIdentifier.getRawValue();\n    const value = await x501AttributeTypeAndValue.getStringValue();\n    processedObject[translateObjectIdentifierBotanOID(key)] = value;\n  }\n  return processedObject;\n};\n\n/**\n * Takes an Array<Number> argument (or its string representation from\n * JSON.stringify) and returns the enum it is supposed to represent based on\n * its OID representation in the Botan crypto C++ library\n *\n * PDFTron Core represents the key from the original Map<string, string>\n * data-structre in the form of an array\n *\n * @example The key of the object\n * { \"2.5.4.3\", \"X520.CommonName\" }\n * Is represented as [2,5,4,3] in PDFTron Core\n *\n * Source: https://botan.randombit.net/doxygen/oid__maps_8cpp_source.html\n *\n * @param {string | Array<Number>} objectIdentifierOIDenum The array returned\n * from the invocation of PDFNet.ObjectIdentifier.getRawValue, which can be\n * accepted as the Array input (which the body of the function will convert to a\n * string), or a string representation of the array\n * @returns {string} The human readable enum that the array represents\n * @ignore\n */\nconst translateObjectIdentifierBotanOID = objectIdentifierOIDenum => {\n  const botanArrayToEnum = {\n    '[2,5,4,3]': 'e_commonName',\n    '[2,5,4,4]': 'e_surname',\n    '[2,5,4,6]': 'e_countryName',\n    '[2,5,4,7]': 'e_localityName',\n    '[2,5,4,8]': 'e_stateOrProvinceName',\n    '[2,5,4,9]': 'e_streetAddress',\n    '[2,5,4,10]': 'e_organizationName',\n    '[2,5,4,11]': 'e_organizationalUnitName',\n    /**\n     * @note Added by @CorreyL, enum is not in PDFTronCore codebase as of\n     * PDFNetJS8.1\n     *\n     * Listed as { \"1.2.840.113549.1.9.1\", \"PKCS9.EmailAddress\" }\n     * in load_oid2str_map()\n     */\n    '[1,2,840,113549,1,9,1]': 'e_emailAddress',\n  };\n  const arrayAsString = (typeof objectIdentifierOIDenum === 'string')\n    ? objectIdentifierOIDenum\n    : JSON.stringify(objectIdentifierOIDenum);\n  return botanArrayToEnum[arrayAsString];\n};\n","import React from 'react';\nimport './Spinner.scss';\n\nconst Spinner = () => <div className=\"spinner\" />;\n\nexport default Spinner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from 'components/Icon';\n\nimport './SignatureIcon.scss';\n\nconst propTypes = {\n  badge: PropTypes.string,\n  size: PropTypes.string,\n};\n\nconst SignatureIcon = ({ badge, size = 'medium' }) => (\n  <div className=\"signature-icon\">\n    {badge && <Icon glyph={badge} className={`badge ${size}`} />}\n  </div>\n);\n\nSignatureIcon.propTypes = propTypes;\n\nexport default SignatureIcon;\n","import SignatureIcon from './SignatureIcon';\n\nexport default SignatureIcon;\n","import React, {\n  useEffect,\n  useState,\n} from 'react';\nimport ReactDOM from 'react-dom';\n\nimport core from 'core';\n\nconst WidgetLocator = ({ rect }) => {\n  const [show, setShow] = useState(false);\n\n  useEffect(() => {\n    const scrollViewContainer = core.getScrollViewElement();\n    const handleScroll = () => {\n      setShow(false);\n    };\n\n    scrollViewContainer.addEventListener('scroll', handleScroll);\n    return () => scrollViewContainer.removeEventListener('scroll', handleScroll);\n  });\n\n  useEffect(() => {\n    if (rect) {\n      setTimeout(() => {\n        // so that the locator won't disappear because of the scroll\n        setShow(true);\n      }, 50);\n\n      setTimeout(() => {\n        setShow(false);\n      }, 700);\n    }\n  }, [rect]);\n\n  return (\n    show &&\n    ReactDOM.createPortal(\n      <div\n        style={{\n          position: 'absolute',\n          top: rect.y1,\n          left: rect.x1,\n          width: rect.x2 - rect.x1,\n          height: rect.y2 - rect.y1,\n          border: '1px solid #00a5e4',\n          zIndex: 100,\n        }}\n      />,\n      document.getElementById('app')\n    )\n  );\n};\n\nexport default WidgetLocator;\n","import WidgetLocator from './WidgetLocator';\n\nexport default WidgetLocator;\n","import React, {\n  useState,\n} from 'react';\nimport {\n  useDispatch,\n  useSelector,\n} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nimport actions from 'actions';\nimport classNames from 'classnames';\nimport core from 'core';\nimport selectors from 'selectors';\n\nimport SignatureIcon from 'components/SignaturePanel/SignatureIcon';\nimport Icon from 'components/Icon';\nimport WidgetLocator from '../WidgetLocator';\n\nimport './WidgetInfo.scss';\n\nexport const renderPermissionStatus = ({\n  isCertification,\n  ModificationPermissionsStatus,\n  permissionStatus,\n  translate,\n}) => {\n  let content;\n\n  switch (permissionStatus) {\n    case ModificationPermissionsStatus.e_invalidated_by_disallowed_changes:\n      content = translate(\n        'digitalSignatureVerification.permissionStatus.invalidatedByDisallowedChanges'\n      );\n      break;\n    case ModificationPermissionsStatus.e_has_allowed_changes:\n      content = translate(\n        'digitalSignatureVerification.permissionStatus.hasAllowedChanges'\n      );\n      break;\n    case ModificationPermissionsStatus.e_unmodified:\n      content = `${\n        translate('digitalSignatureVerification.permissionStatus.unmodified')\n      } ${\n        isCertification\n          ? translate('digitalSignatureVerification.certified')\n          : translate('digitalSignatureVerification.signed')\n      }.`;\n      break;\n    case ModificationPermissionsStatus.e_permissions_verification_disabled:\n      content = translate(\n        'digitalSignatureVerification.permissionStatus.permissionsVerificationDisabled'\n      );\n      break;\n    case ModificationPermissionsStatus.e_no_permissions_status:\n      content = translate(\n        'digitalSignatureVerification.permissionStatus.noPermissionsStatus'\n      );\n      break;\n  }\n\n  return <p>{content}</p>;\n};\n\nexport const renderVerificationStatus = ({\n  isCertification,\n  verificationStatus,\n}) => {\n  const verificationType = isCertification\n    ? 'Certification'\n    : 'Signature';\n  return (\n    <div className=\"title\">\n      <p>\n        {\n          verificationStatus\n            ? `${verificationType} is valid.`\n            : `${verificationType} verification failed.`\n        }\n      </p>\n    </div>\n  );\n};\n\nconst propTypes = {\n  name: PropTypes.string.isRequired,\n  collapsible: PropTypes.bool.isRequired,\n  onClick: PropTypes.func,\n  field: PropTypes.instanceOf(Annotations.Forms.Field),\n};\n\nconst WidgetInfo = ({ name, collapsible, field }) => {\n  const verificationResult = useSelector(state => selectors.getVerificationResult(state, name));\n  const [isExpanded, setIsExpanded] = useState(true);\n  const [locatorRect, setLocatorRect] = useState(null);\n  const [\n    signatureDetailsExpanded,\n    setSignatureDetailsExpanded,\n  ] = useState(false);\n  const { VerificationResult, VerificationOptions } = window.PDFNet;\n  const { TimeMode } = VerificationOptions;\n  const {\n    TrustStatus,\n    DigestStatus,\n    ModificationPermissionsStatus,\n    DocumentStatus,\n  } = VerificationResult;\n  const [translate] = useTranslation();\n\n  const {\n    signed,\n    signTime,\n    id,\n    verificationStatus,\n    permissionStatus,\n    disallowedChanges,\n    trustVerificationResultString,\n    timeOfTrustVerificationEnum,\n    trustVerificationTime,\n    badgeIcon,\n    isCertification,\n    contactInfo,\n    location,\n    reason,\n    signerName,\n  } = verificationResult;\n\n  const dispatch = useDispatch();\n\n  const handleArrowClick = e => {\n    e.stopPropagation();\n    setIsExpanded(!isExpanded);\n  };\n\n  /**\n   * Side-effect function that highlights the SignatureWidgetAnnotation\n   * pertaining to the text element that was clicked by using core code to find\n   * the coordinates of the widget on the page it is placed on\n   *\n   * @param {Annotations.Forms.Field} field The field pertaining\n   * to the text element clicked in the Signature Panel\n   */\n  const jumpToWidget = field => {\n    if (!field.widgets.length) {\n      return;\n    }\n    const widget = field.widgets[0];\n    core.jumpToAnnotation(widget);\n\n    const { scrollLeft, scrollTop } = core.getScrollViewElement();\n    const rect = widget.getRect();\n    const windowTopLeft = core\n      .getDisplayModeObject()\n      .pageToWindow({ x: rect.x1, y: rect.y1 }, widget.PageNumber);\n    const windowBottomRight = core\n      .getDisplayModeObject()\n      .pageToWindow({ x: rect.x2, y: rect.y2 }, widget.PageNumber);\n\n    setLocatorRect({\n      x1: windowTopLeft.x - scrollLeft,\n      y1: windowTopLeft.y - scrollTop,\n      x2: windowBottomRight.x - scrollLeft,\n      y2: windowBottomRight.y - scrollTop,\n    });\n  };\n\n  /**\n   * Function that invokes the necessary methods when a user interacts with\n   * the title of the widget\n   *\n   * @param {Event} event The event that is passed from an onClick or onKeyPress\n   * interaction\n   */\n  const titleInteraction = event => {\n    handleArrowClick(event);\n    jumpToWidget(field);\n  };\n\n  const renderTitle = () => {\n    let content = isCertification\n      ? translate('digitalSignatureVerification.Certified')\n      : translate('digitalSignatureVerification.Signed');\n    content += ` ${translate('digitalSignatureVerification.by')} ${signerName || translate('digitalSignatureModal.unknown')}`;\n    if (signTime) {\n      content += ` ${translate('digitalSignatureVerification.on')} ${signTime}`;\n    }\n    return (\n      <div\n        className=\"title dropdown\"\n        onClick={titleInteraction}\n        onKeyPress={titleInteraction}\n        role=\"button\"\n        tabIndex={0}\n      >\n        {collapsible && (\n          <div\n            className={classNames({\n              arrow: true,\n              expanded: isExpanded,\n            })}\n          >\n            <Icon glyph=\"ic_chevron_right_black_24px\" />\n          </div>\n        )}\n        <SignatureIcon badge={badgeIcon} size=\"small\"/>\n        <p>{content}</p>\n      </div>\n    );\n  };\n\n  const renderVerificationStatus = () => {\n    const verificationType = isCertification\n      ? 'Certification'\n      : 'Signature';\n    return (\n      <div className=\"title\">\n        <p>\n          {\n            verificationStatus\n              ? `${verificationType} is valid.`\n              : `${verificationType} verification failed.`\n          }\n        </p>\n      </div>\n    );\n  };\n\n  const renderPermissionStatus = () => {\n    let content;\n\n    switch (permissionStatus) {\n      case ModificationPermissionsStatus.e_invalidated_by_disallowed_changes:\n        content = translate(\n          'digitalSignatureVerification.permissionStatus.invalidatedByDisallowedChanges'\n        );\n        break;\n      case ModificationPermissionsStatus.e_has_allowed_changes:\n        content = translate(\n          'digitalSignatureVerification.permissionStatus.hasAllowedChanges'\n        );\n        break;\n      case ModificationPermissionsStatus.e_unmodified:\n        content = `${\n          translate('digitalSignatureVerification.permissionStatus.unmodified')\n        } ${\n          isCertification\n            ? translate('digitalSignatureVerification.certified')\n            : translate('digitalSignatureVerification.signed')\n        }.`;\n        break;\n      case ModificationPermissionsStatus.e_permissions_verification_disabled:\n        content = translate(\n          'digitalSignatureVerification.permissionStatus.permissionsVerificationDisabled'\n        );\n        break;\n      case ModificationPermissionsStatus.e_no_permissions_status:\n        content = translate(\n          'digitalSignatureVerification.permissionStatus.noPermissionsStatus'\n        );\n        break;\n    }\n\n    return <p>{content}</p>;\n  };\n\n  const renderDisallowedChanges = () => {\n    return disallowedChanges.map(({ objnum, type }) => (\n      <p key={objnum}>\n        {\n          translate(\n            'digitalSignatureVerification.disallowedChange',\n            { type, objnum }\n          )\n        }\n      </p>\n    ));\n  };\n\n  const renderTrustVerification = () => {\n    let verificationTimeMessage;\n    switch (timeOfTrustVerificationEnum) {\n      case (TimeMode.e_current):\n        verificationTimeMessage = (\n          translate('digitalSignatureVerification.trustVerification.current')\n        );\n        break;\n      case (TimeMode.e_signing):\n        verificationTimeMessage = (\n          translate('digitalSignatureVerification.trustVerification.signing')\n        );\n        break;\n      case (TimeMode.e_timestamp):\n        verificationTimeMessage = (\n          translate('digitalSignatureVerification.trustVerification.timestamp')\n        );\n        break;\n      default:\n        console.warn(\n          `Unexpected pdftron::PDF::VerificationOptions::TimeMode: ${timeOfTrustVerificationEnum}`\n        );\n    }\n    return trustVerificationResultString ? (\n      <div className=\"trust-verification-result\">\n        <p>\n          {\n            translate(\n              'digitalSignatureVerification.trustVerification.verifiedTrust'\n            )\n          }\n        </p>\n        {\n          /**\n           * @todo Chat with @rastko when he is available to determine what\n           * content from `trustVerificationResultString` could potentially\n           * be important to show to users\n           *\n           * <div>\n           *   <p className='bold'>Trust verification result:</p>\n           *   {\n           *     trustVerificationResultString.split('\\n').map((line, idx) => {\n           *       return (\n           *         <p\n           *           key={`trustVerificationResultString-${idx}`}\n           *           className={line[0] === '\\t' ? '' : 'bold'}\n           *         >\n           *           {line}\n           *         </p>\n           *       );\n           *     })\n           *   }\n           * </div>\n           */\n        }\n        <p>{trustVerificationTime}</p>\n        <p>{verificationTimeMessage}</p>\n      </div>\n    ) : (\n      <p>\n        {\n          translate(\n            'digitalSignatureVerification.trustVerification.noTrustVerification'\n          )\n        }\n      </p>\n    );\n  };\n\n  const renderSignatureDetails = () => {\n    // No additional signature details to render\n    if (!contactInfo && !location && !reason) {\n      return null;\n    }\n    return (\n      <div>\n        <div\n          className=\"title dropdown\"\n          onClick={\n            () => setSignatureDetailsExpanded(!signatureDetailsExpanded)\n          }\n          onKeyPress={\n            () => setSignatureDetailsExpanded(!signatureDetailsExpanded)\n          }\n          role=\"button\"\n          tabIndex={0}\n        >\n          <div\n            className={classNames({\n              arrow: true,\n              expanded: signatureDetailsExpanded,\n            })}\n          >\n            <Icon glyph=\"ic_chevron_right_black_24px\" />\n          </div>\n          <p>\n            {\n              translate(\n                'digitalSignatureVerification.signatureDetails.signatureDetails'\n              )\n            }\n          </p>\n        </div>\n        {\n          signatureDetailsExpanded\n          && (\n            <div className=\"body\">\n              <div>\n                <p className=\"bold\">\n                  {\n                    `${translate('digitalSignatureVerification.signatureDetails.contactInformation')}:`\n                  }\n                </p>\n                <p className=\"result-for-header\">\n                  {\n                    contactInfo\n                    || translate('digitalSignatureVerification.signatureDetails.noContactInformation')\n                  }\n                </p>\n              </div>\n              <div>\n                <p className=\"bold\">\n                  {\n                    `${translate('digitalSignatureVerification.signatureDetails.location')}:`\n                  }\n                </p>\n                <p className=\"result-for-header\">\n                  {\n                    location\n                    || translate('digitalSignatureVerification.signatureDetails.noLocation')\n                  }\n                </p>\n              </div>\n              <div>\n                <p className=\"bold\">\n                  {\n                    `${translate('digitalSignatureVerification.signatureDetails.reason')}:`\n                  }\n                </p>\n                <p className=\"result-for-header\">\n                  {\n                    reason\n                    || translate('digitalSignatureVerification.signatureDetails.noReason')\n                  }\n                </p>\n              </div>\n              {\n                signTime && (\n                  <div>\n                    <p className=\"bold\">\n                      {\n                        `${translate('digitalSignatureVerification.signatureDetails.signingTime')}:`\n                      }\n                    </p>\n                    <p className=\"result-for-header\">\n                      {\n                        signTime\n                        || translate('digitalSignatureVerification.signatureDetails.noSigningTime')\n                      }\n                    </p>\n                  </div>\n                )\n              }\n            </div>\n          )\n        }\n      </div>\n    );\n  };\n\n  const openSignatureModal = () => {\n    dispatch(actions.setSignatureValidationModalWidgetName(name));\n    dispatch(actions.openElement('signatureValidationModal'));\n  };\n\n  /**\n   * Renders a link to open the signature modal\n   */\n  const renderSignaturePropertiesLink = () => {\n    return (\n      <div\n        onClick={openSignatureModal}\n        onKeyPress={openSignatureModal}\n        role=\"button\"\n        tabIndex={0}\n        className=\"link\"\n      >\n        <p className=\"bold underline\">Signature Properties</p>\n      </div>\n    );\n  };\n\n  return (\n    <div\n      className=\"signature-widget-info\"\n    >\n      {signed ? (\n        <React.Fragment>\n          {renderTitle()}\n          {isExpanded && (\n            <div>\n              <div className=\"header\">\n                {\n                  renderVerificationStatus({\n                    isCertification,\n                    verificationStatus,\n                  })\n                }\n                <div className=\"body\">\n                  {\n                    renderPermissionStatus({\n                      isCertification,\n                      ModificationPermissionsStatus,\n                      permissionStatus,\n                      translate,\n                    })\n                  }\n                  {renderDisallowedChanges()}\n                  {renderTrustVerification()}\n                  {renderSignaturePropertiesLink()}\n                </div>\n              </div>\n              <div className=\"header header-with-arrow\">\n                {renderSignatureDetails()}\n              </div>\n            </div>\n          )}\n        </React.Fragment>\n      ) : (\n        <React.Fragment>\n          <div\n            className=\"title link\"\n            tabIndex={0}\n            onClick={() => jumpToWidget(field)}\n            onKeyPress={() => jumpToWidget(field)}\n          >\n            <SignatureIcon />\n            <p>{translate('digitalSignatureVerification.unsignedSignatureField', { fieldName: field.name })}</p>\n          </div>\n        </React.Fragment>\n      )}\n      <WidgetLocator rect={locatorRect} />\n    </div>\n  );\n};\n\nWidgetInfo.propTypes = propTypes;\n\nexport default WidgetInfo;\n","import WidgetInfo, {\n  renderPermissionStatus,\n  renderVerificationStatus,\n} from './WidgetInfo';\n\nexport default WidgetInfo;\nexport {\n  renderPermissionStatus,\n  renderVerificationStatus,\n}\n","import React, {\n  useCallback,\n  useEffect,\n  useState,\n} from 'react';\nimport {\n  useDispatch,\n  useSelector,\n} from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport actions from 'actions';\nimport core from 'core';\nimport selectors from 'selectors';\nimport setVerificationResult from 'helpers/setVerificationResult';\n\nimport Spinner from './Spinner';\nimport WidgetInfo from './WidgetInfo';\n\nimport './SignaturePanel.scss';\n\nconst SignaturePanel = () => {\n  const dispatch = useDispatch();\n  const [fields, setFields] = useState([]);\n  const [showSpinner, setShowSpinner] = useState(false);\n  const [certificateErrorMessage, setCertificateErrorMessage] = useState('');\n  const [document, setDocument] = useState(core.getDocument());\n  const [isDisabled, certificate, trustLists] = useSelector(state => [\n    selectors.isElementDisabled(state, 'signaturePanel'),\n    selectors.getCertificates(state),\n    selectors.getTrustLists(state),\n  ]);\n  const [translate] = useTranslation();\n\n  const onDocumentLoaded = async() => {\n    setDocument(core.getDocument());\n  };\n\n  const onDocumentUnloaded = useCallback(() => {\n    setShowSpinner(true);\n    dispatch(actions.setVerificationResult({}));\n  }, [setShowSpinner, dispatch]);\n\n  useEffect(() => {\n    // This ensures that when the document loads, the state of this component is\n    // updated accordingly\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('documentUnloaded', onDocumentUnloaded);\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded);\n    };\n  }, [onDocumentUnloaded]);\n\n  useEffect(() => {\n    // Need certificates for PDFNet to verify against, and for the document\n    // to be loaded in order to iterate through the signature fields in the\n    // document\n    if (document) {\n      setShowSpinner(true);\n      setVerificationResult(certificate, trustLists, dispatch)\n        .then(async (verificationResult) => {\n          // We need to wait for the annotationsLoaded event, otherwise the\n          // Field will not exist in the document\n          await core.getAnnotationsLoadedPromise();\n          const fieldManager = core.getAnnotationManager().getFieldManager();\n          setFields(Object.keys(verificationResult).map(fieldName => fieldManager.getField(fieldName)));\n          setCertificateErrorMessage('');\n          setShowSpinner(false);\n        })\n        .catch(e => {\n          if (e && e.message) {\n            setCertificateErrorMessage(e.message);\n          } else {\n            console.error(e);\n          }\n        });\n    } else {\n      setShowSpinner(true);\n    }\n  }, [certificate, document, dispatch]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  /**\n   * Returns a JSX element if document loading is not complete, or an error\n   * occurs, otherwise nothing is returned, indicating that information about\n   * one or more signature will be returned from this component\n   */\n  const renderLoadingOrErrors = () => {\n    let result;\n    if (showSpinner) {\n      result = <Spinner/>;\n    } else if (\n      certificateErrorMessage === 'Error reading the local certificate'\n    ) {\n      result = translate('digitalSignatureVerification.panelMessages.localCertificateError');\n    } else if (certificateErrorMessage === 'Download Failed') {\n      result = translate('digitalSignatureVerification.panelMessages.certificateDownloadError');\n    } else if (!fields.length) {\n      result = translate('digitalSignatureVerification.panelMessages.noSignatureFields');\n    } else {\n      /**\n       * If document has completed loading, there are no errors, and there are\n       * signature fields, this function does not need to return anything\n       */\n      return null;\n    }\n\n    return (\n      <div className=\"center\">\n        {result}\n      </div>\n    );\n  };\n\n  return (\n    <div\n      className=\"Panel SignaturePanel\"\n      data-element=\"signaturePanel\"\n    >\n      {renderLoadingOrErrors()}\n      {\n        !showSpinner && fields.length > 0 && (\n          fields.map((field, index) => {\n            return (\n              <WidgetInfo\n                key={index}\n                name={field.name}\n                collapsible\n                field={field}\n              />\n            );\n          })\n        )\n      }\n    </div>\n  );\n};\n\nexport default SignaturePanel;\n","import SignaturePanel from './SignaturePanel';\nimport Spinner from './Spinner';\nimport {\n  renderPermissionStatus,\n  renderVerificationStatus,\n} from './WidgetInfo';\n\nexport default SignaturePanel;\n\nexport {\n  renderPermissionStatus,\n  renderVerificationStatus,\n  SignaturePanel,\n  Spinner,\n};\n","import ResizeBar from './ResizeBar';\n\nexport default ResizeBar;\n","import React, { useEffect, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport Icon from 'components/Icon';\nimport fireEvent from 'helpers/fireEvent';\nimport selectors from 'selectors';\nimport Events from 'constants/events';\n\nimport './ResizeBar.scss';\n\nconst ResizeBar = ({ onResize, minWidth, leftDirection, dataElement }) => {\n  const isDisabled = useSelector(state => selectors.isElementDisabled(state, dataElement));\n  const isMouseDownRef = useRef(false);\n\n  useEffect(() => {\n    // this listener is throttled because the notes panel listens to the panel width\n    // change in order to rerender to have the correct width and we don't want\n    // it to rerender too often\n\n    // Removed throttle for now. It was causing jitterness when resizing.\n    // Maybe throttle is necessary because other components listening to the width would re-render too often?\n    const dragMouseMove = ({ clientX }) => {\n      if (isMouseDownRef.current) {\n        const newWidth = Math.max(minWidth, Math.min(window.innerWidth, leftDirection ? window.innerWidth - clientX : clientX));\n        onResize(newWidth);\n        fireEvent(Events.PANEL_RESIZED, { element: dataElement, width: newWidth });\n      }\n    };\n\n    document.addEventListener('mousemove', dragMouseMove);\n    return () => document.removeEventListener('mousemove', dragMouseMove);\n  }, [leftDirection, minWidth, onResize]);\n\n  useEffect(() => {\n    const finishDrag = () => {\n      isMouseDownRef.current = false;\n    };\n\n    document.addEventListener('mouseup', finishDrag);\n    return () => document.removeEventListener('mouseup', finishDrag);\n  }, []);\n\n  return isDisabled ? null : (\n    <div\n      data-element={dataElement}\n      className=\"resize-bar\"\n      onMouseDown={() => {\n        isMouseDownRef.current = true;\n      }}\n    >\n      <Icon glyph=\"icon-detach-toolbar\" />\n    </div>\n  );\n};\n\nexport default ResizeBar;\n","import React from 'react';\n\nimport ToggleElementButton from \"components/ToggleElementButton\";\nimport Button from \"components/Button\";\nimport \"../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss\";\n\nfunction LeftPanelPageTabsSmall({ onReplace, onExtractPages, onDeletePages }) {\n  return (\n    <div className={`PageControlContainer root small`}>\n      <div className={\"dropdown-menu button-hover\"}>\n        <ToggleElementButton\n          title=\"action.rotate\"\n          element=\"thumbnailsControlRotatePopup\"\n          dataElement=\"thumbnailsControlRotatePopupTrigger\"\n          img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n        />\n        <div className={\"indicator\"}/>\n      </div>\n      <div className={\"dropdown-menu\"}>\n        <ToggleElementButton\n          title=\"action.insertPage\"\n          className={\"dropdown-menu\"}\n          element=\"thumbnailsControlInsertPopup\"\n          dataElement=\"thumbnailsControlInsertPopupTrigger\"\n          img=\"icon-header-page-manipulation-insert-above\"\n        />\n        <div className={\"indicator\"}/>\n      </div>\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlReplace\"\n        img=\"icon-page-replacement\"\n        onClick={onReplace}\n        title=\"action.replace\"\n      />\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlExtract\"\n        img=\"icon-page-manipulation-extract\"\n        onClick={onExtractPages}\n        title=\"action.extract\"\n      />\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlDelete\"\n        img=\"icon-page-manipulation-delete\"\n        onClick={onDeletePages}\n        title=\"action.delete\"\n      />\n      <div className={\"dropdown-menu button-hover\"}>\n        <ToggleElementButton\n          title=\"action.more\"\n          className={\"dropdown-menu\"}\n          element=\"thumbnailsControlManipulatePopup\"\n          dataElement=\"thumbnailsControlManipulatePopupTrigger\"\n          img=\"icon-tool-more\"\n        />\n        <div className={\"indicator\"}/>\n      </div>\n    </div>\n  );\n}\n\nexport default LeftPanelPageTabsSmall;","import React from 'react';\n\nimport ToggleElementButton from \"components/ToggleElementButton\";\nimport Button from \"components/Button\";\n\nfunction LeftPanelPageTabs({ onRotateClockwise, onRotateCounterClockwise, onInsertAbove, onInsertBelow, onReplace, onExtractPages, onDeletePages }) {\n  return (\n    <div className={`PageControlContainer root`}>\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlRotateClockwise\"\n        img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n        onClick={onRotateClockwise}\n        title=\"action.rotateClockwise\"\n      />\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlRotateCounterClockwise\"\n        img=\"icon-header-page-manipulation-page-rotation-counterclockwise-line\"\n        onClick={onRotateCounterClockwise}\n        title=\"action.rotateCounterClockwise\"\n      />\n      <div className={'divider'}/>\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlInsertAbove\"\n        img=\"icon-header-page-manipulation-insert-above\"\n        onClick={onInsertAbove}\n        title=\"action.insertBlankPageAbove\"\n      />\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlInsertBelow\"\n        img=\"icon-header-page-manipulation-insert-below\"\n        onClick={onInsertBelow}\n        title=\"action.insertBlankPageBelow\"\n      />\n      <div className={'divider'}/>\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlReplace\"\n        img=\"icon-page-replacement\"\n        onClick={onReplace}\n        title=\"action.replace\"\n      />\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlExtract\"\n        img=\"icon-page-manipulation-extract\"\n        onClick={onExtractPages}\n        title=\"action.extract\"\n      />\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlDelete\"\n        img=\"icon-page-manipulation-delete\"\n        onClick={onDeletePages}\n        title=\"action.delete\"\n      />\n      <div className={'divider'}/>\n      <div className={\"dropdown-menu button-hover\"}>\n        <ToggleElementButton\n          title=\"action.more\"\n          className={\"dropdown-menu\"}\n          element=\"thumbnailsControlManipulatePopup\"\n          dataElement=\"thumbnailsControlManipulatePopupTrigger\"\n          img=\"icon-tool-more\"\n        />\n        <div className={\"indicator\"}/>\n      </div>\n    </div>\n  );\n}\n\nexport default LeftPanelPageTabs;","import React from 'react';\nimport Button from \"components/Button\";\nimport \"../LeftPanelPageTabs/LeftPanelPageTabsContainer.scss\";\n\nfunction LeftPanelPageTabsRotate({ onRotateClockwise, onRotateCounterClockwise }) {\n  return (\n    <div className={`PageControlContainer root small`}>\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlRotateCounterClockwise\"\n        img=\"icon-header-page-manipulation-page-rotation-counterclockwise-line\"\n        onClick={onRotateCounterClockwise}\n        title=\"action.rotateCounterClockwise\"\n      />\n      <Button\n        className={\"button-hover\"}\n        dataElement=\"thumbnailsControlRotateClockwise\"\n        img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n        onClick={onRotateClockwise}\n        title=\"action.rotateClockwise\"\n      />\n    </div>\n  );\n}\n\nexport default LeftPanelPageTabsRotate;","import React from 'react';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport selectors from 'selectors';\nimport {\n  deletePages,\n  extractPages,\n  insertAbove,\n  insertBelow,\n  noPagesSelectedWarning,\n  replace,\n  rotateClockwise,\n  rotateCounterClockwise\n} from \"helpers/pageManipulationFunctions\";\nimport LeftPanelPageTabsSmall from \"components/LeftPanelPageTabs/LeftPanelPageTabsSmall/LeftPanelPageTabsSmall\";\nimport LeftPanelPageTabs from \"components/LeftPanelPageTabs/LeftPanelPageTabs/LeftPanelPageTabs\";\nimport { workerTypes } from \"constants/types\";\nimport core from \"src/core\";\nimport LeftPanelPageTabsRotate from \"components/LeftPanelPageTabs/LeftPanelPageTabsRotate/LeftPanelPageTabsRotate\";\n\nfunction LeftPanelPageTabsContainer() {\n  const dispatch = useDispatch();\n  const [selectedPageIndexes, leftPanelWidth, deleteModalEnabled] = useSelector(state => [\n    selectors.getSelectedThumbnailPageIndexes(state),\n    selectors.getLeftPanelWidth(state),\n    selectors.pageDeletionConfirmationModalEnabled(state),\n  ]);\n\n  const pageNumbers = selectedPageIndexes.map(index => index + 1);\n\n  const onReplace = () => !noPagesSelectedWarning(pageNumbers, dispatch) && replace(dispatch);\n  const onExtractPages = () => !noPagesSelectedWarning(pageNumbers, dispatch) && extractPages(pageNumbers, dispatch);\n  const onDeletePages = () => !noPagesSelectedWarning(pageNumbers, dispatch) && deletePages(pageNumbers, dispatch, deleteModalEnabled);\n  const onRotateClockwise = () => !noPagesSelectedWarning(pageNumbers, dispatch) && rotateClockwise(pageNumbers);\n  const onRotateCounterClockwise = () => !noPagesSelectedWarning(pageNumbers, dispatch) && rotateCounterClockwise(pageNumbers);\n  const onInsertAbove = () => !noPagesSelectedWarning(pageNumbers, dispatch) && insertAbove(pageNumbers);\n  const onInsertBelow = () => !noPagesSelectedWarning(pageNumbers, dispatch) && insertBelow(pageNumbers);\n\n  const document = core.getDocument();\n  const documentType = document?.type;\n  const isXod = documentType === workerTypes.XOD;\n  const isOffice = documentType === workerTypes.OFFICE || documentType === workerTypes.LEGACY_OFFICE;\n\n  if (isXod || isOffice || document?.isWebViewerServerDocument()) {\n    return (\n      <LeftPanelPageTabsRotate onRotateClockwise={onRotateClockwise} onRotateCounterClockwise={onRotateCounterClockwise} />\n    );\n  }\n  // Breakpoint to convert to popups\n  const breakPoint = 360;\n  const isPanelSmall = leftPanelWidth < breakPoint;\n\n  if (isPanelSmall) {\n    return <LeftPanelPageTabsSmall onReplace={onReplace} onExtractPages={onExtractPages} onDeletePages={onDeletePages} />;\n  }\n\n\n  return (\n    <LeftPanelPageTabs\n      onReplace={onReplace}\n      onExtractPages={onExtractPages}\n      onDeletePages={onDeletePages}\n      onRotateCounterClockwise={onRotateCounterClockwise}\n      onRotateClockwise={onRotateClockwise}\n      onInsertAbove={onInsertAbove}\n      onInsertBelow={onInsertBelow}\n    />\n  );\n}\n\nexport default LeftPanelPageTabsContainer;\n","import LeftPanelPageTabsContainer from \"components/LeftPanelPageTabs/LeftPanelPageTabsContainer\";\n\nexport default LeftPanelPageTabsContainer;","import React from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\n\nimport LeftPanelTabs from 'components/LeftPanelTabs';\nimport ThumbnailsPanel from 'components/ThumbnailsPanel';\nimport OutlinesPanel from 'components/OutlinesPanel';\nimport BookmarksPanel from 'components/BookmarksPanel';\nimport LayersPanel from 'components/LayersPanel';\nimport NotesPanel from 'components/NotesPanel';\nimport FileAttachmentPanel from 'components/FileAttachmentPanel';\nimport SignaturePanel from 'components/SignaturePanel';\nimport CustomElement from 'components/CustomElement';\nimport ResizeBar from 'components/ResizeBar';\nimport Icon from 'components/Icon';\n\nimport core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport useMedia from 'hooks/useMedia';\nimport { isIE } from 'helpers/device';\n\nimport './LeftPanel.scss';\nimport LeftPanelPageTabs from \"components/LeftPanelPageTabs\";\n\nconst LeftPanel = () => {\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const isTabletAndMobile = useMedia(\n    // Media queries\n    ['(max-width: 900px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const [\n    currentToolbarGroup,\n    isHeaderOpen,\n    isToolsHeaderOpen,\n    isOpen,\n    isDisabled,\n    activePanel,\n    customPanels,\n    currentWidth,\n    notesInLeftPanel,\n    isInDesktopOnlyMode,\n    isThumbnailSelectingPages\n  ] = useSelector(\n    state => [\n      selectors.getCurrentToolbarGroup(state),\n      selectors.isElementOpen(state, 'header'),\n      selectors.isElementOpen(state, 'toolsHeader'),\n      selectors.isElementOpen(state, 'leftPanel'),\n      selectors.isElementDisabled(state, 'leftPanel'),\n      selectors.getActiveLeftPanel(state),\n      selectors.getCustomPanels(state),\n      selectors.getLeftPanelWidth(state),\n      selectors.getNotesInLeftPanel(state),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.isThumbnailSelectingPages(state),\n    ],\n    shallowEqual,\n  );\n\n  const minWidth = 264;\n  const dispatch = useDispatch();\n\n  const onDrop = e => {\n    // this is mainly for the thumbnail panel, to prevent the broswer from loading a document that dropped in\n    e.preventDefault();\n  };\n\n  const onDragOver = e => {\n    // when dragging over the \"LeftPanel\", change the cursor to \"Move\" from \"Copy\"\n    e.preventDefault();\n  };\n\n  const getDisplay = panel => (panel === activePanel ? 'flex' : 'none');\n\n  let style = {};\n  if (isInDesktopOnlyMode || !isMobile) {\n    style = { width: `${currentWidth}px`, minWidth: `${currentWidth}px` };\n  }\n\n  const isVisible = !(!isOpen || isDisabled);\n\n  return (\n    <div\n      className={classNames({\n        Panel: true,\n        LeftPanel: true,\n        'closed': !isVisible,\n        'tools-header-open': isToolsHeaderOpen && currentToolbarGroup !== 'toolbarGroup-View',\n        'tools-header-and-header-hidden': !isHeaderOpen && !isToolsHeaderOpen,\n        'thumbnail-panel-active': activePanel === 'thumbnailsPanel',\n        'outlines-panel-active': activePanel === 'outlinesPanel'\n      })}\n      onDrop={onDrop}\n      onDragOver={onDragOver}\n      data-element=\"leftPanel\"\n    >\n      <div\n        className=\"left-panel-container\"\n        style={style}\n      >\n        {!isInDesktopOnlyMode && isMobile &&\n          <div\n            className=\"close-container\"\n          >\n            <div\n              className=\"close-icon-container\"\n              onClick={() => {\n                dispatch(actions.closeElements(['leftPanel']));\n              }}\n            >\n              <Icon\n                glyph=\"ic_close_black_24px\"\n                className=\"close-icon\"\n              />\n            </div>\n          </div>}\n        <div className=\"left-panel-header\">\n          {isThumbnailSelectingPages ? <LeftPanelPageTabs /> : <LeftPanelTabs />}\n        </div>\n        {activePanel === 'thumbnailsPanel' && <ThumbnailsPanel/>}\n        {activePanel === 'outlinesPanel' && <OutlinesPanel />}\n        {activePanel === 'bookmarksPanel' && <BookmarksPanel />}\n        {activePanel === 'layersPanel' && <LayersPanel />}\n        {core.isFullPDFEnabled() && activePanel === 'signaturePanel' && <SignaturePanel />}\n        {activePanel === 'attachmentPanel' && <FileAttachmentPanel />}\n        {notesInLeftPanel && activePanel === 'notesPanel' && <NotesPanel currentLeftPanelWidth={currentWidth} />}\n        {customPanels.map(({ panel }, index) => (\n          <CustomElement\n            key={panel.dataElement || index}\n            className={`Panel ${panel.dataElement}`}\n            display={getDisplay(panel.dataElement)}\n            dataElement={panel.dataElement}\n            render={panel.render}\n          />\n        ))}\n      </div>\n      {(isInDesktopOnlyMode || !isTabletAndMobile) &&\n        <ResizeBar\n          dataElement=\"leftPanelResizeBar\"\n          minWidth={minWidth}\n          onResize={_width => {\n            let maxAllowedWidth = window.innerWidth;\n            // there will be a scroll bar in IE, so we don't allow 100% page width\n            if (isIE) {\n              maxAllowedWidth = maxAllowedWidth - 30;\n            }\n            dispatch(actions.setLeftPanelWidth(Math.min(_width, maxAllowedWidth)));\n          }}\n        />}\n    </div>\n  );\n};\n\nexport default LeftPanel;\n","import LeftPanel from './LeftPanel';\n\nexport default LeftPanel;","import React from 'react';\nimport { withContentRect } from 'react-measure';\nimport PropTypes from 'prop-types';\n\nimport './SearchResult.scss';\nimport VirtualizedList from \"react-virtualized/dist/commonjs/List\";\nimport CellMeasurer, { CellMeasurerCache } from \"react-virtualized/dist/commonjs/CellMeasurer\";\nimport ListSeparator from \"components/ListSeparator\";\n\nconst SearchResultListSeparatorPropTypes = {\n  currentResultIndex: PropTypes.number.isRequired,\n  searchResults: PropTypes.arrayOf(PropTypes.object).isRequired,\n  t: PropTypes.func.isRequired,\n  pageLabels: PropTypes.arrayOf(PropTypes.any).isRequired,\n  isProcessingSearchResults: PropTypes.bool\n};\n\nfunction SearchResultListSeparator(props) {\n  const { currentResultIndex, searchResults, t, pageLabels } = props;\n\n  const previousIndex = currentResultIndex === 0 ? currentResultIndex : currentResultIndex - 1;\n  const currentListItem = searchResults[currentResultIndex];\n  const previousListItem = searchResults[previousIndex];\n\n  const isFirstListItem = previousListItem === currentListItem;\n  const isInDifferentPage = previousListItem.pageNum !== currentListItem.pageNum;\n\n  if (isFirstListItem || isInDifferentPage) {\n    const listSeparatorText = `${t('option.shared.page')} ${pageLabels[currentListItem.pageNum - 1]}`;\n    return (\n      <div role=\"cell\">\n        <ListSeparator>{listSeparatorText}</ListSeparator>\n      </div>\n    );\n  }\n  return null;\n}\n\nSearchResultListSeparator.propTypes = SearchResultListSeparatorPropTypes;\n\nconst SearchResultListItemPropTypes = {\n  result: PropTypes.object.isRequired,\n  currentResultIndex: PropTypes.number.isRequired,\n  activeResultIndex: PropTypes.number.isRequired,\n  onSearchResultClick: PropTypes.func,\n};\n\nfunction SearchResultListItem(props) {\n  const { result, currentResultIndex, activeResultIndex, onSearchResultClick } = props;\n  const { ambientStr, resultStrStart, resultStrEnd, resultStr } = result;\n  const textBeforeSearchValue = ambientStr.slice(0, resultStrStart);\n  const searchValue = ambientStr === '' ? resultStr : ambientStr.slice(resultStrStart, resultStrEnd);\n  const textAfterSearchValue = ambientStr.slice(resultStrEnd);\n  return (\n    <button\n      role=\"cell\"\n      className={`SearchResult ${currentResultIndex === activeResultIndex ? 'selected' : ''}`}\n      onClick={() => {\n        if (onSearchResultClick) {\n          onSearchResultClick(currentResultIndex, result);\n        }\n      }}\n    >\n      {textBeforeSearchValue}\n      <span className=\"search-value\">{searchValue}</span>\n      {textAfterSearchValue}\n    </button>\n  );\n}\nSearchResultListItem.propTypes = SearchResultListItemPropTypes;\n\nconst SearchResultPropTypes = {\n  width: PropTypes.number,\n  height: PropTypes.number,\n  activeResultIndex: PropTypes.number,\n  searchStatus: PropTypes.oneOf(['SEARCH_NOT_INITIATED', 'SEARCH_IN_PROGRESS', 'SEARCH_DONE']),\n  searchResults: PropTypes.arrayOf(PropTypes.object),\n  t: PropTypes.func.isRequired,\n  onClickResult: PropTypes.func,\n  pageLabels: PropTypes.arrayOf(PropTypes.any),\n};\n\nfunction SearchResult(props) {\n  const { height, searchStatus, searchResults, activeResultIndex, t, onClickResult, pageLabels, isProcessingSearchResults } = props;\n  const cellMeasureCache = React.useMemo(() => {\n    return new CellMeasurerCache({ defaultHeight: 50, fixedWidth: true });\n  }, []);\n  const listRef = React.useRef(null);\n\n  if (searchResults.length === 0) {\n    // clear measure cache, when doing a new search\n    cellMeasureCache.clearAll();\n  }\n\n  const rowRenderer = React.useCallback(function rowRendererCallback(rendererOptions) {\n    const { index, key, parent, style } = rendererOptions;\n    const result = searchResults[index];\n    return (\n      <CellMeasurer\n        cache={cellMeasureCache}\n        columnIndex={0}\n        key={key}\n        parent={parent}\n        rowIndex={index}\n      >\n        {({ registerChild }) => (\n          <div role=\"row\" ref={registerChild} style={style}>\n            <SearchResultListSeparator\n              currentResultIndex={index}\n              searchResults={searchResults}\n              pageLabels={pageLabels}\n              t={t}\n            />\n            <SearchResultListItem\n              result={result}\n              currentResultIndex={index}\n              activeResultIndex={activeResultIndex}\n              onSearchResultClick={onClickResult}\n            />\n          </div>\n        )}\n      </CellMeasurer>\n    );\n  }, [cellMeasureCache, searchResults, activeResultIndex, t, pageLabels]);\n\n  React.useEffect(() => {\n    if (listRef) {\n      listRef.current?.scrollToRow(activeResultIndex);\n    }\n  }, [activeResultIndex]);\n\n  if (height == null) { // eslint-disable-line eqeqeq\n    // VirtualizedList requires width and height of the component which is calculated by withContentRect HOC.\n    // On first render when HOC haven't yet set these values, both are undefined, thus having this check here\n    // and skip rendering if values are missing\n    return null;\n  }\n\n  if (searchStatus === 'SEARCH_DONE' \n    && searchResults.length === 0\n    && !isProcessingSearchResults) {\n    return (\n      <div className=\"info\">{t('message.noResults')}</div>\n    );\n  }\n\n  return (\n    <VirtualizedList\n      width={200}\n      height={height}\n      tabIndex={-1}\n      overscanRowCount={10}\n      rowCount={searchResults.length}\n      deferredMeasurementCache={cellMeasureCache}\n      rowHeight={cellMeasureCache.rowHeight}\n      rowRenderer={rowRenderer}\n      ref={listRef}\n    />\n  );\n}\nSearchResult.propTypes = SearchResultPropTypes;\n\nfunction SearchResultWithContentRectHOC(props) {\n  const { measureRef, contentRect, ...rest } = props;\n  const { height } = contentRect.bounds;\n  return (\n    <div className=\"results\" ref={measureRef}>\n      <SearchResult height={height} {...rest} />\n    </div>\n  );\n}\nSearchResultWithContentRectHOC.propTypes = {\n  contentRect: PropTypes.object,\n  measureRef: PropTypes.oneOfType([\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.any })\n  ])\n};\n\nexport default withContentRect('bounds')(SearchResultWithContentRectHOC);\n","import SearchResult from './SearchResult';\n\nexport default SearchResult;\n","import Spinner from './Spinner';\n\nexport default Spinner;\n","import React from 'react';\nimport './Spinner.scss'\n\nconst Spinner = ({ height = '50px', width = '54px' }) => {\n\n    const spinnerStyle = {\n        height,\n        width,\n    }\n\n    return(\n        <div className='spinner' style={spinnerStyle}></div>\n    )\n}\n\nexport default Spinner;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport core from 'core';\nimport { useTranslation } from 'react-i18next';\nimport debounce from 'lodash.debounce';\n\nimport Icon from 'components/Icon';\nimport Choice from '../Choice/Choice';\nimport Spinner from '../Spinner';\nimport './SearchOverlay.scss';\n\nconst propTypes = {\n  isPanelOpen: PropTypes.bool,\n  isSearchOverlayDisabled: PropTypes.bool,\n  searchValue: PropTypes.string,\n  searchStatus: PropTypes.oneOf(['SEARCH_NOT_INITIATED', 'SEARCH_IN_PROGRESS', 'SEARCH_DONE']),\n  isCaseSensitive: PropTypes.bool,\n  isWholeWord: PropTypes.bool,\n  isWildcard: PropTypes.bool,\n  searchResults: PropTypes.arrayOf(PropTypes.object),\n  activeResultIndex: PropTypes.number,\n  setSearchValue: PropTypes.func.isRequired,\n  setCaseSensitive: PropTypes.func.isRequired,\n  setSearchStatus: PropTypes.func.isRequired,\n  setWholeWord: PropTypes.func.isRequired,\n  setWildcard: PropTypes.func.isRequired,\n  executeSearch: PropTypes.func.isRequired,\n  selectNextResult: PropTypes.func,\n  selectPreviousResult: PropTypes.func,\n  isProcessingSearchResults: PropTypes.bool\n};\n\nfunction SearchOverlay(props) {\n  const { t } = useTranslation();\n  const { isSearchOverlayDisabled, searchResults, activeResultIndex, selectNextResult, selectPreviousResult, isProcessingSearchResults } = props;\n  const { searchValue, setSearchValue, executeSearch } = props;\n  const { isCaseSensitive, setCaseSensitive, isWholeWord, setWholeWord, isWildcard, setWildcard, setSearchStatus } = props;\n  const { searchStatus, isPanelOpen } = props;\n\n  const searchTextInputRef = React.useRef();\n  const waitTime = 300;   // Wait time in milliseconds \n\n  React.useEffect(() => {\n    if (searchTextInputRef.current && isPanelOpen) {\n      searchTextInputRef.current.focus();\n    }\n  }, [isPanelOpen]);\n\n  React.useEffect(() => {\n    if(searchValue && searchValue.length > 0) {\n      executeSearch(searchValue, {\n        caseSensitive: isCaseSensitive,\n        wholeWord: isWholeWord,\n        wildcard: isWildcard,\n      });\n    } else {\n      clearSearchResult();\n    }\n  }, [isCaseSensitive, isWholeWord, isWildcard]);\n\n  const debouncedSearch = React.useCallback(\n    debounce((searchValue) => {\n      if(searchValue && searchValue.length > 0) {\n        executeSearch(searchValue, {\n          caseSensitive: isCaseSensitive,\n          wholeWord: isWholeWord,\n          wildcard: isWildcard,\n        });\n      } else {\n        clearSearchResult();\n      }\n    }, waitTime),\n    []\n  );\n\n  const textInputOnChange = (event) => {\n    setSearchValue(event.target.value);\n    debouncedSearch(event.target.value);\n  }\n\n  function clearSearchResult() {\n    core.clearSearchResults();\n    setSearchValue('');\n    setSearchStatus('SEARCH_NOT_INITIATED');\n  }\n\n  const caseSensitiveSearchOptionOnChange = React.useCallback(\n    function caseSensitiveSearchOptionOnChangeCallback(event) {\n      const isChecked = event.target.checked;\n      setCaseSensitive(isChecked);\n    }, [],\n  );\n\n  const wholeWordSearchOptionOnChange = React.useCallback(\n    function wholeWordSearchOptionOnChangeCallback(event) {\n      const isChecked = event.target.checked;\n      setWholeWord(isChecked);\n    }, [],\n  );\n\n  const wildcardOptionOnChange = React.useCallback(\n    function wildcardOptionOnChangeCallback(event) {\n      const isChecked = event.target.checked;\n      setWildcard(isChecked);\n    }, [],\n  );\n\n  const nextButtonOnClick = React.useCallback(\n    function nextButtonOnClickCallback() {\n      if (selectNextResult) {\n        selectNextResult(searchResults, activeResultIndex);\n      }\n    },\n    [selectNextResult, searchResults, activeResultIndex],\n  );\n\n  const previousButtonOnClick = React.useCallback(\n    function previousButtonOnClickCallback() {\n      if (selectPreviousResult) {\n        selectPreviousResult(searchResults, activeResultIndex);\n      }\n    },\n    [selectPreviousResult, searchResults, activeResultIndex],\n  );\n\n  if (isSearchOverlayDisabled) {\n    return null;\n  }\n  const numberOfResultsFound = searchResults ? searchResults.length : 0;\n\n  const showSpinner = (searchStatus === 'SEARCH_DONE' && !isProcessingSearchResults)? (\n    <div>\n      {numberOfResultsFound} {t('message.numResultsFound')}\n    </div>\n  ) : (\n    <Spinner />\n  );\n\n  return (\n    <div className=\"SearchOverlay\">\n      <div className=\"input-container\">\n        <input\n          ref={searchTextInputRef}\n          type=\"text\"\n          autoComplete=\"off\"\n          onChange={textInputOnChange}\n          value={searchValue}\n          placeholder={t('message.searchDocumentPlaceholder')}\n          aria-label={t('message.searchDocumentPlaceholder')}\n          id=\"SearchPanel__input\"\n          tabIndex={isPanelOpen ? 0 : -1}\n        />\n        {(searchValue !== undefined) && searchValue.length > 0 && (\n            <button\n              className=\"clearSearch-button\"\n              onClick={clearSearchResult}\n              aria-label={t('message.searchDocumentPlaceholder')}\n            >\n              <Icon glyph=\"icon-header-clear-search\" />\n            </button>\n          )\n        }\n      </div>\n      <div className=\"options\">\n        <Choice\n          dataElement=\"caseSensitiveSearchOption\"\n          id=\"case-sensitive-option\"\n          checked={isCaseSensitive}\n          onChange={caseSensitiveSearchOptionOnChange}\n          label={t('option.searchPanel.caseSensitive')}\n          tabIndex={isPanelOpen ? 0 : -1}\n        />\n        <Choice\n          dataElement=\"wholeWordSearchOption\"\n          id=\"whole-word-option\"\n          checked={isWholeWord}\n          onChange={wholeWordSearchOptionOnChange}\n          label={t('option.searchPanel.wholeWordOnly')}\n          tabIndex={isPanelOpen ? 0 : -1}\n        />\n        <Choice\n          dataElement=\"wildCardSearchOption\"\n          id=\"wild-card-option\"\n          checked={isWildcard}\n          onChange={wildcardOptionOnChange}\n          label={t('option.searchPanel.wildcard')}\n          tabIndex={isPanelOpen ? 0 : -1}\n        />\n      </div>\n      <div className=\"divider\" />\n      <div className=\"footer\">\n        {searchStatus === 'SEARCH_NOT_INITIATED' || '' ? null : showSpinner}\n        {numberOfResultsFound > 0 && (\n          <div className=\"buttons\">\n            <button className=\"button\" onClick={previousButtonOnClick} aria-label={t('action.prevResult')}>\n              <Icon className=\"arrow\" glyph=\"icon-chevron-left\" />\n            </button>\n            <button className=\"button\" onClick={nextButtonOnClick} aria-label={t('action.nextResult')}>\n              <Icon className=\"arrow\" glyph=\"icon-chevron-right\" />\n            </button>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n\nSearchOverlay.propTypes = propTypes;\n\nexport default SearchOverlay;\n","let searchListeners = [];\nlet overrideSearchExecutionFn;\n\nexport function addSearchListener(searchListener) {\n  searchListeners.push(searchListener);\n}\n\nexport function removeSearchListener(searchListener) {\n  searchListeners = searchListeners.filter(listener => {\n    return listener !== searchListener;\n  });\n}\n\nexport function getSearchListeners() {\n  return [...searchListeners];\n}\n\nexport function clearSearchListeners() {\n  searchListeners = [];\n}\n\nexport function overrideSearchExecution(fn) {\n  overrideSearchExecutionFn = fn;\n}\n\nexport function getOverrideSearchExecution() {\n  return overrideSearchExecutionFn;\n}\n","/**\n * Searches the full document for the texts matching searchValue.\n * @method UI.searchTextFull\n * @param {string} searchValue The text value to look for.\n * @param {object} [options] Search options.\n * @param {boolean} [options.caseSensitive=false] Search with matching cases.\n * @param {boolean} [options.wholeWord=false] Search whole words only.\n * @param {boolean} [options.wildcard=false] Search a string with a wildcard *. For example, *viewer.\n * @param {boolean} [options.regex=false] Search for a regex string. For example, www(.*)com.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.searchTextFull('test', {\n        wholeWord: true\n      });\n    });\n  });\n */\n\nimport actions from 'actions';\nimport core from 'core';\nimport { getSearchListeners } from 'helpers/search';\n\nconst onResultThrottleTimeout = 100;\nlet isStillProcessingResults = false;\n\nfunction buildSearchModeFlag(options = {}) {\n  const SearchMode = core.getSearchMode();\n  let searchMode = SearchMode.PAGE_STOP | SearchMode.HIGHLIGHT;\n\n  if (options.caseSensitive) {\n    searchMode |= SearchMode.CASE_SENSITIVE;\n  }\n  if (options.wholeWord) {\n    searchMode |= SearchMode.WHOLE_WORD;\n  }\n  if (options.wildcard) {\n    searchMode |= SearchMode.WILD_CARD;\n  }\n  if (options.regex) {\n    searchMode |= SearchMode.REGEX;\n  }\n\n  searchMode |= SearchMode.AMBIENT_STRING;\n\n  return searchMode;\n}\n\nexport default function searchTextFull(dispatch) {\n  return function searchTextFull(searchValue, options) {\n    if (dispatch) {\n      // dispatch is only set when doing search through API (instance.searchText())\n      // When triggering search through UI, then redux updates are already handled inside component\n      dispatch(actions.openElement('searchPanel'));\n      dispatch(actions.searchTextFull(searchValue, options));\n    }\n\n    const searchMode = buildSearchModeFlag(options);\n    let doneCallback = () => {};\n\n    let hasActiveResultBeenSet = false;\n    let throttleResults = [];\n    let resultTimeout;\n    function onResult(result) {\n      throttleResults.push(result);\n\n      if (!resultTimeout) {\n        if (!isStillProcessingResults) {\n          isStillProcessingResults = true;\n          if (dispatch) {\n            dispatch(actions.setProcessingSearchResults(true));\n          }\n        }\n\n        resultTimeout = setTimeout(() => {\n          core.displayAdditionalSearchResults(throttleResults);\n          throttleResults = [];\n          resultTimeout = null;\n          doneCallback();\n        }, onResultThrottleTimeout);\n      }\n\n      if (!hasActiveResultBeenSet) {\n        // when full search is done, we make first found result to be the active result\n        core.setActiveSearchResult(result);\n        hasActiveResultBeenSet = true;\n      }\n    }\n\n    function searchInProgressCallback(isSearching) {\n      // execute search listeners when search is complete, thus hooking functionality search in progress event.\n      if (isSearching === false) {\n        doneCallback = () => {\n          if (dispatch) {\n            dispatch(actions.setProcessingSearchResults(false));\n          }\n          const results = core.getPageSearchResults();\n          const searchOptions = {\n            // default values\n            caseSensitive: false,\n            wholeWord: false,\n            wildcard: false,\n            regex: false,\n            searchUp: false,\n            ambientString: true,\n            // override values with those user gave\n            ...options,\n          };\n          const searchListeners = getSearchListeners() || [];\n          searchListeners.forEach(listener => {\n            try {\n              listener(searchValue, searchOptions, results);\n            } catch (e) {\n              console.error(e);\n            }\n          });\n        };\n        isStillProcessingResults = false;\n\n        if (!resultTimeout) {\n          doneCallback();\n        }\n        core.removeEventListener('searchInProgress', searchInProgressCallback);\n      }\n    }\n\n    function onDocumentEnd() {}\n\n    function handleSearchError(error) {\n      dispatch(actions.setProcessingSearchResults(false));\n      console.error(error);\n    }\n    const textSearchInitOptions = {\n      'fullSearch': true,\n      onResult,\n      onDocumentEnd,\n      'onError': handleSearchError,\n    };\n\n    core.clearSearchResults();\n    core.textSearchInit(searchValue, searchMode, textSearchInitOptions);\n    core.addEventListener('searchInProgress', searchInProgressCallback);\n  };\n}\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport SearchOverlay from \"./SearchOverlay\";\nimport { getOverrideSearchExecution } from \"helpers/search\";\nimport searchTextFullFactory from '../../apis/searchTextFull';\nimport core from \"core\";\n\n// exported so that we can test these internal functions\nexport function executeSearch(searchValue, options, dispatch) {\n  const searchOptions = {\n    regex: false,\n    ...options,\n  };\n  if (searchValue !== null && searchValue !== undefined) {\n    // user can override search execution with instance.overrideSearchExecution()\n    // Here we check if user has done that and call that rather than default search execution\n    const overrideSearchExecution = getOverrideSearchExecution();\n    if (overrideSearchExecution) {\n      overrideSearchExecution(searchValue, searchOptions);\n    } else {\n      const searchTextFull = searchTextFullFactory(dispatch);\n      searchTextFull(searchValue, searchOptions);\n    }\n  }\n}\n\nexport function selectNextResult(searchResults = [], activeResultIndex) {\n  if (searchResults.length > 0) {\n    const nextResultIndex = activeResultIndex === searchResults.length - 1 ? 0 : activeResultIndex + 1;\n    core.setActiveSearchResult(searchResults[nextResultIndex]);\n  }\n}\n\nexport function selectPreviousResult(searchResults = [], activeResultIndex) {\n  if (searchResults.length > 0) {\n    const prevResultIndex = activeResultIndex <= 0 ? searchResults.length - 1 : activeResultIndex - 1;\n    core.setActiveSearchResult(searchResults[prevResultIndex]);\n  }\n}\n\nfunction SearchOverlayContainer(props) {\n  const dispatch = useDispatch();\n  return (\n    <SearchOverlay\n      executeSearch={(searchValue, options = {}) => {executeSearch(searchValue, options, dispatch)}}\n      selectNextResult={selectNextResult}\n      selectPreviousResult={selectPreviousResult}\n      {...props}\n    />\n  );\n}\n\nexport default SearchOverlayContainer;\n","import selectors from \"selectors/index\";\nimport actions from \"actions/index\";\nimport { connect } from \"react-redux\";\nimport React from \"react\";\nimport SearchOverlayContainer from \"./SearchOverlayContainer\";\n\nconst mapStateToProps = state => ({\n  isSearchOverlayDisabled: selectors.isElementDisabled(state, 'searchOverlay'),\n  searchValue: selectors.getSearchValue(state),\n  isCaseSensitive: selectors.isCaseSensitive(state),\n  isWholeWord: selectors.isWholeWord(state),\n  isWildcard: selectors.isWildcard(state),\n  isProcessingSearchResults: selectors.isProcessingSearchResults(state),\n});\n\nconst mapDispatchToProps = {\n  closeElements: actions.closeElements,\n  setSearchValue: actions.setSearchValue,\n  setCaseSensitive: actions.setCaseSensitive,\n  setWholeWord: actions.setWholeWord,\n  setWildcard: actions.setWildcard,\n};\n\nfunction SearchOverlayRedux(props) {\n  return (<SearchOverlayContainer {...props} />);\n}\n\nexport default connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(SearchOverlayRedux);\n","import SearchOverlay from './SearchOverlayRedux';\n\nexport default SearchOverlay;\n","export default (className, { isOpen }) =>\n  [className, isOpen ? 'open' : 'closed'].join(' ').trim();\n","// Currently there is no unique id with search result. To match if 2 results are same\n// we check first that they are on same page and then if their coordinates match,\n// then they are considered to be same result\n\nfunction getQuadCoordinates(quad) {\n  // if quads passed are Quad classes, then our minification changes the property names\n  // here we first check if coordnates have the correct props, we use those. if not then we\n  // will call getPoints() function which returns coordinates as JS object.\n  /* eslint-disable eqeqeq */\n  // purposefully check for null and undefined\n  if (quad.x1 != undefined\n    && quad.x2 != undefined\n    && quad.x3 != undefined\n    && quad.x4 != undefined\n    && quad.y1 != undefined\n    && quad.y2 != undefined\n    && quad.y3 != undefined\n    && quad.y4 != undefined) {\n    /* eslint-enable eqeqeq */\n    return quad;\n  }\n\n  if (quad.getPoints) {\n    return quad.getPoints();\n  }\n}\nfunction isSearchResultSame(searchResultA, searchResultB) {\n  if (!searchResultA || !searchResultB) {\n    return false;\n  }\n  const isOnSamePage = searchResultA.pageNum === searchResultB.pageNum;\n  if (!isOnSamePage) {\n    return false;\n  }\n  const quadA = searchResultA.quads[0];\n  const quadB = searchResultB.quads[0];\n  if (!quadA || !quadB) {\n    return false;\n  }\n  const quadACoordinates = getQuadCoordinates(quadA);\n  const quadBCoordinates = getQuadCoordinates(quadB);\n  // if we get coordinates correctly from quad then we use those\n  if (quadACoordinates && quadBCoordinates) {\n    if (\n      quadACoordinates.x1 === quadBCoordinates.x1 &&\n      quadACoordinates.x2 === quadBCoordinates.x2 &&\n      quadACoordinates.x3 === quadBCoordinates.x3 &&\n      quadACoordinates.x4 === quadBCoordinates.x4 &&\n      quadACoordinates.y1 === quadBCoordinates.y1 &&\n      quadACoordinates.y2 === quadBCoordinates.y2 &&\n      quadACoordinates.y3 === quadBCoordinates.y3 &&\n      quadACoordinates.y4 === quadBCoordinates.y4\n    ) {\n      return true;\n    }\n  } else {\n    // if we didn't get the coordinates, we use previous implementation of comparing values as string\n    // this has few problems. If quad has other values than x1, x2... those will be included as well.\n    // The other issue is that Object.values() doesn't guarantee order of values and in case values are in different\n    // order this wont work. Thus we have proper implementation above and fallback to older implementation if it fails\n    return Object.values(quadA).toString() === Object.values(quadB).toString();\n  }\n  return false;\n}\n\nexport default isSearchResultSame;\n","import React from 'react';\nimport core from 'core';\nimport isSearchResultSame from 'helpers/isSearchResultSame';\n\nfunction useSearch() {\n  const [searchResults, setSearchResults] = React.useState([]);\n  const [activeSearchResult, setActiveSearchResult] = React.useState();\n  const [activeSearchResultIndex, setActiveSearchResultIndex] = React.useState(-1);\n  const [searchStatus, setSearchStatus] = React.useState('SEARCH_NOT_INITIATED');\n\n  React.useEffect(() => {\n    // First time useSearch is mounted we check if core has results\n    // and if it has, we make sure those are set. This will make sure if external search is done\n    // that the result will reflect on the UI those set in core\n    const coreSearchResults = core.getPageSearchResults() || [];\n    if (coreSearchResults.length > 0) {\n      const activeSearchResult = core.getActiveSearchResult();\n      if (activeSearchResult) {\n        const newActiveSearchResultIndex = coreSearchResults.findIndex(searchResult => {\n          return isSearchResultSame(searchResult, activeSearchResult);\n        });\n        setSearchResults(coreSearchResults);\n        if (newActiveSearchResultIndex >= 0) {\n          setActiveSearchResult(coreSearchResults[newActiveSearchResultIndex]);\n          setActiveSearchResultIndex(newActiveSearchResultIndex);\n        }\n      } else {\n        setSearchResults(coreSearchResults);\n        setActiveSearchResult(coreSearchResults[0]);\n        setActiveSearchResultIndex(0);\n      }\n    }\n  }, []);\n\n  React.useEffect(() => {\n    function activeSearchResultChanged(newActiveSearchResult) {\n      const coreSearchResults = core.getPageSearchResults() || [];\n      const newActiveSearchResultIndex = coreSearchResults.findIndex(searchResult => {\n        return isSearchResultSame(searchResult, newActiveSearchResult);\n      });\n      setActiveSearchResult(newActiveSearchResult);\n      setActiveSearchResultIndex(newActiveSearchResultIndex);\n    }\n\n    function searchResultsChanged(newSearchResults = []) {\n      setSearchResults(newSearchResults);\n      if (newSearchResults && newSearchResults.length === 0) {\n        setActiveSearchResult(undefined);\n        setActiveSearchResultIndex(-1);\n      }\n    }\n\n    function searchInProgressEventHandler(isSearching) {\n      if (isSearching === undefined || isSearching === null) {\n        // if isSearching is not passed at all, we consider that to mean that search was reset to original state\n        setSearchStatus('SEARCH_NOT_INITIATED');\n      } else if (isSearching) {\n        setSearchStatus('SEARCH_IN_PROGRESS');\n      } else {\n        setSearchStatus('SEARCH_DONE');\n      }\n    }\n    core.addEventListener('activeSearchResultChanged', activeSearchResultChanged);\n    core.addEventListener('searchResultsChanged', searchResultsChanged);\n    core.addEventListener('searchInProgress', searchInProgressEventHandler);\n    return function useSearchEffectCleanup() {\n      core.removeEventListener('activeSearchResultChanged', activeSearchResultChanged);\n      core.removeEventListener('searchResultsChanged', searchResultsChanged);\n      core.removeEventListener('searchInProgress', searchInProgressEventHandler);\n    };\n  }, [setActiveSearchResult, setActiveSearchResultIndex, setSearchStatus]);\n\n  return {\n    searchStatus,\n    searchResults,\n    activeSearchResult,\n    activeSearchResultIndex,\n    setSearchStatus,\n  };\n}\n\nexport default useSearch;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nimport SearchResult from 'components/SearchResult';\nimport SearchOverlay from 'components/SearchOverlay';\nimport Icon from 'components/Icon';\nimport getClassName from 'helpers/getClassName';\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport './SearchPanel.scss';\nimport useSearch from \"hooks/useSearch\";\n\nconst propTypes = {\n  isOpen: PropTypes.bool,\n  isMobile: PropTypes.bool,\n  pageLabels: PropTypes.array,\n  currentWidth: PropTypes.number,\n  closeSearchPanel: PropTypes.func,\n  setActiveResult: PropTypes.func,\n  isInDesktopOnlyMode: PropTypes.bool,\n  isProcessingSearchResults: PropTypes.bool\n};\n\nfunction noop() { }\n\nfunction SearchPanel(props) {\n  const {\n    isOpen,\n    currentWidth,\n    pageLabels,\n    closeSearchPanel = noop,\n    setActiveResult = noop,\n    isMobile = false,\n    isInDesktopOnlyMode,\n    isProcessingSearchResults\n  } = props;\n\n  const { t } = useTranslation();\n  const { searchStatus, searchResults, activeSearchResultIndex, setSearchStatus } = useSearch();\n\n  const onCloseButtonClick = React.useCallback(function onCloseButtonClick() {\n    if (closeSearchPanel) {\n      closeSearchPanel();\n    }\n  }, [closeSearchPanel]);\n\n  const onClickResult = React.useCallback(function onClickResult(resultIndex, result) {\n    setActiveResult(result);\n    if (!isInDesktopOnlyMode && isMobile) {\n      closeSearchPanel();\n    }\n  }, [closeSearchPanel, isMobile]);\n\n  const className = getClassName('Panel SearchPanel', { isOpen });\n  const style = !isInDesktopOnlyMode && isMobile ? {} : { width: `${currentWidth}px`, minWidth: `${currentWidth}px` };\n\n  return (\n    <DataElementWrapper\n      className={className}\n      dataElement=\"searchPanel\"\n      style={style}\n    >\n      {!isInDesktopOnlyMode && isMobile &&\n        <div\n          className=\"close-container\"\n        >\n          <button\n            className=\"close-icon-container\"\n            onClick={onCloseButtonClick}\n          >\n            <Icon\n              glyph=\"ic_close_black_24px\"\n              className=\"close-icon\"\n            />\n          </button>\n        </div>}\n      <SearchOverlay\n        searchStatus={searchStatus}\n        setSearchStatus={setSearchStatus}\n        searchResults={searchResults}\n        activeResultIndex={activeSearchResultIndex}\n        isPanelOpen={isOpen}\n      />\n      <SearchResult\n        t={t}\n        searchStatus={searchStatus}\n        searchResults={searchResults}\n        activeResultIndex={activeSearchResultIndex}\n        onClickResult={onClickResult}\n        pageLabels={pageLabels}\n        isProcessingSearchResults={isProcessingSearchResults}\n      />\n    </DataElementWrapper>\n  );\n}\n\nSearchPanel.propTypes = propTypes;\n\nexport default SearchPanel;\n","import React from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport useMedia from 'hooks/useMedia';\nimport SearchPanel from './SearchPanel';\n\nfunction SearchPanelContainer(props) {\n  const isMobile = useMedia(['(max-width: 640px)'],[true], false);\n\n  const [isOpen, currentWidth, pageLabels, shouldClearSearchPanelOnClose, isInDesktopOnlyMode, isProcessingSearchResults] = useSelector(state => [\n    selectors.isElementOpen(state, 'searchPanel'),\n    selectors.getSearchPanelWidth(state),\n    selectors.getPageLabels(state),\n    selectors.shouldClearSearchPanelOnClose(state),\n    selectors.isInDesktopOnlyMode(state),\n    selectors.isProcessingSearchResults(state),\n  ], shallowEqual);\n\n  const dispatch = useDispatch();\n  const closeSearchPanel = React.useCallback(function closeSearchPanel() {\n    dispatch(actions.closeElements(['searchPanel']));\n  }, [dispatch]);\n\n  const clearSearchInputValue = React.useCallback(function clearSearchInputValue() {\n    dispatch(actions.setSearchValue(''));\n  }, [dispatch]);\n\n  const setActiveResult = React.useCallback(function setActiveResult(result) {\n    core.setActiveSearchResult(result);\n  }, []);\n\n  /*\n  React.useEffect(function SearchPanelVisibilityChangedEffect() {\n    function clearSearchResultsOnPanelClose(event) {\n      if (!event && !event.detail) {\n        return;\n      }\n      const { detail } = event;\n      if (detail.element === 'searchPanel' && detail.isVisible === false) {\n        // clear search results when search panel is closed\n        core.clearSearchResults();\n        clearSearchInputValue();\n      }\n    }\n    if (isMobile) {\n      // for mobile we want to keep results in panel as search panel is on top of the content\n      // and user will need to close the panel to view the content.\n      return;\n    }\n    if (!shouldClearSearchPanelOnClose) {\n      return;\n    }\n    window.addEventListener('visibilityChanged',  clearSearchResultsOnPanelClose);\n    return function SearchPanelVisibilityChangedEffectCleanUp() {\n      window.removeEventListener('visibilityChanged',  clearSearchResultsOnPanelClose);\n    };\n  }, [isMobile, clearSearchInputValue, shouldClearSearchPanelOnClose]);\n   */\n\n  React.useEffect(function clearSearchResult() {\n    if (!isInDesktopOnlyMode && isMobile) {\n      // for mobile we want to keep results in panel as search panel is on top of the content\n      // and user will need to close the panel to view the content.\n      return;\n    }\n\n    if (!isOpen && shouldClearSearchPanelOnClose) {\n      core.clearSearchResults();\n      clearSearchInputValue();\n    }\n  }, [isMobile, isOpen, shouldClearSearchPanelOnClose, isInDesktopOnlyMode]);\n\n  const combinedProps = {\n    ...props,\n    isOpen,\n    currentWidth,\n    pageLabels,\n    closeSearchPanel,\n    setActiveResult,\n    isMobile,\n    isInDesktopOnlyMode,\n    isProcessingSearchResults\n  };\n\n  return (\n    <SearchPanel {...combinedProps} />\n  );\n}\n\nexport default SearchPanelContainer;\n","import SearchPanelContainer from './SearchPanelContainer';\n\nexport default SearchPanelContainer;\n","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport ResizeBar from 'components/ResizeBar';\nimport selectors from 'selectors';\nimport useMedia from 'hooks/useMedia';\nimport classNames from 'classnames';\n\nimport './RightPanel.scss';\n\nconst RightPanel = ({ children, dataElement, onResize }) => {\n  const [\n    currentToolbarGroup,\n    isHeaderOpen,\n    isToolsHeaderOpen,\n    isOpen,\n    isDisabled,\n    isInDesktopOnlyMode\n  ] = useSelector(\n    state => [\n      selectors.getCurrentToolbarGroup(state),\n      selectors.isElementOpen(state, 'header'),\n      selectors.isElementOpen(state, 'toolsHeader'),\n      selectors.isElementOpen(state, dataElement),\n      selectors.isElementDisabled(state, dataElement),\n      selectors.isInDesktopOnlyMode(state)\n    ],\n    shallowEqual,\n  );\n\n  const isTabletAndMobile = useMedia(\n    // Media queries\n    ['(max-width: 900px)'],\n    [true],\n    // Default value\n    false,\n  );\n  const isVisible = isOpen && !isDisabled;\n\n  return (\n    <div\n      className={classNames({\n        'right-panel': true,\n        'closed': !isVisible,\n        'tools-header-open': isToolsHeaderOpen && currentToolbarGroup !== 'toolbarGroup-View',\n        'tools-header-and-header-hidden': !isHeaderOpen && !isToolsHeaderOpen\n      })}\n    >\n      {(isInDesktopOnlyMode || !isTabletAndMobile) &&\n        <ResizeBar\n          dataElement={`${dataElement}ResizeBar`}\n          minWidth={293}\n          onResize={onResize}\n          leftDirection\n        />}\n      {children}\n    </div>\n  );\n};\n\nexport default RightPanel;\n","import RightPanel from './RightPanel';\n\nexport default RightPanel;","// this property does not have to do with rendering so it doesn't need to be in redux\nlet toolDefaultStyleUpdateFromAnnotationPopupEnabled = true;\n\n/**\n * Enables syncing of annotation style updates to the associated tool that created the annotation.\n * Note that this is enabled by default.\n * @method UI.enableToolDefaultStyleUpdateFromAnnotationPopup\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableToolDefaultStyleUpdateFromAnnotationPopup();\n  });\n */\nexport function enableToolDefaultStyleUpdateFromAnnotationPopup() {\n  toolDefaultStyleUpdateFromAnnotationPopupEnabled = true;\n}\n\n/**\n * Disables syncing of annotation style updates to the associated tool that created the annotation.\n * So if an annotation's style is changed the tool default styles will not be updated.\n * @method UI.disableToolDefaultStyleUpdateFromAnnotationPopup\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableToolDefaultStyleUpdateFromAnnotationPopup();\n  });\n */\nexport function disableToolDefaultStyleUpdateFromAnnotationPopup() {\n  toolDefaultStyleUpdateFromAnnotationPopupEnabled = false;\n}\n\nexport function isToolDefaultStyleUpdateFromAnnotationPopupEnabled() {\n  return toolDefaultStyleUpdateFromAnnotationPopupEnabled;\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Measure from 'react-measure';\n\nimport StylePopup from 'components/StylePopup';\n\nimport core from 'core';\nimport getClassName from 'helpers/getClassName';\nimport setToolStyles from 'helpers/setToolStyles';\nimport { isMobile } from 'helpers/device';\nimport { getDataWithKey, mapToolNameToKey, mapAnnotationToKey } from 'constants/map';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { isToolDefaultStyleUpdateFromAnnotationPopupEnabled } from '../../apis/toolDefaultStyleUpdateFromAnnotationPopup';\n\nimport './AnnotationStylePopup.scss';\n\nclass AnnotationStylePopup extends React.Component {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    annotation: PropTypes.object.isRequired,\n    style: PropTypes.object.isRequired,\n    closeElement: PropTypes.func.isRequired,\n  };\n\n  handleSliderChange = (property, value) => {\n    const { annotation } = this.props;\n    const annotationManager = core.getAnnotationManager();\n\n    annotation[property] = value\n    annotationManager.redrawAnnotation(annotation)\n  }\n\n  handlePropertyChange = (property, value) => {\n    const { annotation } = this.props;\n\n    core.setAnnotationStyles(annotation, {\n      [property]: value,\n    });\n  }\n\n  handleStyleChange = (property, value) => {\n    const { annotation } = this.props;\n\n    core.setAnnotationStyles(annotation, {\n      [property]: value,\n    });\n\n    if (isToolDefaultStyleUpdateFromAnnotationPopupEnabled()) {\n      setToolStyles(annotation.ToolName, property, value);\n    }\n  };\n\n  handleRichTextStyleChange = (property, value) => {\n    const { annotation } = this.props;\n\n    core.updateAnnotationRichTextStyle(annotation, { [property]: value });\n  }\n\n  handleLineStyleChange = (section, value) => {\n    const { annotation } = this.props;\n\n    let lineStyle = '';\n    if (section === 'start') {\n      annotation.setStartStyle(value);\n      lineStyle = 'StartLineStyle';\n    } else if (section === 'end') {\n      annotation.setEndStyle(value);\n      lineStyle = 'EndLineStyle';\n    }\n\n    if (isToolDefaultStyleUpdateFromAnnotationPopupEnabled()) {\n      setToolStyles(annotation.ToolName, lineStyle, value);\n    }\n\n    core.getAnnotationManager().redrawAnnotation(annotation);\n  };\n\n  handleClick = e => {\n    // see the comments above handleClick in ToolStylePopup.js\n    if (isMobile() && e.target === e.currentTarget) {\n      this.props.closeElement('annotationPopup');\n    }\n  }\n\n  handleResize = () => {\n    const { onResize } = this.props;\n    onResize && onResize();\n  }\n\n  render() {\n    const { isDisabled, annotation, style } = this.props;\n    const isFreeText =\n      annotation instanceof window.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() === window.Annotations.FreeTextAnnotation.Intent.FreeText;\n    const isMeasure = !!annotation.Measure;\n    let properties = {};\n    const className = getClassName('Popup AnnotationStylePopup', this.props);\n    const colorMapKey = mapAnnotationToKey(annotation);\n    const isRedaction = annotation instanceof window.Annotations.RedactionAnnotation;\n    const showLineStyleOptions = getDataWithKey(mapToolNameToKey(annotation.ToolName)).hasLineEndings;\n\n    if (isDisabled) {\n      return null;\n    }\n\n    if (showLineStyleOptions) {\n      properties = {\n        StartLineStyle: annotation.getStartStyle(),\n        EndLineStyle: annotation.getEndStyle(),\n      }\n    }\n\n    if (isFreeText) {\n      const richTextStyles = annotation.getRichTextStyle();\n      properties = {\n        Font: annotation.Font,\n        FontSize: annotation.FontSize,\n        TextAlign: annotation.TextAlign,\n        TextVerticalAlign: annotation.TextVerticalAlign,\n        bold: richTextStyles?.[0]['font-weight'] === 'bold' ?? false,\n        italic: richTextStyles?.[0]['font-style'] === 'italic' ?? false,\n        underline: richTextStyles?.[0]['text-decoration']?.includes('underline') || richTextStyles?.[0]['text-decoration']?.includes('word'),\n        strikeout: richTextStyles?.[0]['text-decoration']?.includes('line-through') ?? false,\n      };\n    }\n\n    if (isRedaction) {\n      properties = {\n        OverlayText: annotation['OverlayText'],\n        Font: annotation['Font'],\n        FontSize: annotation['FontSize'],\n        TextAlign: annotation['TextAlign']\n      };\n    }\n\n    return (\n      <Measure\n        onResize={this.handleResize}\n      >\n        {({ measureRef }) => (\n          <div\n            className={className}\n            data-element=\"annotationStylePopup\"\n            onClick={this.handleClick}\n            ref={measureRef}\n          >\n            {/* Do not show checkbox for ellipse as snap mode does not exist for it */}\n            <StylePopup\n              hideSnapModeCheckbox={(annotation instanceof window.Annotations.EllipseAnnotation || !core.isFullPDFEnabled())}\n              colorMapKey={colorMapKey}\n              style={style}\n              isFreeText={isFreeText}\n              isMeasure={isMeasure}\n              onStyleChange={this.handleStyleChange}\n              onSliderChange={this.handleSliderChange}\n              onPropertyChange={this.handlePropertyChange}\n              disableSeparator\n              properties={properties}\n              onRichTextStyleChange={this.handleRichTextStyleChange}\n              isRedaction={isRedaction}\n              showLineStyleOptions={showLineStyleOptions}\n              onLineStyleChange={this.handleLineStyleChange}\n            />\n          </div>\n        )}\n      </Measure>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  isDisabled: selectors.isElementDisabled(state, 'annotationStylePopup'),\n});\n\nconst mapDispatchToProps = {\n  closeElement: actions.closeElement,\n};\n\nexport default connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(AnnotationStylePopup);\n","import AnnotationStylePopup from './AnnotationStylePopup';\n\nexport default AnnotationStylePopup;","import React, { useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst DatePicker = ({ onClick, annotation, onDatePickerShow }) => {\n  const dateRef = useRef(null);\n  const dateContainerRef = useRef(null);\n  useEffect(() => {\n    let datePicker;\n    const getDatePicker = async () => {\n      datePicker = await window.Core.createDatePicker({\n        field: dateRef.current,\n        onClick,\n        container: dateContainerRef.current,\n        format: annotation.getDateFormat(),\n      });\n      onDatePickerShow(true);\n    };\n    getDatePicker();\n\n    return () => {\n      datePicker.destroy();\n      datePicker = null;\n      onDatePickerShow(false);\n    };\n  }, []);\n  return (\n    <div data-element=\"datePickerContainer\">\n      <div ref={dateRef} />\n      <div ref={dateContainerRef}/>\n    </div>\n  );\n};\n\nDatePicker.propTypes = {\n  onClick: PropTypes.func.isRequired,\n  annotation: PropTypes.object.isRequired,\n  onDatePickerShow: PropTypes.func.isRequired\n};\n\nexport default DatePicker;\n\n","import DatePicker from './DatePicker';\n\nexport default DatePicker;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector, shallowEqual } from 'react-redux';\n\nimport ToolButton from 'components/ToolButton';\nimport ToolGroupButton from 'components/ToolGroupButton';\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport ActionButton from 'components/ActionButton';\nimport StatefulButton from 'components/StatefulButton';\nimport CustomElement from 'components/CustomElement';\n\nimport selectors from 'selectors';\n\nconst propTypes = {\n  // The data element of the popup component.\n  // Used to grab button props from redux and use those props to override the existing ones, if there're any\n  dataElement: PropTypes.string.isRequired,\n  // An object that maps an item's dataElement to a functional React component\n  children: PropTypes.arrayOf(PropTypes.any).isRequired,\n};\n\nconst CustomizablePopup = ({ dataElement, children }) => {\n  const items = useSelector(\n    state => selectors.getPopupItems(state, dataElement),\n    shallowEqual,\n  );\n\n  const childrenArray = React.Children.toArray(children);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // give a error message in the console if a child's dataElement in the childrenArray isn't in the redux state\n    childrenArray.forEach(child => {\n      const found = items.some(\n        ({ dataElement }) => dataElement === child.props.dataElement,\n      );\n      if (!found) {\n        const error = `\n        A React component with dataElement ${child.props.dataElement} won't be rendered because it isn't in the redux state. Modify initialState.js like below to fix this issue:\n\n        {\n          viewer: {\n            ...,\n            ${dataElement}: [\n              ...,\n              { dataElement: '${child.props.dataElement}' },\n            ]\n          }\n        }\n      `;\n        console.error(error.replace(/\\s+/, ''));\n      }\n    });\n  }\n\n  return items.map((item, i) => {\n    const { dataElement, type, hidden } = item;\n    const key = `${type}-${dataElement || i}`;\n    const mediaQueryClassName = hidden\n      ?.map(screen => `hide-in-${screen}`)\n      .join(' ');\n    let component = childrenArray.find(\n      child => child.props.dataElement === dataElement,\n    );\n\n    // duplicate code in HeaderItems.js, must clean up after 6.0\n    if (!component) {\n      const props = { ...item, mediaQueryClassName };\n\n      if (type === 'toolButton') {\n        component = <ToolButton {...props} />;\n      }\n\n      if (type === 'toolGroupButton') {\n        component = <ToolGroupButton {...props} />;\n      }\n\n      if (type === 'toggleElementButton') {\n        component = <ToggleElementButton {...props} />;\n      }\n\n      if (type === 'actionButton') {\n        component = <ActionButton {...props} />;\n      }\n\n      if (type === 'statefulButton') {\n        component = <StatefulButton {...props} />;\n      }\n\n      if (type === 'customElement') {\n        component = <CustomElement {...props} />;\n      }\n\n      if (type === 'spacer' || type === 'divider') {\n        component = (\n          <div className={`${type} ${mediaQueryClassName}`} {...props} />\n        );\n      }\n    }\n\n    return component\n      ? React.cloneElement(component, {\n        key,\n      })\n      : null;\n  });\n};\n\nCustomizablePopup.propTypes = propTypes;\n\nexport default CustomizablePopup;\n","import CustomizablePopup from './CustomizablePopup';\n\nexport default CustomizablePopup;","import core from 'core';\nimport i18next from 'i18next';\n\nimport actions from 'actions';\nimport { fireError } from 'helpers/fireEvent';\nimport downloadPdf from 'helpers/downloadPdf';\n\nfunction noop() { }\n\nexport default (annotations, onRedactionCompleted = noop) => dispatch => {\n  if (core.isWebViewerServerDocument()) {\n    // when are using Webviewer Server, it'll download the redacted document\n    return webViewerServerApply(annotations, dispatch);\n  }\n  return webViewerApply(annotations, onRedactionCompleted, dispatch);\n};\n\nconst webViewerServerApply = (annotations, dispatch) =>\n  core.applyRedactions(annotations).then(results => {\n    if (results && results.url) {\n      return downloadPdf(dispatch, {\n        filename: 'redacted.pdf',\n        includeAnnotations: true,\n        externalURL: results.url,\n      });\n    }\n    console.warn('WebViewer Server did not return a valid result');\n  });\n\nconst webViewerApply = (annotations, onRedactionCompleted, dispatch) => {\n  const message = i18next.t('warning.redaction.applyMessage');\n  const title = i18next.t('warning.redaction.applyTile');\n  const confirmBtnText = i18next.t('action.apply');\n\n  const warning = {\n    message,\n    title,\n    confirmBtnText,\n    onConfirm: () => {\n      core.applyRedactions(annotations)\n        .then(() => {\n          onRedactionCompleted();\n        })\n        .catch(err => fireError(err));\n      return Promise.resolve();\n    },\n  };\n\n  return dispatch(actions.showWarningMessage(warning));\n};\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport Draggable from 'react-draggable';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport ActionButton from 'components/ActionButton';\nimport AnnotationStylePopup from 'components/AnnotationStylePopup';\nimport DatePicker from 'src/components/DatePicker';\nimport CustomizablePopup from 'components/CustomizablePopup';\n\nimport core from 'core';\nimport { getAnnotationPopupPositionBasedOn } from 'helpers/getPopupPosition';\nimport getAnnotationStyles from 'helpers/getAnnotationStyles';\nimport applyRedactions from 'helpers/applyRedactions';\nimport { isMobile, isIE } from 'helpers/device';\nimport { getOpenedWarningModal, getOpenedColorPicker, getDatePicker } from 'helpers/getElements';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './AnnotationPopup.scss';\nimport getHashParameters from 'helpers/getHashParameters';\n\nconst AnnotationPopup = () => {\n  const [\n    isDisabled,\n    isOpen,\n    isNotesPanelDisabled,\n    isAnnotationStylePopupDisabled,\n    popupItems,\n    isNotesPanelOpen,\n    isMultiTab,\n    tabManager,\n    tabs,\n  ] = useSelector(\n    state => [\n      selectors.isElementDisabled(state, 'annotationPopup'),\n      selectors.isElementOpen(state, 'annotationPopup'),\n      selectors.isElementDisabled(state, 'notesPanel'),\n      selectors.isElementDisabled(state, 'annotationStylePopup'),\n      selectors.getPopupItems(state, 'annotationPopup'),\n      selectors.isElementOpen(state, 'notesPanel'),\n      selectors.getIsMultiTab(state),\n      selectors.getTabManager(state),\n      selectors.getTabs(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n  const [position, setPosition] = useState({ left: 0, top: 0 });\n  // first annotation in the array when there're multiple annotations selected\n  const [firstAnnotation, setFirstAnnotation] = useState(null);\n  const [selectedMultipleAnnotations, setSelectedMultipleAnnotations] = useState(false);\n  const [canModify, setCanModify] = useState(false);\n  const [isStylePopupOpen, setIsStylePopupOpen] = useState(false);\n  const [isDatePickerOpen, setDatePickerOpen] = useState(false);\n  const [isDatePickerMount, setDatePickerMount] = useState(false);\n  const [hasAssociatedLink, setHasAssociatedLink] = useState(true);\n  const [shortCutKeysFor3DVisible, setShortCutKeysFor3DVisible] = useState(false);\n  const popupRef = useRef();\n  const [includesFormFieldAnnotation, setIncludesFormFieldAnnotation] = useState(false);\n  const [stylePopupRepositionFlag, setStylePopupRepositionFlag] = useState(false);\n\n  // helper function to get all the link annotations that are grouped with the passed in annotation\n  const getGroupedLinkAnnotations = annotation => {\n    const groupedLinks = core.getAnnotationManager().getGroupAnnotations(annotation).filter(groupedAnnotation => {\n      return groupedAnnotation instanceof Annotations.Link;\n    });\n    return groupedLinks;\n  };\n\n  useOnClickOutside(popupRef, e => {\n\n    const notesPanel = document.querySelector('[data-element=\"notesPanel\"]');\n    const clickedInNotesPanel = notesPanel?.contains(e.target);\n    const datePicker = getDatePicker();\n    const warningModal = getOpenedWarningModal();\n    const colorPicker = getOpenedColorPicker();\n\n    // the notes panel has mousedown handlers to handle the opening/closing states of this component\n    // we don't want this handler to run when clicked in the notes panel otherwise the opening/closing states may mess up\n    // for example: click on a note will call core.selectAnnotation which triggers the annotationSelected event\n    // and opens this component. If we don't exclude the notes panel this handler will run and close it after\n    if (!clickedInNotesPanel && !warningModal && !colorPicker && !datePicker) {\n      dispatch(actions.closeElement('annotationPopup'));\n    }\n  });\n\n  useEffect(() => {\n    if (firstAnnotation) {\n      const linkAnnotations = getGroupedLinkAnnotations(firstAnnotation);\n      setHasAssociatedLink(!!linkAnnotations.length);\n    }\n  }, [firstAnnotation]);\n\n  useEffect(() => {\n    // calling this function will always rerender this component\n    // because the position state always has a new object reference\n    const setPopupPositionAndShow = () => {\n      if (popupRef.current && popupItems.length > 0) {\n        setPosition(getAnnotationPopupPositionBasedOn(firstAnnotation, popupRef));\n        dispatch(actions.openElement('annotationPopup'));\n      }\n    };\n\n    if (firstAnnotation || isStylePopupOpen || isDatePickerMount) {\n      setPopupPositionAndShow();\n    }\n\n    const onMouseLeftUp = e => {\n      // clicking on the selected annotation is considered clicking outside of this component\n      // so this component will close due to useOnClickOutside\n      // this handler is used to make sure that if we click on the selected annotation, this component will show up again\n      if (firstAnnotation) {\n        const annotUnderMouse = core.getAnnotationByMouseEvent(e);\n\n        if (annotUnderMouse === firstAnnotation) {\n          setPopupPositionAndShow();\n        }\n\n        // clicking on full page redactions should close the stylePopup if it is already open\n        if (firstAnnotation['redactionType'] === 'fullPage' && isStylePopupOpen){\n          setIsStylePopupOpen(false);\n          dispatch(actions.closeElement('annotationPopup'));\n        }\n      }\n    };\n\n    const onAnnotationChanged = (annotations, action) => {\n      if (!core.isAnnotationSelected(firstAnnotation)) {\n        return;\n      }\n      if (action === 'modify') {\n        setPopupPositionAndShow();\n      }\n      const hasLinkAnnotation = annotations.some(annotation => annotation instanceof Annotations.Link);\n      if (!hasLinkAnnotation) {\n        return;\n      }\n      if (action === 'add') {\n        setHasAssociatedLink(true);\n      }\n      if (action === 'delete') {\n        setHasAssociatedLink(false);\n      }\n    };\n\n    const onUpdateAnnotationPermission = () => {\n      if (firstAnnotation) {\n        setCanModify(core.canModify(firstAnnotation));\n      }\n    };\n\n    core.addEventListener('mouseLeftUp', onMouseLeftUp);\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('updateAnnotationPermission', onUpdateAnnotationPermission);\n    return () => {\n      core.removeEventListener('mouseLeftUp', onMouseLeftUp);\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('updateAnnotationPermission', onUpdateAnnotationPermission);\n    };\n  }, [dispatch, canModify, firstAnnotation, isStylePopupOpen, popupItems, isDatePickerMount, stylePopupRepositionFlag]);\n\n  useEffect(() => {\n    const closeAndReset = () => {\n      dispatch(actions.closeElement('annotationPopup'));\n      setPosition({ left: 0, top: 0 });\n      setFirstAnnotation(null);\n      setIncludesFormFieldAnnotation(false);\n      setCanModify(false);\n      setIsStylePopupOpen(false);\n      setDatePickerOpen(false);\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      if (action === 'selected' && annotations.length && annotations[0].ToolName !== window.Core.Tools.ToolNames.CROP) {\n        setFirstAnnotation(annotations[0]);\n        setSelectedMultipleAnnotations(annotations.length > 1);\n        setIncludesFormFieldAnnotation(annotations.some(annotation => annotation.isFormFieldPlaceholder()));\n        setCanModify(core.canModify(annotations[0]));\n        if (isNotesPanelOpen) {\n          setTimeout(() => dispatch(actions.openElement('annotationNoteConnectorLine')), 300);\n        }\n      } else {\n        const actionOnOtherAnnotation = firstAnnotation && annotations && !annotations.includes(firstAnnotation);\n        if (action === 'deselected' && actionOnOtherAnnotation) {\n          return;\n        } else {\n          closeAndReset();\n        }\n      }\n    };\n\n    const onResize = () => {\n      firstAnnotation && setPosition(getAnnotationPopupPositionBasedOn(firstAnnotation, popupRef));\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    core.addEventListener('documentUnloaded', closeAndReset);\n    window.addEventListener('resize', onResize);\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n      core.removeEventListener('documentUnloaded', closeAndReset);\n      window.removeEventListener('resize', onResize);\n    };\n  }, [dispatch, isNotesPanelOpen, firstAnnotation]);\n\n  const onViewFile = useCallback(async () => {\n    if (!tabManager || !isMultiTab) {\n      return console.warn('Can\\'t open file in non-multi-tab mode');\n    }\n    const metaData = firstAnnotation.getFileMetadata();\n    const fileAttachmentTab = tabs.find(tab => tab.options.filename === metaData.filename);\n    if (fileAttachmentTab) { // If already opened once\n      return await tabManager.setActiveTab(fileAttachmentTab.id, true);\n    }\n    await tabManager.addTab(await firstAnnotation.getFileData(), {\n      extension: window.Core.mimeTypeToExtension[metaData.mimeType],\n      filename: metaData.filename,\n      saveCurrentActiveTabState: true,\n      setActive: true,\n    });\n  }, [tabManager, firstAnnotation, tabs, isMultiTab]);\n\n\n  if (isDisabled || !firstAnnotation) {\n    return null;\n  }\n\n  const toggleDatePicker = () => setDatePickerOpen(isOpen => !isOpen);\n  const style = getAnnotationStyles(firstAnnotation);\n  const hasStyle = Object.keys(style).length > 0;\n  const redactionEnabled = core.isAnnotationRedactable(firstAnnotation);\n  const selectedAnnotations = core.getSelectedAnnotations();\n  const primaryAnnotation = selectedAnnotations.find(selectedAnnotation => !selectedAnnotation.InReplyTo);\n  const numberOfSelectedAnnotations = selectedAnnotations.length;\n  const numberOfGroups = core.getNumberOfGroups(selectedAnnotations);\n  const canGroup = numberOfGroups > 1;\n  const canUngroup = numberOfGroups === 1 && numberOfSelectedAnnotations > 1;\n  const multipleAnnotationsSelected = numberOfSelectedAnnotations > 1;\n\n  const isFreeTextAnnot = firstAnnotation instanceof window.Annotations.FreeTextAnnotation;\n  const isDateFreeTextCanEdit = isFreeTextAnnot && firstAnnotation.getDateFormat() && core.canModifyContents(firstAnnotation);\n\n  const commentOnAnnotation = () => {\n    if (isDateFreeTextCanEdit) {\n      toggleDatePicker();\n      return;\n    } else {\n      dispatch(actions.openElement('notesPanel'));\n      dispatch(actions.closeElement('searchPanel'));\n      dispatch(actions.triggerNoteEditing());\n    }\n    dispatch(actions.closeElement('annotationPopup'));\n  };\n\n  const handleDateChange = text => {\n    core.getAnnotationManager().setNoteContents(firstAnnotation, text);\n    core.getAnnotationManager().updateAnnotation(firstAnnotation);\n  };\n  const ShortCutKeysFor3DComponent = () => {\n    return (<div className=\"shortCuts3D\">\n      <div className=\"closeButton\" onClick={() => setShortCutKeysFor3DVisible(false)}>x</div>\n      <div className=\"row\">{t('action.rotate3D')} <span>{t('shortcut.rotate3D')}</span></div>\n      <div className=\"row\">{t('action.zoom')} <span>{t('shortcut.zoom3D')}</span></div>\n    </div>);\n  };\n\n  const downloadFileAttachment = annot => {\n    // no need to check that annot is of type file annot as the check is done in the JSX\n    // trigger the annotationDoubleClicked event so that it will download the file\n    core.getAnnotationManager().trigger('annotationDoubleClicked', annot);\n  };\n\n  const handlePlaySound = annotation => {\n    dispatch(actions.setActiveSoundAnnotation(annotation));\n    dispatch(actions.triggerResetAudioPlaybackPosition(true));\n    dispatch(actions.openElement('audioPlaybackPopup'));\n  };\n\n  const toolNames = window.Core.Tools.ToolNames;\n  const toolsWithNoStyling = [\n    toolNames.CROP,\n    toolNames.RADIO_FORM_FIELD,\n    toolNames.CHECK_BOX_FIELD,\n  ];\n\n  const toolsThatCantHaveLinks = [\n    toolNames.CROP,\n    toolNames.SIGNATURE,\n    toolNames.REDACTION,\n    toolNames.REDACTION2,\n    toolNames.REDACTION3,\n    toolNames.REDACTION4,\n    toolNames.STICKY,\n    toolNames.STICKY2,\n    toolNames.STICKY3,\n    toolNames.STICKY4,\n  ];\n\n  const showCommentButton =\n    !isNotesPanelDisabled &&\n    !multipleAnnotationsSelected &&\n    firstAnnotation.ToolName !== toolNames.CROP &&\n    !includesFormFieldAnnotation &&\n    !firstAnnotation.isContentEditPlaceholder();\n\n  const showEditStyleButton =\n    canModify &&\n    hasStyle &&\n    !isAnnotationStylePopupDisabled &&\n    (!multipleAnnotationsSelected || canUngroup) &&\n    !toolsWithNoStyling.includes(firstAnnotation.ToolName) && !(firstAnnotation instanceof Annotations.Model3DAnnotation) &&\n    !firstAnnotation.isContentEditPlaceholder();\n\n  const showRedactionButton = redactionEnabled && !multipleAnnotationsSelected && !includesFormFieldAnnotation;\n\n  const showGroupButton = canGroup && !includesFormFieldAnnotation;\n\n  const showCalibrateButton =\n    canModify && firstAnnotation.Measure && firstAnnotation instanceof Annotations.LineAnnotation;\n\n  const showFileDownloadButton = firstAnnotation instanceof window.Annotations.FileAttachmentAnnotation;\n\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  const acceptFormats = wvServer ? window.Core.SupportedFileFormats.SERVER : window.Core.SupportedFileFormats.CLIENT;\n  const showViewFileButton = firstAnnotation instanceof Annotations.FileAttachmentAnnotation && isMultiTab\n    && acceptFormats.includes(window.Core.mimeTypeToExtension[firstAnnotation.getFileMetadata().mimeType]);\n\n  const shouldShowAudioPlayButton = (\n    !isIE &&\n    !selectedMultipleAnnotations &&\n    firstAnnotation instanceof window.Annotations.SoundAnnotation &&\n    firstAnnotation.hasAudioData()\n  );\n\n  const showLinkButton = (\n    !toolsThatCantHaveLinks.includes(firstAnnotation.ToolName) &&\n    !includesFormFieldAnnotation &&\n    !firstAnnotation.isContentEditPlaceholder() &&\n    !(firstAnnotation instanceof Annotations.SoundAnnotation) // TODO(Adam): Update this once SoundAnnotation tool is created.\n  );\n\n  const onDatePickerShow = isDatePickerShowed => {\n    setDatePickerMount(isDatePickerShowed);\n  };\n\n  const show3DShortCutButton = firstAnnotation instanceof Annotations.Model3DAnnotation && !isMobile();\n\n  const onResize = () => {\n    setStylePopupRepositionFlag(!stylePopupRepositionFlag);\n  };\n\n  const annotationPopup = (\n    <div\n      className={classNames({\n        Popup: true,\n        AnnotationPopup: true,\n        open: isOpen,\n        closed: !isOpen,\n        stylePopupOpen: isStylePopupOpen,\n      })}\n      ref={popupRef}\n      data-element=\"annotationPopup\"\n      style={{ ...position }}\n    >\n      {isStylePopupOpen || isDatePickerOpen ? (\n        isStylePopupOpen ? (\n          <AnnotationStylePopup annotation={firstAnnotation} style={style} isOpen={isOpen} onResize={onResize} />\n        ) : (\n          <DatePicker onClick={handleDateChange} annotation={firstAnnotation} onDatePickerShow={onDatePickerShow} />\n        )\n      ) : (shortCutKeysFor3DVisible && firstAnnotation instanceof Annotations.Model3DAnnotation) ?\n        <ShortCutKeysFor3DComponent /> : (\n          <CustomizablePopup dataElement=\"annotationPopup\">\n            {showViewFileButton && (\n              <ActionButton\n                dataElement=\"viewFileButton\"\n                img=\"icon-view\"\n                title=\"action.viewFile\"\n                onClick={onViewFile}\n              />\n            )}\n            {showCommentButton && (\n              <ActionButton\n                dataElement=\"annotationCommentButton\"\n                title=\"action.comment\"\n                img=\"icon-header-chat-line\"\n                onClick={commentOnAnnotation}\n              />\n            )}\n            {showEditStyleButton && (\n              <ActionButton\n                dataElement=\"annotationStyleEditButton\"\n                title=\"action.style\"\n                img=\"icon-menu-style-line\"\n                onClick={() => setIsStylePopupOpen(true)}\n              />\n            )}\n            {firstAnnotation.isContentEditPlaceholder() && firstAnnotation.getContentEditType() === window.Core.ContentEdit.Types.TEXT && (\n              <ActionButton\n                dataElement=\"annotationContentEditButton\"\n                title=\"action.edit\"\n                img=\"ic_edit_page_24px\"\n                onClick={async () => {\n                  const content = await instance.Core.ContentEdit.getDocumentContent(firstAnnotation);\n                  dispatch(actions.setCurrentContentBeingEdited({ content, annotation: firstAnnotation }));\n                  dispatch(actions.openElement('contentEditModal'));\n                  dispatch(actions.closeElement('annotationPopup'));\n                }}\n              />\n            )}\n            {showRedactionButton && (\n              <ActionButton\n                dataElement=\"annotationRedactButton\"\n                title=\"action.apply\"\n                img=\"ic_check_black_24px\"\n                onClick={() => {\n                  dispatch(applyRedactions(firstAnnotation));\n                  dispatch(actions.closeElement('annotationPopup'));\n                }}\n              />\n            )}\n            {showGroupButton && (\n              <ActionButton\n                dataElement=\"annotationGroupButton\"\n                title=\"action.group\"\n                img=\"ic_group_24px\"\n                onClick={() => core.groupAnnotations(primaryAnnotation, selectedAnnotations)}\n              />\n            )}\n            {canUngroup && (\n              <ActionButton\n                dataElement=\"annotationUngroupButton\"\n                title=\"action.ungroup\"\n                img=\"ic_ungroup_24px\"\n                onClick={() => core.ungroupAnnotations(selectedAnnotations)}\n              />\n            )}\n            {includesFormFieldAnnotation && (\n              <ActionButton\n                title=\"action.formFieldEdit\"\n                img=\"icon-edit-form-field\"\n                onClick={() => {\n                  dispatch(actions.closeElement('annotationPopup'));\n                  dispatch(actions.openElement('formFieldEditPopup'));\n                }}\n                dataElement=\"formFieldEditButton\"\n              />\n            )\n            }\n            {canModify && (\n              <ActionButton\n                dataElement=\"annotationDeleteButton\"\n                title=\"action.delete\"\n                img=\"icon-delete-line\"\n                onClick={() => {\n                  core.deleteAnnotations(core.getSelectedAnnotations());\n                  dispatch(actions.closeElement('annotationPopup'));\n                }}\n              />\n            )}\n            {showCalibrateButton && (\n              <ActionButton\n                dataElement=\"calibrateButton\"\n                title=\"action.calibrate\"\n                img=\"calibrate\"\n                onClick={() => {\n                  dispatch(actions.closeElement('annotationPopup'));\n                  dispatch(actions.openElement('calibrationModal'));\n                }}\n              />\n            )}\n            {showLinkButton && (\n              <ActionButton\n                title=\"tool.Link\"\n                img={hasAssociatedLink ? 'icon-tool-unlink' : 'icon-tool-link'}\n                onClick={\n                  hasAssociatedLink\n                    ? () => {\n                      const annotManager = core.getAnnotationManager();\n                      selectedAnnotations.forEach(annot => {\n                        const linkAnnotations = getGroupedLinkAnnotations(annot);\n                        linkAnnotations.forEach((linkAnnot, index) => {\n                          annotManager.ungroupAnnotations([linkAnnot]);\n                          if (annot instanceof Annotations.TextHighlightAnnotation && annot.Opacity === 0 && index === 0) {\n                            annotManager.deleteAnnotations([annot, linkAnnot], null, true);\n                          } else {\n                            annotManager.deleteAnnotation(linkAnnot, null, true);\n                          }\n                        });\n                      });\n                      dispatch(actions.closeElement('annotationPopup'));\n                    }\n                    : () => dispatch(actions.openElement('linkModal'))\n                }\n                dataElement=\"linkButton\"\n              />\n            )}\n            {showFileDownloadButton &&\n              (\n                <ActionButton\n                  title=\"action.fileAttachmentDownload\"\n                  img=\"icon-download\"\n                  onClick={() => downloadFileAttachment(firstAnnotation)}\n                  dataElement=\"fileAttachmentDownload\"\n                />\n              )\n            }\n            {\n              show3DShortCutButton &&\n              (\n                <ActionButton\n                  title=\"action.viewShortCutKeysFor3D\"\n                  img=\"icon-keyboard\"\n                  onClick={() => setShortCutKeysFor3DVisible(true)}\n                  dataElement=\"shortCutKeysFor3D\"\n                />\n              )\n            }\n            {\n              shouldShowAudioPlayButton &&\n              (\n                <ActionButton\n                  title=\"action.playAudio\"\n                  img=\"ic_play_24px\"\n                  onClick={() => handlePlaySound(firstAnnotation)}\n                  dataElement=\"playSoundButton\"\n                />\n              )\n            }\n          </CustomizablePopup>\n        )}\n    </div>\n  );\n\n  return isIE || isMobile() ? (\n    annotationPopup\n  ) : (\n    <Draggable cancel=\".Button, .cell, .sliders-container svg, select, button, input\">{annotationPopup}</Draggable>\n  );\n};\n\nexport default AnnotationPopup;\n","import AnnotationPopup from './AnnotationPopup';\n\nexport default AnnotationPopup;","import core from 'core';\n\n/**\n * We can just pass object down as a prop, but many properties of that object won't be used by the child component,\n * so here we select properties that will be used.\n * @ignore\n * @param annotation is an annotation created by a tool\n * @return current style of that object.\n */\nexport default annotation => {\n  const styleProperty = [\n    'FillColor',\n    'StrokeColor',\n    'TextColor',\n    'Opacity',\n    'StrokeThickness',\n    'FontSize',\n    'Precision',\n    'Scale',\n    'Style',\n  ];\n  const style = {};\n\n  styleProperty.forEach(property => {\n    const value = annotation[property];\n\n    if (value !== null && value !== undefined) {\n      style[property] = annotation[property];\n    }\n  });\n\n  // Special case for the highlight annotation. It only have opacity when blend mode is working\n  if (annotation.elementName === 'highlight' && !core.isBlendModeSupported(annotation['BlendMode'])) {\n    style.Opacity = null;\n  }\n\n  // widget don't support opacity\n  if (annotation.isFormFieldPlaceholder()) {\n    style.Opacity = null;\n  }\n\n  return style;\n};\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport getHashParameters from 'helpers/getHashParameters';\n\nimport ActionButton from 'components/ActionButton';\nimport CustomizablePopup from 'components/CustomizablePopup';\n\nimport core from 'core';\nimport { getTextPopupPositionBasedOn } from 'helpers/getPopupPosition';\nimport createTextAnnotationAndSelect from 'helpers/createTextAnnotationAndSelect';\nimport copyText from 'helpers/copyText';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport useArrowFocus from 'hooks/useArrowFocus';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './TextPopup.scss';\n\nconst TextPopup = ({ t }) => {\n  const fullAPI = !!getHashParameters('pdfnet', false);\n\n  const [isDisabled, isOpen, popupItems] = useSelector(\n    state => [\n      selectors.isElementDisabled(state, 'textPopup'),\n      selectors.isElementOpen(state, 'textPopup'),\n      selectors.getPopupItems(state, 'textPopup'),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const [position, setPosition] = useState({ left: 0, top: 0 });\n  const popupRef = useRef();\n  useOnClickOutside(popupRef, () => {\n    dispatch(actions.closeElement('textPopup'));\n  });\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElements(['annotationPopup', 'contextMenuPopup']));\n    }\n  }, [dispatch, isOpen]);\n\n  useEffect(() => {\n    const textSelectTool = core.getTool('TextSelect');\n    const onSelectionComplete = (startQuad, allQuads) => {\n      if (popupRef.current && popupItems.length > 0) {\n        setPosition(getTextPopupPositionBasedOn(allQuads, popupRef));\n        dispatch(actions.openElement('textPopup'));\n      }\n    };\n\n    textSelectTool.addEventListener('selectionComplete', onSelectionComplete);\n    return () => textSelectTool.removeEventListener('selectionComplete', onSelectionComplete);\n  }, [dispatch, popupItems]);\n\n  const onClose = useCallback(() => dispatch(actions.closeElement('textPopup')), [dispatch]);\n  useArrowFocus(!isDisabled && isOpen, onClose, popupRef);\n\n  return isDisabled ? null : (\n    <div\n      className={classNames({\n        Popup: true,\n        TextPopup: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      data-element=\"textPopup\"\n      ref={popupRef}\n      style={{ ...position }}\n      onClick={onClose}\n      role=\"listbox\"\n      aria-label={t('component.textPopup')}\n    >\n      <CustomizablePopup dataElement=\"textPopup\">\n        <ActionButton dataElement=\"copyTextButton\" title=\"action.copy\" img=\"ic_copy_black_24px\" onClick={copyText} role=\"option\" />\n        <ActionButton\n          dataElement=\"textHighlightToolButton\"\n          title=\"annotation.highlight\"\n          img=\"icon-tool-highlight\"\n          onClick={() => createTextAnnotationAndSelect(dispatch, Annotations.TextHighlightAnnotation)}\n          role=\"option\"\n        />\n        <ActionButton\n          dataElement=\"textUnderlineToolButton\"\n          title=\"annotation.underline\"\n          img=\"icon-tool-text-manipulation-underline\"\n          onClick={() => createTextAnnotationAndSelect(dispatch, Annotations.TextUnderlineAnnotation)}\n          role=\"option\"\n        />\n        <ActionButton\n          dataElement=\"textSquigglyToolButton\"\n          title=\"annotation.squiggly\"\n          img=\"icon-tool-text-manipulation-squiggly\"\n          onClick={() => createTextAnnotationAndSelect(dispatch, Annotations.TextSquigglyAnnotation)}\n          role=\"option\"\n        />\n        <ActionButton\n          title=\"annotation.strikeout\"\n          img=\"icon-tool-text-manipulation-strikethrough\"\n          onClick={() => createTextAnnotationAndSelect(dispatch, Annotations.TextStrikeoutAnnotation)}\n          dataElement=\"textStrikeoutToolButton\"\n          role=\"option\"\n        />\n        <ActionButton\n          title=\"tool.Link\"\n          img=\"icon-tool-link\"\n          onClick={() => dispatch(actions.openElement('linkModal'))}\n          dataElement=\"linkButton\"\n          role=\"option\"\n        />\n        {core.isCreateRedactionEnabled() && (\n          <ActionButton\n            dataElement=\"textRedactToolButton\"\n            title=\"option.redaction.markForRedaction\"\n            fillColor=\"868E96\"\n            img=\"icon-tool-select-area-redaction\"\n            onClick={() => createTextAnnotationAndSelect(dispatch, Annotations.RedactionAnnotation)}\n            role=\"option\"\n          />\n        )}\n      </CustomizablePopup>\n    </div>\n  );\n};\n\nexport default withTranslation()(TextPopup);\n","import TextPopup from './TextPopup';\n\nexport default TextPopup;\n","import React, { useState, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch, useStore, shallowEqual } from 'react-redux';\n\nimport ActionButton from 'components/ActionButton';\nimport CustomizablePopup from 'components/CustomizablePopup';\n\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport setToolModeAndGroup from 'helpers/setToolModeAndGroup';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './ContextMenuPopup.scss';\n\nconst ContextMenuPopup = () => {\n  const [isOpen, isDisabled, popupItems] = useSelector(\n    state => [\n      selectors.isElementOpen(state, 'contextMenuPopup'),\n      selectors.isElementDisabled(state, 'contextMenuPopup'),\n      selectors.getPopupItems(state, 'contextMenuPopup'),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  // this is hacky, hopefully we can remove this when tool group button is restructured\n  const store = useStore();\n  const [position, setPosition] = useState({ left: 0, top: 0 });\n  const popupRef = useRef();\n\n  useOnClickOutside(popupRef, () => {\n    dispatch(actions.closeElement('contextMenuPopup'));\n  });\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElements(['annotationPopup', 'textPopup']));\n    }\n  }, [dispatch, isOpen]);\n\n  useEffect(() => {\n    const onContextMenu = e => {\n      const { tagName } = e.target;\n      const clickedOnInput = tagName === 'INPUT';\n      const clickedOnTextarea = tagName === 'TEXTAREA';\n      const clickedOnFreeTextarea = (\n        e.target.className === 'ql-editor'\n        || e.target.parentNode.className === 'ql-editor'\n        || e.target.parentNode.parentNode.className === 'ql-editor'\n      ) ? true : false;\n\n      const clickedOnDocumentContainer = document\n        .querySelector('.DocumentContainer')\n        .contains(e.target);\n\n      if (\n        popupRef.current &&\n        clickedOnDocumentContainer &&\n        // when clicking on these two elements we want to display the default context menu\n        // so that users can use auto-correction, look up dictionary, etc...\n        !(clickedOnInput || clickedOnTextarea || clickedOnFreeTextarea)\n      ) {\n        e.preventDefault();\n        let { pageX: left, pageY: top } = e;\n        const { width, height } = popupRef.current.getBoundingClientRect();\n        const documentContainer = document.querySelector('.DocumentContainer');\n        const containerBox = documentContainer.getBoundingClientRect();\n        const horizontalGap = 2;\n        const verticalGap = 2;\n\n        if (left < containerBox.left) {\n          left = containerBox.left + horizontalGap;\n        }\n        if (left + width > containerBox.right) {\n          left = containerBox.right - width - horizontalGap;\n        }\n\n        if (top < containerBox.top) {\n          top = containerBox.top + verticalGap;\n        }\n        if (top + height > containerBox.bottom) {\n          top = containerBox.bottom - height - verticalGap;\n        }\n        if (popupItems.length > 0) {\n          setPosition({ left, top });\n          dispatch(actions.openElement('contextMenuPopup'));\n        }\n      }\n    };\n\n    document.addEventListener('contextmenu', onContextMenu);\n    return () => document.removeEventListener('contextmenu', onContextMenu);\n  }, [dispatch, popupItems]);\n\n  return isDisabled ? null : (\n    <div\n      className={classNames({\n        Popup: true,\n        ContextMenuPopup: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      ref={popupRef}\n      data-element=\"contextMenuPopup\"\n      style={{ ...position }}\n      onClick={() => dispatch(actions.closeElement('contextMenuPopup'))}\n    >\n      <CustomizablePopup dataElement=\"contextMenuPopup\">\n        <ActionButton\n          dataElement=\"panToolButton\"\n          title=\"tool.pan\"\n          img=\"icon-header-pan\"\n          onClick={() => setToolModeAndGroup(store, 'Pan')}\n        />\n        <ActionButton\n          dataElement=\"stickyToolButton\"\n          title=\"annotation.stickyNote\"\n          img=\"icon-tool-comment-line\"\n          onClick={() => setToolModeAndGroup(store, 'AnnotationCreateSticky')}\n        />\n        <ActionButton\n          dataElement=\"highlightToolButton\"\n          title=\"annotation.highlight\"\n          img=\"icon-tool-highlight\"\n          onClick={() =>\n            setToolModeAndGroup(store, 'AnnotationCreateTextHighlight')\n          }\n        />\n        <ActionButton\n          dataElement=\"freeHandToolButton\"\n          title=\"annotation.freehand\"\n          img=\"icon-tool-pen-line\"\n          onClick={() => setToolModeAndGroup(store, 'AnnotationCreateFreeHand')}\n        />\n        <ActionButton\n          dataElement=\"freeHandHighlightToolButton\"\n          title=\"annotation.freeHandHighlight\"\n          img=\"icon-tool-pen-highlight\"\n          onClick={() => setToolModeAndGroup(store, 'AnnotationCreateFreeHandHighlight')}\n        />\n        <ActionButton\n          dataElement=\"freeTextToolButton\"\n          title=\"annotation.freetext\"\n          img=\"icon-tool-text-free-text\"\n          onClick={() => setToolModeAndGroup(store, 'AnnotationCreateFreeText')}\n        />\n      </CustomizablePopup>\n    </div>\n  );\n};\n\nexport default ContextMenuPopup;\n","import ContextMenuPopup from './ContextMenuPopup';\n\nexport default ContextMenuPopup;","import { calcPopupLeft, calcPopupTop } from 'helpers/getPopupPosition';\r\nimport core from 'core';\r\n\r\nexport default (annotation, popup) => {\r\n  if (!popup || !popup.current) {\r\n    return;\r\n  }\r\n  const editorContainer = document.querySelector(\r\n    `#pageWidgetContainer${annotation.PageNumber} [id=\"freetext-editor-${annotation.Id}\"]`\r\n  );\r\n  const scrollContainer = core.getScrollViewElement();\r\n  const padding = 2 * parseFloat(annotation.StrokeThickness) * core.getZoom();\r\n  const cBox = editorContainer.getBoundingClientRect();\r\n  const cInfo = {\r\n    topLeft: {\r\n      x: cBox.left + scrollContainer.scrollLeft - padding,\r\n      y: cBox.top + scrollContainer.scrollTop - padding\r\n    },\r\n    bottomRight: {\r\n      x: cBox.right + scrollContainer.scrollLeft + padding,\r\n      y: cBox.bottom + scrollContainer.scrollTop + padding\r\n    }\r\n  };\r\n  const pBox = popup.current.getBoundingClientRect();\r\n  return {\r\n    left: calcPopupLeft(cInfo, pBox),\r\n    top: calcPopupTop(cInfo, pBox)\r\n  };\r\n};\r\n","import React from 'react';\n\nimport './MathSymbolsPicker.scss';\n\nconst symbols = [\n  '\\u002B',\n  '\\u2212',\n  '\\u00D7',\n  '\\u00F7',\n  '\\u003D',\n  '\\u2260',\n  '\\u00B1',\n  '\\u00AC',\n  '\\u003C',\n  '\\u003E',\n  '\\u22DC',\n  '\\u22DD',\n  '\\u00B0',\n  '\\u00B9',\n  '\\u00B2',\n  '\\u00B3',\n  '\\u0192',\n  '\\u0025',\n  \"\\u2030\",\n  '\\u2031',\n  '\\u2200',\n  '\\u2201',\n  '\\u2202',\n  '\\u2203',\n  '\\u2204',\n  '\\u2205',\n  '\\u2206',\n  '\\u2207',\n  '\\u2208',\n  '\\u2209',\n  '\\u220A',\n  '\\u220B',\n  '\\u220C',\n  '\\u220D',\n  '\\u220E',\n  '\\u220F',\n  '\\u2210',\n  '\\u2211',\n  '\\u2213',\n  '\\u2214',\n  '\\u2215',\n  '\\u2216',\n  '\\u2217',\n  '\\u2218',\n  '\\u2219',\n  '\\u221A',\n  '\\u221B',\n  '\\u221C',\n  '\\u221D',\n  '\\u221E',\n  '\\u221F',\n  '\\u2220',\n  '\\u2221',\n  '\\u2222',\n  '\\u2223',\n  '\\u2224',\n  '\\u2225',\n  '\\u2226',\n  '\\u2227',\n  '\\u2228',\n  '\\u2229',\n  '\\u222A',\n  '\\u222B',\n  '\\u222C',\n  '\\u222D',\n  '\\u222E',\n  '\\u222F',\n  '\\u2230',\n  '\\u2231',\n  '\\u2232',\n  '\\u2233',\n  '\\u2234',\n  '\\u2235',\n  '\\u2236',\n  '\\u2237',\n  '\\u2238',\n  '\\u2239',\n  '\\u223A',\n  '\\u223B',\n  '\\u223C',\n  '\\u223D',\n  '\\u223E',\n  '\\u223F',\n  '\\u2240',\n  '\\u2241',\n  '\\u2242',\n  '\\u2243',\n  '\\u2244',\n  '\\u2245',\n  '\\u2246',\n  '\\u2247',\n  '\\u2248',\n  '\\u2249',\n  '\\u224A',\n  '\\u224B',\n  '\\u224C'\n];\n\nconst MathSymbolsPicker = ({ onClickHandler, maxHeight }) => {\n  return (\n    <div\n      className=\"mathSymbolsContainer padding\"\n      style={{ maxHeight: maxHeight + 'px' }}\n    >\n      {symbols.map((symbol, i) => (\n        <button\n          key={i}\n          className=\"cell-container\"\n          onClick={() => {\n            onClickHandler(symbol);\n          }}\n        >\n          {symbol}\n        </button>\n      ))}\n    </div>\n  );\n};\n\nexport default MathSymbolsPicker;","import MathSymbolsPicker from './MathSymbolsPicker';\n\nexport default MathSymbolsPicker; ","import React, { useState, useEffect, useRef } from 'react';\r\nimport Draggable from 'react-draggable';\r\nimport classNames from 'classnames';\r\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\r\n\r\nimport Element from 'components/Element';\r\nimport ColorPalette from 'components/ColorPalette';\r\nimport Button from 'components/Button';\r\nimport HorizontalDivider from 'components/HorizontalDivider';\r\nimport { isMobile } from 'helpers/device';\r\nimport core from 'core';\r\nimport getRichTextPopupPosition from 'helpers/getRichTextPopupPosition';\r\nimport MathSymbolsPicker from '../MathSymbolsPicker';\r\nimport ColorPalettePicker from 'components/ColorPalettePicker';\r\n\r\nimport actions from 'actions';\r\nimport selectors from 'selectors';\r\n\r\nimport './RichTextPopup.scss';\r\n\r\nconst RichTextPopup = () => {\r\n  const [isDisabled, isOpen, isPaletteDisabled, customColors, isInDesktopOnlyMode] = useSelector(\r\n    state => [\r\n      selectors.isElementDisabled(state, 'richTextPopup'),\r\n      selectors.isElementOpen(state, 'richTextPopup'),\r\n      selectors.isElementDisabled(state, 'colorPalette'),\r\n      selectors.getCustomColors(state, 'customColors'),\r\n      selectors.isInDesktopOnlyMode(state)\r\n    ],\r\n    shallowEqual,\r\n  );\r\n  const [symbolsVisible, setSymbolsVisible] = useState(false);\r\n  const [cssPosition, setCssPosition] = useState({ left: 0, top: 0 });\r\n  const [draggablePosition, setDraggablePosition] = useState({ x: 0, y: 0 });\r\n  const [format, setFormat] = useState({});\r\n  const popupRef = useRef(null);\r\n  const editorRef = useRef(null);\r\n  const annotationRef = useRef(null);\r\n  const dispatch = useDispatch();\r\n  const symbolsAreaHeight = 150; // max height for the math symbols area\r\n\r\n  useEffect(() => {\r\n    const handleSelectionChange = range => {\r\n      if (range && editorRef.current) {\r\n        setFormat(getFormat(range));\r\n      }\r\n    };\r\n\r\n    core.addEventListener('editorSelectionChanged', handleSelectionChange);\r\n    return () =>\r\n      core.removeEventListener('editorSelectionChanged', handleSelectionChange);\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n    const handleTextChange = () => {\r\n      if (annotationRef.current?.isAutoSized() && popupRef.current) {\r\n        const position = getRichTextPopupPosition(\r\n          annotationRef.current,\r\n          popupRef,\r\n        );\r\n        setCssPosition(position);\r\n      }\r\n\r\n      setFormat(getFormat(editorRef.current?.getSelection()));\r\n    };\r\n\r\n    core.addEventListener('editorTextChanged', handleTextChange);\r\n    return () =>\r\n      core.removeEventListener('editorTextChanged', handleTextChange);\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n    const handleEditorFocus = (editor, annotation) => {\r\n      if (\r\n        annotation instanceof window.Annotations.FreeTextAnnotation &&\r\n        popupRef.current\r\n      ) {\r\n        const position = getRichTextPopupPosition(\r\n          annotation,\r\n          popupRef,\r\n        );\r\n\r\n        setCssPosition(position);\r\n        // when the editor is focused, we want to reset any previous drag movements so that\r\n        // the popup will be positioned centered to the editor\r\n        setDraggablePosition({ x: 0, y: 0 });\r\n\r\n        editorRef.current = editor;\r\n        annotationRef.current = annotation;\r\n\r\n        dispatch(actions.openElements(['richTextPopup']));\r\n      }\r\n    };\r\n\r\n    core.addEventListener('editorFocus', handleEditorFocus);\r\n    return () => core.removeEventListener('editorFocus', handleEditorFocus);\r\n  }, [dispatch]);\r\n\r\n  useEffect(() => {\r\n    const handleEditorBlur = () => {\r\n      dispatch(actions.closeElements(['richTextPopup']));\r\n      editorRef.current = null;\r\n      annotationRef.current = null;\r\n    };\r\n\r\n    core.addEventListener('editorBlur', handleEditorBlur);\r\n    return () => core.removeEventListener('editorBlur', handleEditorBlur);\r\n  }, [dispatch]);\r\n\r\n  useEffect(() => {\r\n    if (popupRef.current && annotationRef.current) {\r\n      const position = getRichTextPopupPosition(\r\n        annotationRef.current,\r\n        popupRef,\r\n      );\r\n      setCssPosition(position);\r\n    }\r\n  }, [symbolsVisible]);\r\n\r\n  const getFormat = range => {\r\n    if (!range) {\r\n      return {};\r\n    }\r\n\r\n    const format = editorRef.current.getFormat(range.index, range.length);\r\n\r\n    if (typeof format.color === 'string') {\r\n      format.color = new window.Annotations.Color(format.color);\r\n    } else if (Array.isArray(format.color)) {\r\n      // the selection contains multiple color, so we set the current color to null\r\n      format.color = null;\r\n    } else if (!format.color) {\r\n      format.color = annotationRef.current.TextColor;\r\n    }\r\n\r\n    return format;\r\n  };\r\n\r\n  const handleTextFormatChange = format => () => {\r\n    const { index, length } = editorRef.current.getSelection();\r\n    const currentFormat = editorRef.current.getFormat(index, length);\r\n\r\n    applyFormat(format, !currentFormat[format]);\r\n  };\r\n\r\n  const handleSymbolsClick = () => {\r\n    setSymbolsVisible(!symbolsVisible);\r\n  };\r\n\r\n  const handleColorChange = (_, color) => {\r\n    applyFormat('color', color.toHexString());\r\n  };\r\n\r\n  const applyFormat = (formatKey, value) => {\r\n    editorRef.current?.format(formatKey, value);\r\n\r\n    if (formatKey === 'color') {\r\n      value = new window.Annotations.Color(value);\r\n    }\r\n\r\n    // format the entire editor doesn't trigger the editorTextChanged event, so we set the format state here\r\n    setFormat({\r\n      ...format,\r\n      [formatKey]: value\r\n    });\r\n  };\r\n\r\n  const syncDraggablePosition = (e, { x, y }) => {\r\n    setDraggablePosition({ x, y });\r\n  };\r\n\r\n  const insertSymbols = symbol => {\r\n    const { index, length } = editorRef.current.getSelection();\r\n    // if user selected some text, then we want to first delete the selected content\r\n    if (length > 0) {\r\n      editorRef.current.deleteText(index, length);\r\n    }\r\n    // insert symbol at the selected index\r\n    editorRef.current.insertText(index, symbol);\r\n    editorRef.current.setSelection(index + 1);\r\n  };\r\n\r\n  // TODO for now don't show it in mobile\r\n  return isDisabled || (isMobile() && !isInDesktopOnlyMode) ? null : (\r\n    <Draggable\r\n      position={draggablePosition}\r\n      onDrag={syncDraggablePosition}\r\n      onStop={syncDraggablePosition}\r\n      enableUserSelectHack={false}\r\n      // don't allow drag when clicking on a button element or a color cell\r\n      cancel=\".Button, .cell, .mathSymbolsContainer\"\r\n      // prevent the blur event from being triggered when clicking on toolbar buttons\r\n      // otherwise we can't style the text since a blur event is triggered before a click event\r\n      onMouseDown={e => {\r\n        if (e.type !== 'touchstart') {\r\n          e.preventDefault();\r\n        }\r\n      }}\r\n    >\r\n      <div\r\n        className={classNames({\r\n          Popup: true,\r\n          RichTextPopup: true,\r\n          open: isOpen,\r\n          closed: !isOpen,\r\n        })}\r\n        ref={popupRef}\r\n        data-element=\"richTextPopup\"\r\n        style={{ ...cssPosition }}\r\n      >\r\n        <Element className=\"rich-text-format\" dataElement=\"richTextFormats\">\r\n          <Button\r\n            isActive={format.bold}\r\n            dataElement=\"richTextBoldButton\"\r\n            onClick={handleTextFormatChange('bold')}\r\n            img=\"icon-text-bold\"\r\n            title=\"option.richText.bold\"\r\n          />\r\n          <Button\r\n            isActive={format.italic}\r\n            dataElement=\"richTextItalicButton\"\r\n            onClick={handleTextFormatChange('italic')}\r\n            img=\"icon-text-italic\"\r\n            title=\"option.richText.italic\"\r\n          />\r\n          <Button\r\n            isActive={format.underline}\r\n            dataElement=\"richTextUnderlineButton\"\r\n            onClick={handleTextFormatChange('underline')}\r\n            img=\"ic_annotation_underline_black_24px\"\r\n            title=\"option.richText.underline\"\r\n          />\r\n          <Button\r\n            isActive={format.strike}\r\n            dataElement=\"richTextStrikeButton\"\r\n            onClick={handleTextFormatChange('strike')}\r\n            img=\"ic_annotation_strikeout_black_24px\"\r\n            title=\"option.richText.strikeout\"\r\n          />\r\n          <Button\r\n            dataElement=\"mathSymbolsButton\"\r\n            onClick={handleSymbolsClick}\r\n            img=\"ic_thumbnails_grid_black_24px\"\r\n            title=\"option.mathSymbols\"\r\n          />\r\n        </Element>\r\n        <HorizontalDivider style={{ paddingTop: 0 }} />\r\n        {!isPaletteDisabled && (\r\n          <>\r\n            <ColorPalette\r\n              colorMapKey=\"freeText\"\r\n              color={format.color}\r\n              property=\"TextColor\"\r\n              onStyleChange={handleColorChange}\r\n              hasPadding\r\n            />\r\n            {customColors.length > 0 && (\r\n              <ColorPalettePicker\r\n                color={format.color}\r\n                property=\"TextColor\"\r\n                onStyleChange={handleColorChange}\r\n                enableEdit={false}\r\n              />\r\n            )}\r\n          </>\r\n        )}\r\n        {symbolsVisible && <MathSymbolsPicker onClickHandler={insertSymbols} maxHeight={symbolsAreaHeight} />}\r\n      </div>\r\n    </Draggable>\r\n  );\r\n};\r\n\r\nexport default RichTextPopup;","import RichTextPopup from './RichTextPopup';\r\n\r\nexport default RichTextPopup;","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport Measure from 'react-measure';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport setToolStyles from 'helpers/setToolStyles';\nimport { Swipeable } from 'react-swipeable';\nimport ColorPalette from 'components/ColorPalette';\n\nimport core from 'core';\n\nimport './InkSignature.scss';\n\nconst useForceUpdate = () => {\n  const [, setIt] = useState(false);\n  return () => setIt(it => !it);\n};\n\nconst propTypes = {\n  isModalOpen: PropTypes.bool,\n  _setSaveSignature: PropTypes.func,\n  isTabPanelSelected: PropTypes.bool,\n  disableCreateButton: PropTypes.func,\n  enableCreateButton: PropTypes.func,\n};\n\nconst InkSignature = ({\n  isModalOpen,\n  isTabPanelSelected,\n  disableCreateButton,\n  enableCreateButton\n}) => {\n  const canvasRef = useRef();\n  // the ref holds the path points of the underlying freehand annotation\n  // when users switch to a different tab the underlying signature annotation will change\n  // so this ref is used for setting the current uderlying annotation back when users switch back to the ink tab\n  const freeHandPathsRef = useRef();\n  // the ref holds an id that will be used to check if the newly added signature annotation is the same as the freehand annotation that's drawn in the canvas\n  const annotIdRef = useRef();\n  const [t] = useTranslation();\n  const [dimension, setDimension] = useState({});\n  const [drawn, setDrawn] = useState(false);\n\n  const forceUpdate = useForceUpdate();\n\n  useEffect(() => {\n    const signatureTool = core.getTool('AnnotationCreateSignature');\n    const canvas = canvasRef.current;\n\n    signatureTool.setSignatureCanvas(canvas);\n    const multiplier = window.Core.getCanvasMultiplier();\n    canvas.getContext('2d').scale(multiplier, multiplier);\n  }, []);\n\n  useEffect(() => {\n    if (isModalOpen) {\n      clearCanvas();\n    }\n  }, [isModalOpen]);\n\n  useEffect(() => {\n    async function resizeCanvasAsyncCall() {\n      if (isModalOpen && isTabPanelSelected) {\n        const signatureTool = core.getTool('AnnotationCreateSignature');\n        freeHandPathsRef.current ? enableCreateButton() : disableCreateButton();\n        signatureTool.setSignature(freeHandPathsRef.current);\n        annotIdRef.current = signatureTool.annot?.Id;\n        // use resizeCanvas here mainly for redawing the underlying signature annotation to make it show on the canvas\n        await signatureTool.resizeCanvas();\n      }\n    }\n    resizeCanvasAsyncCall();\n  }, [isTabPanelSelected, isModalOpen]);\n\n  useEffect(() => {\n    async function resizeCanvasAsyncCall() {\n      if (dimension.height && dimension.width) {\n        const signatureTool = core.getTool('AnnotationCreateSignature');\n        await signatureTool.resizeCanvas();\n      }\n    }\n    resizeCanvasAsyncCall();\n  }, [dimension]);\n\n  const clearCanvas = useCallback(() => {\n    const signatureTool = core.getTool('AnnotationCreateSignature');\n    signatureTool.clearSignatureCanvas();\n    freeHandPathsRef.current = null;\n    annotIdRef.current = null;\n    setDrawn(false);\n    disableCreateButton();\n  }, []);\n\n  const handleFinishDrawing = async () => {\n    const signatureTool = core.getTool('AnnotationCreateSignature');\n    if (!(await signatureTool.isEmptySignature())) {\n      // need to deep copy the paths because it will be modified\n      // when the annotation is added to the document\n      // we want to keep the unmodified paths so that users can keep drawing on the canvas\n      freeHandPathsRef.current = deepCopy(signatureTool.annot.getPaths());\n      annotIdRef.current = signatureTool.annot.Id;\n      setDrawn(true);\n      enableCreateButton();\n    }\n  };\n\n  const handleColorInputChange = (property, value) => {\n    setToolStyles('AnnotationCreateSignature', property, value);\n    const signatureTool = core.getTool('AnnotationCreateSignature');\n    if (signatureTool.annot) {\n      signatureTool.annot.StrokeColor = value;\n      signatureTool.resizeCanvas();\n    }\n    // hack for tool styles for signature not being on state\n    forceUpdate();\n  }\n\n  const deepCopy = paths => {\n    const pathsCopy = [];\n    for (let i = 0; i < paths.length; ++i) {\n      for (let j = 0; j < paths[i].length; ++j) {\n        if (!pathsCopy[i]) {\n          pathsCopy[i] = [];\n        }\n        pathsCopy[i][j] = new window.Core.Math.Point(paths[i][j].x, paths[i][j].y);\n      }\n    }\n\n    return pathsCopy;\n  };\n\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const toolStyles = signatureTool.defaults;\n\n  return (\n    <Measure bounds onResize={({ bounds }) => setDimension(bounds)}>\n      {({ measureRef }) => (\n        <div className=\"ink-signature\" ref={measureRef}>\n          <Swipeable\n            onSwiping={({ event }) => event.stopPropagation()} \n            className=\"canvas-colorpalette-container\"\n          >\n            <div className=\"ink-signature-canvas-container\">\n              <div className=\"ink-signature-sign-here\">\n                {drawn ? '' : t('message.signHere')}\n              </div>\n              <canvas\n                className=\"ink-signature-canvas\"\n                onMouseUp={handleFinishDrawing}\n                onTouchEnd={handleFinishDrawing}\n                onMouseLeave={handleFinishDrawing}\n                ref={canvasRef}\n              />\n            </div>\n            <div className=\"colorpalette-clear-container\">\n              <ColorPalette\n                  color={toolStyles['StrokeColor']}\n                  property=\"StrokeColor\"\n                  onStyleChange={(property, value) => handleColorInputChange(property, value)}\n                  overridePalette2={['#000000', '#4E7DE9', '#E44234']}\n              />\n              <button className=\"signature-clear\" onClick={clearCanvas} disabled={!drawn}>\n                {t('action.clear')}\n              </button>\n            </div>              \n          </Swipeable>\n        </div>\n      )}\n    </Measure>\n  );\n};\n\nInkSignature.propTypes = propTypes;\n\nexport default InkSignature;\n","import InkSignature from './InkSignature';\n\nexport default InkSignature;","\n// Crops the image more accurately by removing white space from all side of the image.\nfunction cropImageFromCanvas(canvas) {\n  const ctx = canvas.getContext('2d');\n  let width = canvas.width;\n  let height = canvas.height;\n  const pixels = { x: [], y: [] };\n  const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n  let x;\n  let y;\n  let index;\n\n  for (y = 0; y < height; y++) {\n    for (x = 0; x < width; x++) {\n      index = (y * width + x) * 4;\n      if (imageData.data[index + 3] > 0) {\n        pixels.x.push(x);\n        pixels.y.push(y);\n      }\n    }\n  }\n  pixels.x.sort(function(a, b) {\n    return a - b;\n  });\n  pixels.y.sort(function(a, b) {\n    return a - b;\n  });\n  const n = pixels.x.length - 1;\n\n  width = 1 + pixels.x[n] - pixels.x[0];\n  height = 1 + pixels.y[n] - pixels.y[0];\n  const cut = ctx.getImageData(pixels.x[0], pixels.y[0], width, height);\n\n  canvas.width = width;\n  canvas.height = height;\n  ctx.putImageData(cut, 0, 0);\n\n  return canvas.toDataURL();\n}\n\nexport default cropImageFromCanvas;","import React, { useState, useEffect, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport ColorPalette from 'components/ColorPalette';\nimport core from 'core';\nimport { isIOS } from 'helpers/device';\nimport cropImageFromCanvas from 'helpers/cropImageFromCanvas';\nimport selectors from 'selectors';\nimport { useTranslation } from 'react-i18next';\n\nimport './TextSignature.scss';\n\nconst propTypes = {\n  isModalOpen: PropTypes.bool,\n  isTabPanelSelected: PropTypes.bool,\n  disableCreateButton: PropTypes.func,\n  enableCreateButton: PropTypes.func,\n};\n\nconst FONT_SIZE = 96;\n\nconst useForceUpdate = () => {\n  const [, setIt] = useState(false);\n  return () => setIt(it => !it);\n};\n\nconst TextSignature = ({\n  isModalOpen,\n  isTabPanelSelected,\n  disableCreateButton,\n  enableCreateButton\n}) => {\n  const fonts = useSelector(state => selectors.getSignatureFonts(state));\n  // const [value, setValue] = useState(core.getDisplayAuthor(core.getCurrentUser()));\n  const [value, setValue] = useState('');\n  const [activeIndex, setActiveIndex] = useState(0);\n  const [isDefaultValue, setIsDefaultValue] = useState(true);\n  const [fontColor, setFontColor] = useState(\"#000000\");\n  const inputRef = useRef();\n  const canvasRef = useRef();\n  const textDivsRef = useRef([]);\n  const [t] = useTranslation();\n\n  const forceUpdate = useForceUpdate();\n\n  useEffect(() => {\n    // this can happen when an user added a new signature font, select it and then removed it\n    // in this case we just assume there's at least one font and set the active index to 0\n    if (activeIndex >= fonts.length) {\n      setActiveIndex(0);\n    }\n  }, [activeIndex, fonts]);\n\n  useEffect(() => {\n    const canvas = canvasRef.current;\n    const ctx = canvas.getContext('2d');\n    const multiplier = window.Core.getCanvasMultiplier();\n    const textClipPadding = 100;\n\n    const resizeCanvas = () => {\n      let { width, height } = textDivsRef.current[\n        activeIndex\n      ].getBoundingClientRect();\n      width = width + textClipPadding;\n      height = height + textClipPadding;\n      canvas.style.width = `${width}px`;\n      canvas.style.height = `${height}px`;\n      canvas.width = width * multiplier;\n      canvas.height = height * multiplier;\n    };\n\n    const setFont = () => {\n      ctx.fillStyle = fontColor;\n      ctx.textAlign = 'center';\n      ctx.textBaseline = 'middle';\n      ctx.font = `${FONT_SIZE * multiplier}px ${fonts[activeIndex]}`;\n    };\n    const drawTextSignature = () => {\n      const { width, height } = canvas;\n      ctx.clearRect(0, 0, width, height);\n      ctx.fillText(value, width / 2, height / 2);\n    };\n\n    if (isTabPanelSelected) {\n      resizeCanvas();\n      setFont();\n      drawTextSignature();\n      if (isModalOpen) {\n        setSignature();\n      }\n    }\n  }, [activeIndex, isTabPanelSelected, value, fonts, fontColor]);\n\n  useEffect(() => {\n    setFontColor(fontColor);\n    if (isModalOpen && isTabPanelSelected) {\n      setValue(core.getDisplayAuthor(core.getCurrentUser()));\n      setSignature();\n    }\n  }, [isModalOpen, isTabPanelSelected]);\n\n  useEffect(() => {\n    if (isTabPanelSelected) {\n      inputRef.current?.focus();\n\n      if (isIOS) {\n        inputRef.current.setSelectionRange(0, 9999);\n      } else {\n        inputRef.current.select();\n      }\n    }\n  }, [isTabPanelSelected]);\n\n  useEffect(() => {\n    const onUpdateAnnotationPermission = () => {\n      if (isDefaultValue) {\n        setValue(core.getDisplayAuthor(core.getCurrentUser()));\n        enableCreateButton();\n      }\n    };\n\n    core.addEventListener('updateAnnotationPermission', onUpdateAnnotationPermission);\n    return () => {\n      core.removeEventListener('updateAnnotationPermission', onUpdateAnnotationPermission);\n    };\n  }, [isDefaultValue]);\n\n  const setSignature = () => {\n    const signatureTool = core.getTool('AnnotationCreateSignature');\n    const canvas = canvasRef.current;\n\n    const signatureValue = value || '';\n    if (signatureValue.trim()) {\n      const base64 = cropImageFromCanvas(canvas)\n      signatureTool.setSignature(base64);\n      enableCreateButton();\n    } else {\n      signatureTool.setSignature(null);\n      disableCreateButton();\n    }\n  };\n\n  const handleInputChange = e => {\n    setIsDefaultValue(false);\n    // Use regex instead of 'trimStart' for IE11 compatibility\n    const value = e.target.value.replace(/^\\s+/g, '');\n    setSignature();\n    setValue(value);\n  };\n\n  const handleColorInputChange = (property, value) => {\n    setFontColor(value)\n    // hack for tool styles for signature not being on state\n    forceUpdate();\n  }\n\n\n  return (\n    <div className=\"text-signature\">\n      <div className=\"text-signature-input-container\">\n        <label>\n          <input\n            className=\"text-signature-input\"\n            ref={inputRef}\n            type=\"text\"\n            value={value}\n            placeholder=\"Type Signature\"\n            onChange={handleInputChange}\n            style={{fontFamily: fonts, fontSize: FONT_SIZE*2/3, color:fontColor}}\n            disabled={!(isModalOpen && isTabPanelSelected)}\n          />\n        </label>\n      </div>\n      {fonts.map((font, index) => (\n        <div\n          key={font}\n          className={classNames({\n            'text-signature-text': true,\n            active: index === activeIndex,\n          })}\n          style={{ fontFamily: font, fontSize: FONT_SIZE, color:fontColor}}\n          onClick={() => setActiveIndex(index)}\n        >\n          <div\n            className=\"text-container\"\n            ref={el => {\n              textDivsRef.current[index] = el;\n            }}\n          >\n            {value}\n          </div>\n        </div>\n      ))}\n      <canvas ref={canvasRef} />\n      <div className=\"colorpalette-clear-container\">\n        <ColorPalette\n          color={new window.Annotations.Color(fontColor)}\n          property=\"fontColor\"\n          onStyleChange={(property, value) => handleColorInputChange(property, value)}\n          overridePalette2={['#000000', '#4E7DE9', '#E44234']}\n        />\n        <button className=\"signature-clear\" onClick={() => setValue('')} disabled={!(isModalOpen && isTabPanelSelected) || value.length === 0}>\n          {t('action.clear')}\n        </button>\n      </div>\n    </div>\n  );\n};\n\nTextSignature.propTypes = propTypes;\n\nexport default TextSignature;\n","import TextSignature from './TextSignature';\n\nexport default TextSignature;","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nimport core from 'core';\n\nimport './ImageSignature.scss';\n\nconst propTypes = {\n  isModalOpen: PropTypes.bool,\n  isTabPanelSelected: PropTypes.bool,\n  disableCreateButton: PropTypes.func,\n  enableCreateButton: PropTypes.func,\n};\n\nconst acceptedFileTypes = ['png', 'jpg', 'jpeg'];\nlet fileSize = null;\nlet acceptedFileSize = null;\nconst ImageSignature = ({\n  isModalOpen,\n  isTabPanelSelected,\n  disableCreateButton,\n  enableCreateButton,\n}) => {\n  const [imageSrc, setImageSrc] = useState(null);\n  const [isDragging, setIsDragging] = useState(false);\n  const [errorMessage, setErrorMessage] = useState('');\n  const fileInputRef = useRef();\n  const [t] = useTranslation();\n  \n  useEffect(() => {\n    const signatureTool = core.getTool('AnnotationCreateSignature');\n    acceptedFileSize = signatureTool['ACCEPTED_FILE_SIZE'];\n    if (!isModalOpen) {\n      setImageSrc(null);\n    } else if (isModalOpen && isTabPanelSelected) {\n      signatureTool.setSignature(imageSrc, fileSize);\n      imageSrc ? enableCreateButton() : disableCreateButton();\n    }\n  }, [imageSrc, isTabPanelSelected, isModalOpen]);\n\n  const handleFileChange = e => {\n    readFile(e.target.files[0]);\n  };\n\n  const handleDragEnter = e => {\n    e.preventDefault();\n    setIsDragging(true);\n  };\n\n  const handleDragOver = e => {\n    e.preventDefault();\n  };\n\n  const handleDragLeave = e => {\n    e.preventDefault();\n\n    if (!e.target.parentNode.contains(e.relatedTarget)) {\n      setIsDragging(false);\n    }\n  };\n\n  const handleDragExit = e => {\n    e.preventDefault();\n    setIsDragging(false);\n  };\n\n  const handleFileDrop = e => {\n    e.preventDefault();\n    setIsDragging(false);\n    const { files } = e.dataTransfer;\n\n    if (files.length) {\n      readFile(files[0]);\n    }\n  };\n\n  const readFile = file => {\n    const fileReader = new FileReader();\n    fileSize = file.size;\n\n    fileReader.onload = e => {\n      const imageSrc = e.target.result;\n      const validType = acceptedFileTypes.some(\n        type => imageSrc.indexOf(`image/${type}`) !== -1,\n      );\n\n      if (validType) {\n        setErrorMessage('');\n        setImageSrc(imageSrc);\n        enableCreateButton();\n      } else {\n        disableCreateButton();\n        setErrorMessage(\n          t('message.imageSignatureAcceptedFileTypes', {\n            acceptedFileTypes: acceptedFileTypes.join(', '),\n          }),\n        );\n      }\n    };\n\n    fileReader.readAsDataURL(file);\n  };\n\n  const hasLimit = typeof acceptedFileSize === 'number' && acceptedFileSize > 0 && fileSize > 0;\n  const fileSizeCheck = !hasLimit ||  fileSize < acceptedFileSize;\n\n  let isMobileDevice = false;\n  // device detection\n  if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) \n    || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(navigator.userAgent.substr(0,4))) { \n    isMobileDevice = true;\n  }\n  let containerClass = isMobileDevice ? \"image-signature-upload-container mobile\" : \"image-signature-upload-container\";\n  containerClass = isDragging ? \"image-signature-upload-container dragging\" : \"image-signature-upload-container\";\n  return (\n    <div className=\"image-signature\">\n      {imageSrc && fileSizeCheck ? (\n        <div className=\"image-signature-image-container\">\n          <img src={imageSrc} />\n        </div>\n      ) : (\n      <>\n        <div \n          className=\"image-signature-overlay\"\n          onDragEnter={handleDragEnter}\n          onDragLeave={handleDragLeave}\n          onDragOver={handleDragOver}\n          onDrop={handleFileDrop}\n          onDragExit={handleDragExit}\n        />\n        { isDragging &&\n          <div \n            className=\"image-signature-modal-overlay\"\n            onDragEnter={handleDragEnter}\n            onDragLeave={handleDragLeave}\n            onDragOver={handleDragOver}\n            onDrop={handleFileDrop}\n            onDragExit={handleDragExit}\n          /> }\n        <div\n          className={containerClass}\n        >\n          {!isMobileDevice &&\n          <div className=\"image-signature-dnd\">\n            {t('option.signatureModal.dragAndDrop')}\n          </div>}\n          {!isMobileDevice &&\n          <div className=\"image-signature-separator\">\n            {t('option.signatureModal.or')}\n          </div>}\n          {isMobileDevice &&\n          <div className=\"image-signature-separator\">\n            {t('option.signatureModal.selectImage')}\n          </div>}\n          <div className=\"image-signature-upload\">\n            <input\n              ref={fileInputRef}\n              id=\"upload\"\n              type=\"file\"\n              accept={acceptedFileTypes.map(type => `.${type}`).join(',')}\n              onChange={handleFileChange}\n              disabled={!(isModalOpen && isTabPanelSelected)}\n            />\n            <div\n              onClick={() => fileInputRef.current.click()}\n              className=\"pick-image-button\"\n            >\n              {t('option.signatureModal.pickImage')}\n            </div>\n          </div>\n          {errorMessage && (\n            <div className=\"image-signature-error\">{errorMessage}</div>\n          )}\n        </div>\n      </>\n      )}\n    </div>\n  );\n};\n\nImageSignature.propTypes = propTypes;\n\nexport default ImageSignature;\n","import ImageSignature from './ImageSignature';\n\nexport default ImageSignature;","import React, { useCallback, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { FocusTrap } from '@pdftron/webviewer-react-toolkit';\n\nimport { Tabs, Tab, TabPanel } from 'components/Tabs';\nimport InkSignature from 'components/SignatureModal/InkSignature';\nimport TextSignature from 'components/SignatureModal/TextSignature';\nimport ImageSignature from 'components/SignatureModal/ImageSignature';\nimport Button from 'components/Button';\n\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { Swipeable } from 'react-swipeable';\nimport './SignatureModal.scss';\n\nconst SignatureModal = () => {\n  const [isDisabled, isOpen, activeToolName, displayedSignatures] = useSelector(state => [\n    selectors.isElementDisabled(state, 'signatureModal'),\n    selectors.isElementOpen(state, 'signatureModal'),\n    selectors.getActiveToolName(state),\n    selectors.getDisplayedSignatures(state),\n  ]);\n\n  const [createButtonDisabled, setCreateButtonDisabled] = useState();\n\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n\n  // Hack to close modal if hotkey to open other tool is used.\n  useEffect(() => {\n    if (activeToolName !== 'AnnotationCreateSignature') {\n      dispatch(\n        actions.closeElements([\n          'signatureModal',\n          'signatureOverlay',\n        ]),\n      );\n    }\n  }, [dispatch, activeToolName]);\n\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(\n        actions.closeElements([\n          'printModal',\n          'loadingModal',\n          'progressModal',\n          'errorModal',\n        ]),\n      );\n    }\n  }, [dispatch, isOpen]);\n\n  const closeModal = () => {\n    signatureTool.clearLocation();\n    signatureTool.setSignature(null);\n    dispatch(actions.closeElement('signatureModal'));\n  };\n\n  const createSignature = async () => {\n    if (!(await signatureTool.isEmptySignature())) {\n      signatureTool.saveSignatures(signatureTool.annot);\n\n      dispatch(actions.setSelectedDisplayedSignatureIndex(displayedSignatures.length));\n      core.setToolMode('AnnotationCreateSignature');\n\n      if (signatureTool.hasLocation()) {\n        await signatureTool.addSignature();\n      } else {\n        await signatureTool.showPreview();\n      }\n      dispatch(actions.closeElement('signatureModal'));\n    }\n  };\n\n  const disableCreateButton = useCallback(() => {\n    setCreateButtonDisabled(true);\n  }, [createButtonDisabled]);\n\n  const enableCreateButton = useCallback(() => {\n    setCreateButtonDisabled(false);\n  }, [createButtonDisabled]);\n\n  const modalClass = classNames({\n    Modal: true,\n    SignatureModal: true,\n    open: isOpen,\n    closed: !isOpen,\n  });\n\n  return isDisabled ? null : (\n    <Swipeable\n      onSwipedUp={closeModal}\n      onSwipedDown={closeModal}\n      preventDefaultTouchmoveEvent\n    >\n      <FocusTrap locked={isOpen}>\n        <div\n          className={modalClass}\n          data-element=\"signatureModal\"\n        >\n          <div\n            className=\"container\"\n            onMouseDown={e => e.stopPropagation()}\n          >\n            <div className=\"swipe-indicator\" />\n            <Tabs id=\"signatureModal\">\n              <div className=\"header-container\">\n                <div className=\"header\">\n                  <p>{t(`option.signatureModal.modalName`)}</p>\n                  <Button\n                    className=\"signatureModalCloseButton\"\n                    dataElement=\"signatureModalCloseButton\"\n                    title=\"action.close\"\n                    img=\"ic_close_black_24px\"\n                    onClick={closeModal}\n                  />\n                </div>\n                <div className=\"tab-list\">\n                  <Tab dataElement=\"inkSignaturePanelButton\">\n                    <button className=\"tab-options-button\">\n                      {t('action.draw')}\n                    </button>\n                  </Tab>\n                  <div className=\"tab-options-divider\" />\n                  <Tab dataElement=\"textSignaturePanelButton\">\n                    <button className=\"tab-options-button\">\n                      {t('action.type')}\n                    </button>\n                  </Tab>\n                  <div className=\"tab-options-divider\" />\n                  <Tab dataElement=\"imageSignaturePanelButton\">\n                    <button className=\"tab-options-button\">\n                      {t('action.upload')}\n                    </button>\n                  </Tab>\n                </div>\n              </div>\n              <TabPanel dataElement=\"inkSignaturePanel\">\n                <InkSignature\n                  isModalOpen={isOpen}\n                  enableCreateButton={enableCreateButton}\n                  disableCreateButton={disableCreateButton}\n                />\n              </TabPanel>\n              <TabPanel dataElement=\"textSignaturePanel\">\n                <TextSignature\n                  isModalOpen={isOpen}\n                  enableCreateButton={enableCreateButton}\n                  disableCreateButton={disableCreateButton}\n                />\n              </TabPanel>\n              <TabPanel dataElement=\"imageSignaturePanel\">\n                <ImageSignature\n                  isModalOpen={isOpen}\n                  enableCreateButton={enableCreateButton}\n                  disableCreateButton={disableCreateButton}\n                />\n              </TabPanel>\n\n              <div className=\"footer\">\n                <button className=\"signature-create\" onClick={createSignature} disabled={!(isOpen) || createButtonDisabled}>\n                  {t('action.create')}\n                </button>\n              </div>\n            </Tabs>\n          </div>\n        </div>\n      </FocusTrap>\n    </Swipeable>\n  );\n};\n\nexport default SignatureModal;\n","import SignatureModal from './SignatureModal';\n\nexport default SignatureModal;","// https://websitesetup.org/web-safe-fonts-html-css/\nexport const FONTS = [\n  'Arial',\n  'Times New Roman',\n  'Tahoma ',\n  'Trebuchet MS',\n  'Courier',\n  'Verdana',\n  'Georgia',\n  'Palatino',\n  'Comic Sans MS',\n  'Arial Black',\n  'Impact',\n];","import ColorPalette from 'components/ColorPalette';\nimport Slider from 'components/Slider';\nimport { circleRadius } from 'constants/slider';\nimport core from 'core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { withTranslation } from 'react-i18next';\nimport Button from 'components/Button';\nimport { FONTS } from './web-fonts';\nimport './WatermarkModal.scss';\nimport ModalWrapper from '../../ModalWrapper';\n\nimport { Swipeable } from 'react-swipeable';\nimport DataElementWrapper from 'src/components/DataElementWrapper';\n\nconst DESIRED_WIDTH = 300;\nconst DESIRED_HEIGHT = 300;\n\n// numbers were taken from font dropdown menu in google docs\nconst FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 24, 30, 36, 48, 60, 72, 96];\nconst DEFAULT_FONT_SIZE = 48;\n\nconst WATERMARK_LOCATIONS = {\n  CENTER: 'center',\n  TOP_LEFT: 'topLeft',\n  TOP_RIGHT: 'topRight',\n  TOP_CENTER: 'topCenter',\n  BOT_LEFT: 'bottomLeft',\n  BOT_RIGHT: 'bottomRight',\n  BOT_CENTER: 'bottomCenter',\n};\n\nconst FORM_FIELD_KEYS = {\n  location: 'location',\n  fontSize: 'fontSize',\n  text: 'text',\n  color: 'color',\n  opacity: 'opacity',\n  font: 'font',\n  isBolded: 'isBolded',\n  isItalic: 'isItalic',\n  isUnderlined: 'isUnderlined',\n};\n\nconst DEFAULT_VALS = {\n  [FORM_FIELD_KEYS.location]: WATERMARK_LOCATIONS.CENTER,\n  [FORM_FIELD_KEYS.fontSize]: DEFAULT_FONT_SIZE,\n  [FORM_FIELD_KEYS.text]: '',\n  // red\n  [FORM_FIELD_KEYS.color]: new window.Annotations.Color(228, 66, 52),\n  [FORM_FIELD_KEYS.opacity]: 100,\n  [FORM_FIELD_KEYS.font]: FONTS[0],\n  [FORM_FIELD_KEYS.isBolded]: false,\n  [FORM_FIELD_KEYS.isItalic]: false,\n  [FORM_FIELD_KEYS.isUnderlined]: false,\n};\n\n// Values come from https://www.pdftron.com/api/web/Core.DocumentViewer.html#setWatermark__anchor\nconst WATERMARK_API_LOCATIONS = {\n  [WATERMARK_LOCATIONS.CENTER]: 'diagonal',\n  [WATERMARK_LOCATIONS.TOP_LEFT]: 'headerLeft',\n  [WATERMARK_LOCATIONS.TOP_RIGHT]: 'headerRight',\n  [WATERMARK_LOCATIONS.TOP_CENTER]: 'headerCenter',\n  [WATERMARK_LOCATIONS.BOT_LEFT]: 'footerLeft',\n  [WATERMARK_LOCATIONS.BOT_RIGHT]: 'footerRight',\n  [WATERMARK_LOCATIONS.BOT_CENTER]: 'footerCenter',\n};\n\nclass WatermarkModal extends React.PureComponent {\n  static propTypes = {\n    isVisible: PropTypes.bool,\n    pageIndexToView: PropTypes.number,\n    modalClosed: PropTypes.func,\n    formSubmitted: PropTypes.func,\n    t: PropTypes.func.isRequired,\n  };\n\n  constructor(props) {\n    super(props);\n    const locationSettings = this.initializeLocationSettings();\n    this.preExistingWatermark = undefined;\n    this.state = {\n      isColorPaletteVisible: false,\n      locationSettings,\n      previousLocationSettings: locationSettings,\n      lockFocus: false,\n    };\n    this.canvasContainerRef = React.createRef();\n  }\n\n  componentDidUpdate(prevProps) {\n    core.addEventListener('documentLoaded', this.closeModal);\n\n    if (this.props.isVisible !== prevProps.isVisible) {\n      // Sets focus with a slight delay after modal becomes visible in order to\n      // prevent stack overflow with competing print modal focus lock.\n      if (this.props.isVisible) {\n        this.setState({ lockFocus: true });\n      } else {\n        this.setState({ lockFocus: false });\n      }\n\n      this.setState(\n        {\n          isColorPaletteVisible: false,\n        },\n        () => this.handleWatermarkOnVisibilityChanged(),\n      );\n    }\n  }\n\n  handleWatermarkOnVisibilityChanged = () => {\n    if (this.props.isVisible) {\n      this.setState(\n        {\n          locationSettings: this.state.previousLocationSettings,\n        },\n        async() => {\n          // Store the pre-existing watermark (if any) before we overwrite it\n          this.preExistingWatermark = await core.getWatermark();\n          this.addWatermarks();\n        },\n      );\n    } else {\n      this.removeWatermarkCreatedByModal();\n      core.setWatermark(this.preExistingWatermark);\n    }\n  };\n\n  addWatermarks = () => {\n    const watermarkOptions = this.createWatermarks();\n\n    core.setWatermark(watermarkOptions);\n\n    const pageHeight = core.getPageHeight(this.props.pageIndexToView + 1);\n    const pageWidth = core.getPageWidth(this.props.pageIndexToView + 1);\n\n    const desiredZoomForWidth = DESIRED_WIDTH / pageWidth;\n    const desiredZoomForHeight = DESIRED_HEIGHT / pageHeight;\n\n    const desiredZoom = Math.min(desiredZoomForHeight, desiredZoomForWidth);\n\n    core.getDocument().loadCanvas({\n      pageNumber: this.props.pageIndexToView + 1,\n      zoom: desiredZoom,\n      drawComplete: canvas => {\n        const nodes = this.canvasContainerRef.current.childNodes;\n        if (nodes && nodes.length > 0) {\n          this.canvasContainerRef.current.removeChild(nodes[0]);\n        }\n        canvas.style.border = '1px solid black';\n        canvas.style.height = this.canvasContainerRef.current.style.height;\n        this.canvasContainerRef.current.appendChild(canvas);\n      },\n    });\n\n    // Note: do not update and refresh the doc else it may affect other docs as well\n  };\n\n  // eslint-disable-next-line class-methods-use-this\n  constructWatermarkOption = value => {\n    const fontStyles = [];\n    if (value.isBolded) {\n      fontStyles.push(core.getFontStyles().BOLD);\n    }\n    if (value.isItalic) {\n      fontStyles.push(core.getFontStyles().ITALIC);\n    }\n    if (value.isUnderlined) {\n      fontStyles.push(core.getFontStyles().UNDERLINE);\n    }\n    const watermarkOption = {\n      fontSize: value.fontSize,\n      fontFamily: value.font,\n      color: value.color.toString(),\n      opacity: value.opacity,\n      text: value.text,\n      fontStyles,\n    };\n\n    return watermarkOption;\n  };\n\n  createWatermarks = () => {\n    const watermarks = {};\n\n    Object.keys(WATERMARK_LOCATIONS).forEach(key => {\n      const temp = this.constructWatermarkOption(\n        this.state.locationSettings[key],\n      );\n      const value = WATERMARK_LOCATIONS[key];\n      watermarks[WATERMARK_API_LOCATIONS[value]] = temp;\n    });\n    return watermarks;\n  };\n\n  // eslint-disable-next-line class-methods-use-this\n  removeWatermarkCreatedByModal = () => {\n    core.setWatermark({});\n  };\n\n  closeModal = () => {\n    this.props.modalClosed();\n  };\n\n  handleInputChange = (key, value) => {\n    const currLocationSettings = {\n      ...this.state.locationSettings,\n    };\n    const currSelectedLocation = this.getCurrentSelectedLocation();\n    currLocationSettings[currSelectedLocation] = {\n      ...currLocationSettings[currSelectedLocation],\n      [key]: value,\n    };\n\n    this.setState(\n      {\n        locationSettings: currLocationSettings,\n      },\n      () => {\n        this.addWatermarks();\n      },\n    );\n  };\n\n  resetForm = event => {\n    event.preventDefault();\n    const locationSettings = this.initializeLocationSettings();\n    this.setState(\n      {\n        locationSettings,\n      },\n      () => this.addWatermarks(),\n    );\n  };\n\n  onOkPressed = () => {\n    this.setState(\n      {\n        previousLocationSettings: this.state.locationSettings,\n      },\n      () => {\n        // the order of these fxn calls matter\n        this.props.modalClosed();\n        const watermarkOptions = this.createWatermarks();\n        this.props.formSubmitted(watermarkOptions);\n      },\n    );\n  };\n\n  getCirclePosn = (lineLength, opacity) => {\n    const lineStart = circleRadius;\n    return opacity * lineLength + lineStart\n  };\n\n  setColorPaletteVisibility = visible => {\n    this.setState({ isColorPaletteVisible: visible });\n  };\n\n  onLocationChanged = key => {\n    const currLocationSettings = {\n      ...this.state.locationSettings,\n    };\n    Object.keys(currLocationSettings).forEach(locationKey => {\n      let locationSetting = currLocationSettings[locationKey];\n      locationSetting = {\n        ...locationSetting,\n        isSelected: key === locationKey,\n      };\n      currLocationSettings[locationKey] = locationSetting;\n    });\n\n    this.setState(\n      {\n        locationSettings: currLocationSettings,\n      },\n      () => {\n        this.addWatermarks();\n      },\n    );\n  };\n\n  // eslint-disable-next-line class-methods-use-this\n  initializeLocationSettings = () => {\n    const locationSettings = {};\n    Object.keys(WATERMARK_LOCATIONS).forEach(key => {\n      // ignore location as it is redundant as we already have location key\n      const { ...others } = DEFAULT_VALS;\n      const temp = {\n        ...others,\n        isSelected: WATERMARK_LOCATIONS[key] === DEFAULT_VALS.location,\n      };\n      locationSettings[key] = temp;\n    });\n    return locationSettings;\n  };\n\n  // eslint-disable-next-line class-methods-use-this\n  getKeyByValue = (object, value) =>\n    Object.keys(object).find(key => object[key] === value);\n\n  getCurrentSelectedLocation = () =>\n    Object.keys(this.state.locationSettings).find(locationKey => {\n      const locationSetting = this.state.locationSettings[locationKey];\n      return locationSetting.isSelected;\n    });\n\n  onColorChanged = newColor => {\n    const currLocation = this.getCurrentSelectedLocation();\n    const currLocationSetting = this.state.locationSettings[currLocation];\n    currLocationSetting[FORM_FIELD_KEYS.color] = new window.Annotations.Color(\n      newColor.R,\n      newColor.G,\n      newColor.B,\n    );\n    const locationSettings = {\n      ...this.state.locationSettings,\n    };\n    if (!currLocationSetting[FORM_FIELD_KEYS.text]) {\n      // if text is undefined, persist the changed color to other location settings (customer's request)\n      Object.keys(WATERMARK_LOCATIONS).forEach(location => {\n        const locationSetting = locationSettings[location];\n        if (!locationSetting[FORM_FIELD_KEYS.text]) {\n          locationSetting[FORM_FIELD_KEYS.color] = new window.Annotations.Color(\n            newColor.R,\n            newColor.G,\n            newColor.B,\n          );\n        }\n      });\n    }\n    this.setState(\n      {\n        locationSettings,\n      },\n      () => {\n        this.addWatermarks();\n      },\n    );\n  };\n\n  render() {\n    const { isVisible } = this.props;\n    if (!isVisible) {\n      return null;\n    }\n\n    const { t } = this.props;\n\n    const currLocation = this.getCurrentSelectedLocation();\n    const formInfo = this.state.locationSettings[currLocation];\n    return (\n      <Swipeable\n        onSwipedUp={this.closeModal}\n        onSwipedDown={this.closeModal}\n        preventDefaultTouchmoveEvent>\n        <DataElementWrapper\n          className={'Modal Watermark'}\n          id=\"watermarkModal\"\n          data-element=\"watermarkModal\">\n          <ModalWrapper isOpen={this.state.lockFocus} title={'option.watermark.addWatermark'}\n            closeButtonDataElement={'watermarkModalCloseButton'} \n            onCloseClick={this.closeModal}>\n            <div className=\"swipe-indicator\" />\n\n            <div className=\"form-content-container\">\n              <div\n                className=\"canvas-container\"\n                ref={this.canvasContainerRef}\n              ></div>\n\n              <div className=\"watermark-settings\">\n                <form id=\"form\" onSubmit={e => e.preventDefault()}>\n                  <div className=\"form-field\">\n                    <label htmlFor=\"location\">{t(`option.watermark.location`)}</label>\n                    <select\n                      id=\"location\"\n                      onChange={event => {\n                        this.onLocationChanged(event.target.value);\n                      }}\n                    >\n                      {Object.keys(WATERMARK_LOCATIONS).map(key => (\n                        <option key={key} value={key}>{t(`option.watermark.locations.${WATERMARK_LOCATIONS[key]}`)}</option>\n                      ))}\n                    </select>\n                    <div className=\"separator divider\"></div>\n                  </div>\n\n                  <div className=\"form-field\">\n                    <label htmlFor=\"textInput\">{t(`option.watermark.text`)}</label>\n                    <input\n                      className=\"text-input\"\n                      id=\"textInput\"\n                      value={formInfo[FORM_FIELD_KEYS.text]}\n                      onChange={event =>\n                        this.handleInputChange(\n                          FORM_FIELD_KEYS.text,\n                          event.target.value,\n                        )\n                      }\n                      type=\"text\"\n                    />\n                  </div>\n                  <div className=\"form-field\">\n                    <label htmlFor=\"fonts\">{t(`option.watermark.font`)}</label>\n                    <select\n                      id=\"fonts\"\n                      value={formInfo[FORM_FIELD_KEYS.font]}\n                      onChange={event =>\n                        this.handleInputChange(\n                          FORM_FIELD_KEYS.font,\n                          event.target.value,\n                        )\n                      }\n                    >\n                      {FONTS.map(font => (\n                        <option key={font}>{font}</option>\n                      ))}\n                    </select>\n                  </div>\n                  <div className=\"form-field\">\n                    <label htmlFor=\"fontSize\">{t(`option.watermark.size`)}</label>\n                    <select\n                      id=\"fontSize\"\n                      value={formInfo[FORM_FIELD_KEYS.fontSize]}\n                      onChange={event =>\n                        this.handleInputChange(\n                          FORM_FIELD_KEYS.fontSize,\n                          +event.target.value,\n                        )\n                      }\n                    >\n                      {FONT_SIZES.map(fontSize => (\n                        <option key={fontSize}>{fontSize}</option>\n                      ))}\n                    </select>\n                  </div>\n                  <div className=\"form-field opacity-slider\" id=\"opacitySlider\">\n                    <Slider\n                      property={'opacity'} // arbitrary property name. this property isn't used in this file\n                      displayProperty={'opacity'} // arbitrary property name. this property isn't used in this file\n                      value={formInfo[FORM_FIELD_KEYS.opacity] / 100}\n                      getDisplayValue={(opacity) => `${Math.round(opacity * 100)}%`}\n                      getCirclePosition={this.getCirclePosn}\n                      convertRelativeCirclePositionToValue={circlePosn =>\n                        circlePosn\n                      }\n                      onSliderChange={() => {}}\n                      onStyleChange={(property, value) =>\n                        this.handleInputChange(\n                          FORM_FIELD_KEYS.opacity,\n                          Math.round(value * 100),\n                        )\n                      }\n                    />\n                  </div>\n                  <div className=\"form-field\">\n                    <label>{t(`option.watermark.style`)}</label>\n                    <div className=\"style-container\">\n                      <Button\n                        id=\"currentColorCell\"\n                        className=\"colorSelect\"\n                        ariaLabel=\"colorSelectButton\"\n                        style={{\n                          backgroundColor: formInfo[\n                            FORM_FIELD_KEYS.color\n                          ].toHexString(),\n                        }}\n                        onClick={() =>\n                          this.setColorPaletteVisibility(\n                            !this.state.isColorPaletteVisible,\n                          )\n                        }\n                      />\n                      <div className=\"style-container\">\n                        <Button\n                          dataElement=\"boldText\"\n                          img=\"icon-text-bold\"\n                          isActive={formInfo[FORM_FIELD_KEYS.isBolded]}\n                          onClick={() =>\n                            this.handleInputChange(\n                              FORM_FIELD_KEYS.isBolded,\n                              !formInfo[FORM_FIELD_KEYS.isBolded],\n                            )\n                          }\n                        />\n                        <Button\n                          dataElement=\"italicizeText\"\n                          img=\"icon-text-italic\"\n                          isActive={formInfo[FORM_FIELD_KEYS.isItalic]}\n                          onClick={() =>\n                            this.handleInputChange(\n                              FORM_FIELD_KEYS.isItalic,\n                              !formInfo[FORM_FIELD_KEYS.isItalic],\n                            )\n                          }\n                        />\n                        <Button\n                          dataElement=\"underlineText\"\n                          img=\"icon-text-underline\"\n                          isActive={formInfo[FORM_FIELD_KEYS.isUnderlined]}\n                          onClick={() =>\n                            this.handleInputChange(\n                              FORM_FIELD_KEYS.isUnderlined,\n                              !formInfo[FORM_FIELD_KEYS.isUnderlined],\n                            )\n                          }\n                        />\n                      </div>\n                    </div>\n\n                    {this.state.isColorPaletteVisible && (\n                      <div\n                        className={'Popup StylePopup'}\n                        id=\"stylePopup\"\n                        onClick={() => this.setColorPaletteVisibility(false)}\n                      >\n                        <ColorPalette\n                          color={formInfo[FORM_FIELD_KEYS.color]}\n                          property={'TextColor'} // arbitrary property name. this property isn't used in this file\n                          onStyleChange={(property, color) => {\n                            this.onColorChanged(color);\n                            this.setColorPaletteVisibility(false);\n                          }}\n                        />\n                      </div>\n                    )}\n                    \n                  </div>\n                </form>\n              </div>\n            </div>\n\n            <div className=\"divider\"></div>\n            <div className=\"button-container\">\n              <button\n                className=\"reset-settings\"\n                id=\"reset\"\n                onClick={this.resetForm}\n              >\n                {t(`option.watermark.resetAllSettings`)}\n              </button>\n              <button\n                className=\"ok button\"\n                id=\"submit\"\n                onClick={this.onOkPressed}\n              >\n                {t(`action.add`)}\n              </button>\n            </div>\n          </ModalWrapper>\n        </DataElementWrapper>\n      </Swipeable>\n    );\n  }\n}\n\nexport default withTranslation()(WatermarkModal);\n","import WatermarkModal from './WatermarkModal';\nexport default WatermarkModal;\n","/**\n * Contains string enums for all layouts for WebViewer. They are used to dictate how pages are placed within the viewer.\n * @name UI.LayoutMode\n * @property {string} Single Only the current page will be visible.\n * @property {string} Continuous All pages are visible in one column.\n * @property {string} Facing Up to two pages will be visible.\n * @property {string} FacingContinuous All pages visible in two columns.\n * @property {string} FacingCover All pages visible in two columns, with an even numbered page rendered first. (i.e. The first page of the document is rendered by itself on the right side of the viewer to simulate a book cover.)\n * @property {string} FacingCoverContinuous All pages visible, with an even numbered page rendered first. (i.e. The first page of the document is rendered by itself on the right side of the viewer to simulate a book cover.)\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const LayoutMode = instance.UI.LayoutMode;\n    instance.UI.setLayoutMode(LayoutMode.Single);\n  });\n */\n\nexport default {\n  Single: 'Single',\n  Continuous: 'Continuous',\n  Facing: 'Facing',\n  FacingContinuous: 'FacingContinuous',\n  FacingCover: 'CoverFacing',\n  FacingCoverContinuous: 'Cover',\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\n\nimport WatermarkModal from 'components/PrintModal/WatermarkModal';\n\nimport core from 'core';\nimport getPageArrayFromString from 'helpers/getPageArrayFromString';\nimport getClassName from 'helpers/getClassName';\nimport { creatingPages, printPages } from 'helpers/print';\nimport LayoutMode from 'constants/layoutMode';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport { Swipeable } from 'react-swipeable';\n\nimport './PrintModal.scss';\nimport Choice from '../Choice/Choice';\nimport ModalWrapper from '../ModalWrapper';\n\n\nclass PrintModal extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    currentPage: PropTypes.number,\n    printQuality: PropTypes.number.isRequired,\n    pageLabels: PropTypes.array.isRequired,\n    closeElement: PropTypes.func.isRequired,\n    dispatch: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    setPrintQuality: PropTypes.func.isRequired,\n    t: PropTypes.func.isRequired,\n    sortStrategy: PropTypes.string.isRequired,\n    colorMap: PropTypes.object.isRequired,\n    layoutMode: PropTypes.string.isRequired,\n    isApplyWatermarkDisabled: PropTypes.bool,\n    printedNoteDateFormat: PropTypes.string,\n    language: PropTypes.string,\n    setWatermarkModalOptions: PropTypes.func.isRequired,\n    watermarkModalOptions: PropTypes.object,\n  };\n\n  constructor() {\n    super();\n    this.allPages = React.createRef();\n    this.currentPage = React.createRef();\n    this.customPages = React.createRef();\n    this.customInput = React.createRef();\n    this.includeComments = React.createRef();\n    this.currentView = React.createRef();\n    this.pendingCanvases = [];\n    this.state = {\n      allowWatermarkModal: false,\n      count: -1,\n      pagesToPrint: [],\n      isWatermarkModalVisible: false,\n      existingWatermarks: null,\n      includeAnnotations: true,\n      includeComments: false,\n      allowDefaultPrintOptions: true,\n      maintainPageOrientation: false,\n    };\n  }\n\n  componentDidUpdate(prevProps) {\n    if (!prevProps.isOpen && this.props.isOpen) {\n      this.onChange();\n      this.props.closeElements([\n        'signatureModal',\n        'loadingModal',\n        'progressModal',\n        'errorModal'\n      ]);\n      core.getWatermark().then(watermark => {\n        this.setState({\n          allowWatermarkModal:\n            watermark === undefined ||\n            watermark === null ||\n            Object.keys(watermark).length === 0,\n          existingWatermarks: watermark\n        });\n      });\n    }\n\n    if (prevProps.isOpen && !this.props.isOpen) {\n      core.setWatermark(this.state.existingWatermarks);\n      this.setState({\n        isWatermarkModalVisible: false\n      });\n    }\n  }\n\n  onChange = () => {\n    const { currentPage, pageLabels, layoutMode } = this.props;\n    let pagesToPrint = [];\n\n    if (this.allPages.current.checked) {\n      for (let i = 1; i <= core.getTotalPages(); i++) {\n        pagesToPrint.push(i);\n      }\n    } else if (this.currentPage.current.checked) {\n      const pageCount = core.getTotalPages();\n\n      // when displaying 2 pages, \"Current\" should print both of them\n      switch (layoutMode) {\n        case LayoutMode.FacingCover:\n        case LayoutMode.FacingCoverContinuous:\n          if (\n            currentPage === 1 ||\n            (currentPage === pageCount && pageCount % 2 === 0)\n          ) {\n            // first page or last page if single page\n            pagesToPrint.push(currentPage);\n          } else {\n            pagesToPrint =\n              currentPage % 2\n                ? [currentPage - 1, currentPage]\n                : [currentPage, currentPage + 1];\n          }\n          break;\n        case LayoutMode.FacingContinuous:\n        case LayoutMode.Facing:\n          if (currentPage === pageCount && pageCount % 2 === 1) {\n            // last page if single page\n            pagesToPrint.push(currentPage);\n          } else {\n            pagesToPrint =\n              currentPage % 2\n                ? [currentPage, currentPage + 1]\n                : [currentPage - 1, currentPage];\n          }\n          break;\n        default:\n          pagesToPrint.push(currentPage);\n          break;\n      }\n    } else if (this.customPages.current.checked) {\n      const customInput = this.customInput.current.value.replace(/\\s+/g, '');\n      pagesToPrint = getPageArrayFromString(customInput, pageLabels);\n    } else if (this.currentView.current.checked) {\n      pagesToPrint = [currentPage];\n    }\n\n    this.setState({ pagesToPrint });\n  };\n\n  createPagesAndPrint = e => {\n    e.preventDefault();\n\n    if (this.state.pagesToPrint.length < 1) {\n      return;\n    }\n\n    const { language } = this.props;\n    this.setState({ count: 0 });\n\n    if (this.state.allowWatermarkModal) {\n      core.setWatermark(this.props.watermarkModalOptions);\n    } else {\n      core.setWatermark(this.state.existingWatermarks);\n    }\n\n    const createPages = creatingPages(\n      this.state.pagesToPrint,\n      this.state.includeComments,\n      this.state.includeAnnotations,\n      this.state.maintainPageOrientation,\n      this.props.printQuality,\n      this.props.sortStrategy,\n      this.props.colorMap,\n      this.props.printedNoteDateFormat,\n      undefined,\n      this.currentView.current?.checked,\n      language,\n    );\n    createPages.forEach(async pagePromise => {\n      await pagePromise;\n      this.setState({\n        count:\n          this.state.count < this.state.pagesToPrint.length && this.state.count !== -1\n            ? this.state.count + 1\n            : this.state.count\n      });\n    });\n    Promise.all(createPages)\n      .then(pages => {\n        printPages(pages);\n        this.closePrintModal();\n      })\n      .catch(e => {\n        console.error(e);\n        this.setState({ count: -1 });\n      });\n  };\n\n  closePrintModal = () => {\n    this.setState({ count: -1 });\n    this.props.closeElement('printModal');\n  };\n\n  setWatermarkModalVisibility = visible => {\n    this.setState({\n      isWatermarkModalVisible: visible\n    });\n  };\n\n  render() {\n    const { isDisabled, t, isApplyWatermarkDisabled, isOpen } = this.props;\n\n    if (isDisabled) {\n      return null;\n    }\n    if (this.state.allowDefaultPrintOptions && this.props.defaultPrintOptions) {\n      this.state.includeAnnotations = this.props.defaultPrintOptions.includeAnnotations ?? this.state.includeAnnotations;\n      this.state.includeComments = this.props.defaultPrintOptions.includeComments ?? this.state.includeComments;\n      this.state.maintainPageOrientation = this.props.defaultPrintOptions.maintainPageOrientation ?? this.state.maintainPageOrientation;\n      this.state.allowDefaultPrintOptions = false;\n    }\n    const { count, pagesToPrint, includeAnnotations, includeComments } = this.state;\n    const isPrinting = count >= 0;\n    const className = getClassName('Modal PrintModal', this.props);\n    const customPagesLabelElement = (\n      <>\n      {t('option.print.specifyPages')}\n        <input\n          ref={this.customInput}\n          hidden={!this.customPages.current || (this.customPages.current && !this.customPages.current.checked)}\n          type=\"text\"\n          placeholder={t('message.customPrintPlaceholder')}\n          aria-label={t('message.customPrintPlaceholder')}\n          onChange={this.onChange}\n          disabled={isPrinting}\n        />\n      </>\n    );\n\n    return (\n      <Swipeable\n        onSwipedUp={this.closePrintModal}\n        onSwipedDown={this.closePrintModal}\n        preventDefaultTouchmoveEvent\n      >\n        <>\n          <WatermarkModal\n            isVisible={!!(isOpen && this.state.isWatermarkModalVisible)}\n            // pageIndex starts at index 0 and getCurrPage number starts at index 1\n            pageIndexToView={this.props.currentPage - 1}\n            modalClosed={this.setWatermarkModalVisibility}\n            formSubmitted={this.props.setWatermarkModalOptions}\n          />\n          <div\n            className={className}\n            data-element=\"printModal\"\n          >\n            <ModalWrapper isOpen={isOpen && !this.state.isWatermarkModalVisible} title={'option.print.printSettings'}\n              containerOnClick={e => e.stopPropagation()} onCloseClick={this.closePrintModal}\n              closeButtonDataElement={'printModalCloseButton'}>\n              <div className=\"swipe-indicator\" />\n              <div className=\"settings\">\n                <div className=\"section\">\n                  <div className=\"section-label\">{`${t('option.print.pages')}:`}</div>\n                  <form\n                    className=\"settings-form\"\n                    onChange={this.onChange}\n                    onSubmit={this.createPagesAndPrint}\n                  >\n                    <Choice\n                      dataElement=\"allPagesPrintOption\"\n                      ref={this.allPages}\n                      id=\"all-pages\"\n                      name=\"pages\"\n                      radio\n                      label={t('option.print.all')}\n                      defaultChecked\n                      disabled={isPrinting}\n                      center\n                    />\n                    <Choice\n                      dataElement=\"currentPagePrintOption\"\n                      ref={this.currentPage}\n                      id=\"current-page\"\n                      name=\"pages\"\n                      radio\n                      label={t('option.print.current')}\n                      disabled={isPrinting}\n                      center\n                    />\n                    <Choice\n                      dataElement=\"currentViewPrintOption\"\n                      ref={this.currentView}\n                      id=\"current-view\"\n                      name=\"pages\"\n                      radio\n                      label={t('option.print.view')}\n                      disabled={isPrinting}\n                      center\n                    />\n                    <Choice\n                      dataElement=\"customPagesPrintOption\"\n                      ref={this.customPages}\n                      id=\"custom-pages\"\n                      name=\"pages\"\n                      className=\"specify-pages-choice\"\n                      radio\n                      label={customPagesLabelElement}\n                      disabled={isPrinting}\n                      center\n                    />\n                    <Choice\n                      dataElement=\"commentsPrintOption\"\n                      ref={this.includeComments}\n                      id=\"include-comments\"\n                      name=\"comments\"\n                      label={t('option.print.includeComments')}\n                      onChange={() =>\n                        this.setState(state => ({\n                          includeComments: !state.includeComments\n                        }))\n                      }\n                      disabled={isPrinting}\n                      checked={includeComments}\n                      center\n                    />\n                    <Choice\n                      dataElement=\"annotationsPrintOption\"\n                      id=\"include-annotations\"\n                      name=\"annotations\"\n                      label={t('option.print.includeAnnotations')}\n                      disabled={isPrinting}\n                      onChange={() =>\n                        this.setState(state => ({\n                          includeAnnotations: !state.includeAnnotations\n                        }))\n                      }\n                      checked={includeAnnotations}\n                      center\n                    />\n                  </form>\n                </div>\n                <div className=\"section\">\n                  <div className=\"section-label\">{`${t('option.print.pageQuality')}:`}</div>\n                  <label className=\"printQualitySelectLabel\">\n                    <select className=\"printQualitySelect\" onChange={e => this.props.setPrintQuality(Number(e.target.value))} value={this.props.printQuality}>\n                      <option value=\"2\">{`${t('option.print.qualityHigh')}`}</option>\n                      <option value=\"1\">{`${t('option.print.qualityNormal')}`}</option>\n                    </select>\n                  </label>\n                  <div className=\"total\">\n                    {isPrinting ? (\n                      <div>{`${t('message.processing')} ${count}/${\n                        pagesToPrint.length\n                      }`}</div>\n                    ) : (\n                      <div>\n                        {t('message.printTotalPageCount', {\n                          count: pagesToPrint.length\n                        })}\n                      </div>\n                    )}\n                  </div>\n                </div>\n                {!isApplyWatermarkDisabled && (\n                  <div className=\"section watermark-section\">\n                    <div className=\"section-label\">{t('option.watermark.title')}</div>\n                    <button\n                      data-element=\"applyWatermark\"\n                      className=\"apply-watermark\"\n                      disabled={isPrinting}\n                      onClick={() => {\n                        if (!isPrinting) {\n                          this.setWatermarkModalVisibility(true);\n                        }\n                      }}\n                    >\n                      {t('option.watermark.addNew')}\n                    </button>\n                  </div>\n                )}\n              </div>\n              <div className=\"divider\"></div>\n              <div className=\"buttons\">\n                <button\n                  className=\"button\"\n                  onClick={this.createPagesAndPrint}\n                  disabled={count > -1}\n                >\n                  {t('action.print')}\n                </button>\n              </div>\n            </ModalWrapper>\n          </div>\n        </>\n      </Swipeable>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  isDisabled: selectors.isElementDisabled(state, 'printModal'),\n  isApplyWatermarkDisabled: selectors.isElementDisabled(\n    state,\n    'applyWatermark'\n  ),\n  isOpen: selectors.isElementOpen(state, 'printModal'),\n  currentPage: selectors.getCurrentPage(state),\n  printQuality: selectors.getPrintQuality(state),\n  defaultPrintOptions: selectors.getDefaultPrintOptions(state),\n  pageLabels: selectors.getPageLabels(state),\n  sortStrategy: selectors.getSortStrategy(state),\n  colorMap: selectors.getColorMap(state),\n  layoutMode: selectors.getDisplayMode(state),\n  printedNoteDateFormat: selectors.getPrintedNoteDateFormat(state),\n  language: selectors.getCurrentLanguage(state),\n  watermarkModalOptions: selectors.getWatermarkModalOptions(state),\n});\n\nconst mapDispatchToProps = dispatch => ({\n  dispatch,\n  closeElement: dataElement => dispatch(actions.closeElement(dataElement)),\n  closeElements: dataElements => dispatch(actions.closeElements(dataElements)),\n  setPrintQuality: dataElements => dispatch(actions.setPrintQuality(dataElements)),\n  setWatermarkModalOptions: dataElements => dispatch(actions.setWatermarkModalOptions(dataElements)),\n});\n\nexport default connect(\n  mapStateToProps,\n  mapDispatchToProps\n)(withTranslation()(PrintModal));","import PrintModal from './PrintModal';\n\nexport default PrintModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport getClassName from 'helpers/getClassName';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './LoadingModal.scss';\n\nclass LoadingModal extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    closeElements: PropTypes.func.isRequired,\n  }\n\n  componentDidUpdate(prevProps) {\n    if (!prevProps.isOpen && this.props.isOpen) {\n      this.props.closeElements(['signatureModal', 'printModal', 'errorModal']);\n    }\n  }\n\n  render() {\n    if (this.props.isDisabled) {\n      return null;\n    }\n\n    const className = getClassName('Modal LoadingModal', this.props);\n\n    return (\n      <div className={className} data-element=\"loadingModal\">\n        <div className=\"container\">\n          <div className=\"inner-wrapper\"></div>\n        </div>\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = state => ({\n  isDisabled: selectors.isElementDisabled(state, 'loadingModal'),\n  isOpen: selectors.isElementOpen(state, 'loadingModal'),\n  loadingProgress: selectors.getLoadingProgress(state),\n});\n\nconst mapDispatchToProps = {\n  closeElements: actions.closeElements,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(LoadingModal);","import LoadingModal from './LoadingModal';\n\nexport default LoadingModal;\n","import React, { useEffect } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport Button from 'components/Button';\nimport { escapePressListener } from 'helpers/accessibility';\nimport ModalWrapper from '../ModalWrapper';\n\nimport './ErrorModal.scss';\n\nconst ErrorModal = () => {\n  const [message, isDisabled, isOpen, isMultiTab] = useSelector(\n    state => [\n      selectors.getErrorMessage(state),\n      selectors.isElementDisabled(state, 'errorModal'),\n      selectors.isElementOpen(state, 'errorModal'),\n      selectors.getIsMultiTab(state),\n    ],\n    shallowEqual\n  );\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(\n        actions.closeElements(['signatureModal', 'printModal', 'loadingModal', 'progressModal', 'passwordModal', 'filterModal'])\n      );\n\n      window.addEventListener('keydown', e => escapePressListener(e, closeErrorModal));\n      return () => window.removeEventListener('keydown', escapePressListener);\n    }\n  }, [dispatch, isOpen]);\n\n  useEffect(() => {\n    const onError = error => {\n      error = error.detail?.message || error.detail || error.message;\n\n      let errorMessage;\n\n      if (typeof error === 'string') {\n        errorMessage = error;\n\n        // provide a more specific error message\n        if (errorMessage.includes('File does not exist')) {\n          errorMessage = 'message.notSupported';\n        }\n      } else if (error?.type === 'InvalidPDF') {\n        errorMessage = 'message.badDocument';\n      }\n\n      if (errorMessage) {\n        dispatch(actions.showErrorMessage(errorMessage));\n      }\n    };\n\n    window.addEventListener('loaderror', onError);\n    return () => window.removeEventListener('loaderror', onError);\n  }, [dispatch]);\n\n  const shouldTranslate = message.startsWith('message.');\n\n  let tabsPadding = 0;\n  if (isMultiTab) {\n    // Add tabsheader padding\n    tabsPadding += document.getElementsByClassName(\"TabsHeader\")[0]?.getBoundingClientRect().bottom;\n  }\n\n  const closeErrorModal = () => {\n    dispatch(actions.closeElement('errorModal'))\n  }\n\n  return isDisabled ? null : (\n    <div\n      className={classNames({\n        Modal: true,\n        ErrorModal: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      style={isMultiTab ? { height: `calc(100% - ${tabsPadding}px)` } : undefined}\n      data-element=\"errorModal\"\n    >\n      <ModalWrapper isOpen={isOpen} title={'message.error'}\n        closeButtonDataElement={'errorModalCloseButton'} \n        onCloseClick={closeErrorModal}>\n            <div className=\"modal-content error-modal-content\">\n              <p>{shouldTranslate ? t(message) : message}</p>\n            </div>\n            <div className=\"modal-footer footer\">\n              <Button\n                className=\"confirm modal-button\"\n                dataElement=\"closeErrorModalButton\"\n                label={t('action.ok')}\n                onClick={closeErrorModal}\n              />\n            </div>\n      </ModalWrapper>\n    </div>\n  );\n};\n\nexport default ErrorModal;\n","import ErrorModal from './ErrorModal';\n\nexport default ErrorModal;\n","import React, { useEffect } from 'react';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport i18next from 'i18next';\nimport core from 'core';\n\nimport Button from 'components/Button';\n\nimport getClassName from 'helpers/getClassName';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport { Swipeable } from 'react-swipeable';\n\nimport './WarningModal.scss';\n\nconst WarningModal = () => {\n  const [\n    title,\n    message,\n    onConfirm,\n    confirmBtnText,\n    onSecondary,\n    secondaryBtnText,\n    onCancel,\n    isDisabled,\n    isOpen,\n  ] = useSelector(\n    state => [\n      selectors.getWarningTitle(state) || '',\n      selectors.getWarningMessage(state),\n      selectors.getWarningConfirmEvent(state),\n      selectors.getWarningConfirmBtnText(state),\n      selectors.getWarningSecondaryEvent(state),\n      selectors.getWarningSecondaryBtnText(state),\n      selectors.getWarningCancelEvent(state),\n      selectors.isElementDisabled(state, 'warningModal'),\n      selectors.isElementOpen(state, 'warningModal'),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  if (isDisabled) {\n    return null;\n  }\n\n  const className = getClassName('Modal WarningModal', { isOpen });\n  const label = confirmBtnText || i18next.t('action.ok');\n\n  useEffect(() => {\n    core.addEventListener('documentUnloaded', cancel);\n\n    return () => {\n      core.removeEventListener('documentUnloaded', cancel);\n    };\n  }, []);\n\n  const cancel = async () => {\n    onCancel && await onCancel();\n    closeModal();\n  };\n\n  const confirm = async () => {\n    onConfirm && await onConfirm();\n    closeModal();\n  };\n\n  const secondary = async () => {\n    onSecondary && await onSecondary();\n    closeModal();\n  };\n\n  const closeModal = () => dispatch(actions.closeElements(['warningModal']));\n\n  return (\n    <Swipeable onSwipedUp={cancel} onSwipedDown={cancel} preventDefaultTouchmoveEvent>\n      <div className={className} onMouseDown={cancel}>\n        <div className=\"container\" onMouseDown={e => e.stopPropagation()}>\n          <div className=\"swipe-indicator\" />\n          <div className=\"header\">\n            <div className=\"header-text\">\n              {title}\n            </div>\n            <Button\n              img=\"icon-close\"\n              onClick={cancel}\n              dataElement=\"closeModalButton\"\n              title=\"action.cancel\"\n            />\n          </div>\n          <div className=\"divider\"/>\n          <div className=\"body\">{message}</div>\n          <div className=\"divider\"/>\n          <div className=\"footer\">\n            {onSecondary && (\n              <Button\n                className=\"confirm modal-button\"\n                dataElement=\"WarningModalClearButton\"\n                label={secondaryBtnText}\n                onClick={secondary}\n              />\n            )}\n            <Button\n              className=\"confirm modal-button\"\n              dataElement=\"WarningModalSignButton\"\n              label={label}\n              onClick={confirm}\n            />\n          </div>\n        </div>\n      </div>\n    </Swipeable>\n  );\n};\n\nexport default WarningModal;\n","import WarningModal from './WarningModal';\n\nexport default WarningModal;","import React, { useRef, useEffect } from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport selectors from 'selectors';\n\nimport {\n  renderPermissionStatus,\n  Spinner,\n} from 'components/SignaturePanel';\nimport SignatureIcon from 'components/SignaturePanel/SignatureIcon';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\n\nimport actions from 'actions';\n\nimport './SignatureValidationModal.scss';\n\nconst SignatureValidationModal = () => {\n  const containerRef = useRef();\n  const [translate] = useTranslation();\n\n  const [isOpen, verificationResult] = useSelector(\n    state => {\n      const { validationModalWidgetName } = state.viewer;\n      return [\n        selectors.isElementOpen(state, 'signatureValidationModal'),\n        selectors.getVerificationResult(state, validationModalWidgetName),\n      ];\n    },\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  const closeModal = () => {\n    dispatch(actions.closeElements(['signatureValidationModal']));\n  };\n\n  useOnClickOutside(containerRef, closeModal);\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(\n        actions.closeElements([\n          'signatureModal',\n          'printModal',\n          'errorModal',\n          'loadingModal',\n          'passwordModal',\n        ])\n      );\n    }\n  }, [dispatch, isOpen]);\n\n  /**\n   * @todo Figure out if this useEffect is still needed? Component appears to be\n   * operating normally without it.\n   */\n  /*\n  useEffect(() => {\n    const onDigitalSignatureAvailable = widget => {\n      setWidgetName(widget.getField().name);\n      dispatch(actions.openElements(['signatureValidationModal']));\n    };\n\n    core.addEventListener(\n      'digitalSignatureAvailable',\n      onDigitalSignatureAvailable,\n    );\n    return () => core.removeEventListener(\n      'digitalSignatureAvailable',\n      onDigitalSignatureAvailable,\n    );\n  }, [dispatch]);\n  */\n\n  const {\n    badgeIcon,\n    verificationStatus,\n    permissionStatus,\n    isCertification,\n    documentPermission,\n    trustVerificationResultString,\n    timeOfTrustVerificationEnum,\n    trustVerificationTime,\n    digestAlgorithm,\n    digestStatus,\n    documentStatus,\n    trustStatus,\n    signerName,\n  } = verificationResult;\n  const {\n    DigestAlgorithm,\n    DigitalSignatureField,\n    VerificationOptions,\n    VerificationResult,\n  } = window.PDFNet;\n  const {\n    ModificationPermissionsStatus,\n    TrustStatus,\n    DigestStatus,\n    DocumentStatus,\n  } = VerificationResult;\n  const { TimeMode } = VerificationOptions;\n\n  const renderHeader = () => {\n    let status;\n    switch (badgeIcon) {\n      case 'digital_signature_valid':\n        status = translate('digitalSignatureModal.valid');\n        break;\n      case 'digital_signature_warning':\n        status = translate('digitalSignatureModal.unknown');\n        break;\n      case 'digital_signature_error':\n        status = translate('digitalSignatureModal.invalid');\n        break;\n      default:\n        status = translate('digitalSignatureModal.unknown');\n    }\n\n    const typeCapitalized = isCertification\n      ? translate('digitalSignatureModal.Certification')\n      : translate('digitalSignatureModal.Signature');\n\n    const type = isCertification\n      ? translate('digitalSignatureModal.certification')\n      : translate('digitalSignatureModal.signature');\n\n    return (\n      <div>\n        <div className=\"validation-header\">\n          {translate('digitalSignatureModal.title', { type: typeCapitalized })}\n        </div>\n        <div className=\"summary-box\">\n          <SignatureIcon badge={badgeIcon} size=\"medium\"/>\n          <div>\n            {\n              translate(\n                'digitalSignatureModal.summaryBox.summary',\n                {\n                  type,\n                  status,\n                }\n              )\n            }\n            {\n              badgeIcon === 'digital_signature_valid'\n                ? translate(\n                  'digitalSignatureModal.summaryBox.signedBy',\n                  { name: signerName || translate('digitalSignatureModal.unknown') },\n                ) : ''\n            }\n          </div>\n        </div>\n      </div>\n    );\n  };\n\n  /**\n   * Returns a message in a <p> tag corresponding to the enum value of\n   * documentPermission, which originates from the invocation of\n   * PDFNet.DigitalSignatureField.getDocumentPermissions\n   */\n  const renderDocumentPermission = () => {\n    const {\n      e_no_changes_allowed,\n      e_formfilling_signing_allowed,\n      e_annotating_formfilling_signing_allowed,\n      e_unrestricted,\n    } = DigitalSignatureField.DocumentPermissions;\n\n    if (!documentPermission) {\n      return;\n    }\n\n    let content = '';\n    const editor = isCertification ? 'certifier' : 'signer';\n\n    switch (documentPermission) {\n      case e_no_changes_allowed:\n        content += translate('digitalSignatureModal.documentPermission.noChangesAllowed', { editor });\n        break;\n      case e_formfilling_signing_allowed:\n        content += translate('digitalSignatureModal.documentPermission.formfillingSigningAllowed', { editor });\n        break;\n      case e_annotating_formfilling_signing_allowed:\n        content += translate('digitalSignatureModal.documentPermission.annotatingFormfillingSigningAllowed', { editor });\n        break;\n      case e_unrestricted:\n        content += translate('digitalSignatureModal.documentPermission.unrestricted', { editor });\n        break;\n    }\n\n    return <p>{content}</p>;\n  };\n\n  /**\n   * Returns a message in a <p> tag corresponding to the signature's trust\n   * verification result.\n   *\n   * If trustVerificationResultString is a falsy value (i.e. undefined, null or\n   * empty string), originating from the invocation of\n   * PDFNet.TrustVerificationResult.getResultString, then a message indicating\n   * no trust verification result is rendered.\n   *\n   * If a trust verification result is available, then the based on\n   * timeOfTrustVerificationEnum, which originates from the invocation of\n   * PDFNet.TrustVerificationResult.getTimeOfTrustVerificationEnum, an\n   * appropriate message is rendered\n   */\n  const renderTrustVerification = () => {\n    const {\n      e_current,\n      e_signing,\n      e_timestamp,\n    } = TimeMode;\n\n    if (!trustVerificationResultString) {\n      return (\n        <p>{translate('digitalSignatureModal.trustVerification.none')}</p>\n      );\n    }\n\n    let content = '';\n    switch (timeOfTrustVerificationEnum) {\n      case (e_current):\n        content += translate(\n          'digitalSignatureModal.trustVerification.current',\n          { trustVerificationTime }\n        );\n        break;\n      case (e_signing):\n        content += translate(\n          'digitalSignatureModal.trustVerification.signing',\n          { trustVerificationTime }\n        );\n        break;\n      case (e_timestamp):\n        content += translate(\n          'digitalSignatureModal.trustVerification.timestamp',\n          { trustVerificationTime }\n        );\n        break;\n    }\n\n    return <p>{content}</p>;\n  };\n\n  /**\n   * Returns a message in a <p> tag corresponding to the signature's digest\n   * algorithm, which originates from the invocation of\n   * PDFNet.verificationResult.getDigestAlgorithm\n   */\n  const renderDigestAlgorithm = () => {\n    const {\n      e_SHA1,\n      e_SHA256,\n      e_SHA384,\n      e_SHA512,\n      e_RIPEMD160,\n      e_unknown_digest_algorithm,\n    } = DigestAlgorithm.Type;\n\n    let content = translate('digitalSignatureModal.digestAlgorithm.preamble');\n\n    switch (digestAlgorithm) {\n      case e_SHA1:\n        content += `SHA1.`;\n        break;\n      case e_SHA256:\n        content += `SHA256.`;\n        break;\n      case e_SHA384:\n        content += 'SHA384.';\n        break;\n      case e_SHA512:\n        content += 'SHA512.';\n        break;\n      case e_RIPEMD160:\n        content += 'RIPEMD160.';\n        break;\n      case e_unknown_digest_algorithm:\n        content = translate('digitalSignatureModal.digestAlgorithm.unknown');\n        break;\n    }\n\n    return <p>{content}</p>;\n  };\n\n  /**\n   * Returns a message in a <p> tag corresponding to the boolean trust status of\n   * the signature, which originates from evaluating whether or not the value of\n   * PDFNet.verificationResult.getTrustStatus is set to the enum\n   * PDFNet.verificationResult.trustStatus.e_trust_verified\n   *\n   * Intentionally an un-used function, as @rdjericpdftron has noted that it\n   * is superfluous, but the method has been left behind in-case it could be\n   * leveraged in the future\n   */\n  /*\n  const renderSignerIdentityValidity = () => {\n    let content = translate('digitalSignatureModal.signerIdentity.preamble');\n    if (validSignerIdentity) {\n      content += translate('digitalSignatureModal.signerIdentity.valid');\n    } else {\n      content += translate('digitalSignatureModal.signerIdentity.unknown');\n    }\n    return <p>{content}</p>;\n  };\n  */\n\n  const renderDocumentStatus = () => {\n    let content;\n\n    switch (documentStatus) {\n      case DocumentStatus.e_no_error:\n        content = translate(\n          'digitalSignatureVerification.documentStatus.noError'\n        );\n        break;\n      case DocumentStatus.e_corrupt_file:\n        content = translate(\n          'digitalSignatureVerification.documentStatus.corruptFile'\n        );\n        break;\n      case DocumentStatus.e_unsigned:\n        content = translate(\n          'digitalSignatureVerification.documentStatus.unsigned'\n        );\n        break;\n      case DocumentStatus.e_bad_byteranges:\n        content = translate(\n          'digitalSignatureVerification.documentStatus.badByteRanges'\n        );\n        break;\n      case DocumentStatus.e_corrupt_cryptographic_contents:\n        content = translate(\n          'digitalSignatureVerification.documentStatus.corruptCryptographicContents'\n        );\n        break;\n    }\n\n    return <p>{content}</p>;\n  };\n\n  const renderDigestStatus = () => {\n    let content;\n\n    switch (digestStatus) {\n      case DigestStatus.e_digest_invalid:\n        content = translate(\n          'digitalSignatureVerification.digestStatus.digestInvalid'\n        );\n        break;\n      case DigestStatus.e_digest_verified:\n        content = translate(\n          'digitalSignatureVerification.digestStatus.digestVerified'\n        );\n        break;\n      case DigestStatus.e_digest_verification_disabled:\n        content = translate(\n          'digitalSignatureVerification.digestStatus.digestVerificationDisabled'\n        );\n        break;\n      case DigestStatus.e_weak_digest_algorithm_but_digest_verifiable:\n        content = translate(\n          'digitalSignatureVerification.digestStatus.weakDigestAlgorithmButDigestVerifiable'\n        );\n        break;\n      case DigestStatus.e_no_digest_status:\n        content = translate(\n          'digitalSignatureVerification.digestStatus.noDigestStatus'\n        );\n        break;\n      case DigestStatus.e_unsupported_encoding:\n        content = translate(\n          'digitalSignatureVerification.digestStatus.unsupportedEncoding'\n        );\n        break;\n    }\n\n    return <p>{content}</p>;\n  };\n\n  const renderTrustStatus = () => {\n    const verificationType = isCertification\n      ? translate('digitalSignatureVerification.certifier')\n      : translate('digitalSignatureVerification.signer');\n    let content;\n\n    switch (trustStatus) {\n      case TrustStatus.e_trust_verified:\n        content = translate(\n          'digitalSignatureVerification.trustStatus.trustVerified',\n          { verificationType },\n        );\n        break;\n      case TrustStatus.e_untrusted:\n        content = translate(\n          'digitalSignatureVerification.trustStatus.untrusted'\n        );\n        break;\n      case TrustStatus.e_trust_verification_disabled:\n        content = translate(\n          'digitalSignatureVerification.trustStatus.trustVerificationDisabled'\n        );\n        break;\n      case TrustStatus.e_no_trust_status:\n        content = translate(\n          'digitalSignatureVerification.trustStatus.noTrustStatus'\n        );\n        break;\n    }\n\n    return <p>{content}</p>;\n  };\n\n  const renderDocumentIntegrityHeader = () => (\n    <p\n      className=\"header\"\n    >\n      {translate('digitalSignatureModal.header.documentIntegrity')}\n    </p>\n  );\n\n  const renderIdentitiesTrustHeader = () => (\n    <p\n      className=\"header\"\n    >\n      {translate('digitalSignatureModal.header.identitiesTrust')}\n    </p>\n  );\n\n  const renderGeneralErrorsHeader = () => (\n    <p\n      className=\"header\"\n    >\n      {translate('digitalSignatureModal.header.generalErrors')}\n    </p>\n  );\n\n  const renderDigestStatusHeader = () => (\n    <p\n      className=\"header\"\n    >\n      {translate('digitalSignatureModal.header.digestStatus')}\n    </p>\n  );\n\n  const renderModalBody = () => {\n    if (typeof verificationStatus === 'undefined') {\n      return (\n        <div className=\"center\">\n          <Spinner />\n        </div>\n      );\n    }\n    return (\n      <>\n        <div className=\"body\">\n          <div className=\"section\">\n            {renderDocumentIntegrityHeader()}\n            {\n              renderPermissionStatus({\n                isCertification,\n                ModificationPermissionsStatus,\n                permissionStatus,\n                translate,\n              })\n            }\n            {renderDocumentPermission()}\n          </div>\n          <div className=\"section\">\n            {renderIdentitiesTrustHeader()}\n            {renderTrustStatus()}\n            {renderTrustVerification()}\n          </div>\n          <div className=\"section\">\n            {renderGeneralErrorsHeader()}\n            {renderDocumentStatus()}\n          </div>\n          <div className=\"section\">\n            {renderDigestStatusHeader()}\n            {renderDigestStatus()}\n            {renderDigestAlgorithm()}\n          </div>\n        </div>\n        <div className=\"modal-footer\">\n          <button\n            className=\"close-modal-button\"\n            onClick={closeModal}\n          >\n            OK\n          </button>\n        </div>\n      </>\n    );\n  };\n\n  return (\n    <div\n      className={classNames({\n        Modal: true,\n        SignatureValidationModal: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      data-element=\"signatureValidationModal\"\n    >\n      <div className=\"container\" ref={containerRef}>\n        {renderHeader()}\n        {renderModalBody()}\n      </div>\n    </div>\n  );\n};\n\nexport default SignatureValidationModal;\n","import SignatureValidationModal from './SignatureValidationModal';\n\nexport default SignatureValidationModal;\n","import React, { useEffect, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { useSelector, useDispatch, shallowEqual } from \"react-redux\";\nimport actions from \"actions\";\nimport selectors from \"selectors\";\n\nimport \"./ProgressModal.scss\";\n\nconst ProgressModal = () => {\n  const [isDisabled, isOpen, loadingProgress] = useSelector(\n    state => [\n      selectors.isElementDisabled(state, \"progressModal\"),\n      selectors.isElementOpen(state, \"progressModal\"),\n      selectors.getLoadingProgress(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const progressCircle = useRef(null);\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(\n        actions.closeElements([\n          \"signatureModal\",\n          \"printModal\",\n          \"errorModal\",\n          \"loadingModal\",\n          \"passwordModal\",\n        ]),\n      );\n    }\n  }, [dispatch, isOpen]);\n\n  useEffect(() => {\n    const circle = progressCircle.current;\n\n    if (circle) {\n      const radius = circle.r.baseVal.value;\n      const circumference = radius * 2 * Math.PI;\n      const offset = circumference - loadingProgress * circumference;\n      circle.style.strokeDasharray = `${circumference} ${circumference}`;\n      circle.style.strokeDashoffset = offset;\n    }\n  }, [loadingProgress]);\n\n  return isDisabled ? null : (\n    <div\n      className={classNames({\n        Modal: true,\n        ProgressModal: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      data-element=\"progressModal\"\n    >\n      <div className=\"container\">\n        <svg className=\"progress-ring\" width=\"54\" height=\"54\">\n          <circle\n            className=\"progress-ring__fill\"\n            r=\"25\"\n            cx=\"27\"\n            cy=\"27\"\n          />\n          <circle\n            ref={progressCircle}\n            className=\"progress-ring__circle\"\n            r=\"25\"\n            cx=\"27\"\n            cy=\"27\"\n          />\n        </svg>\n      </div>\n    </div>\n  );\n};\n\nexport default ProgressModal;\n","import ProgressModal from './ProgressModal';\n\nexport default ProgressModal;\n","export default fraction => {\n  const [numerator, denominator] = fraction.split('/');\n  return Number(numerator) / Number(denominator);\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport Button from 'components/Button';\nimport core from 'core';\nimport { mapAnnotationToKey } from 'constants/map';\nimport setToolStyles from 'helpers/setToolStyles';\nimport parseMeasurementContents from 'helpers/parseMeasurementContents';\nimport evalFraction from 'helpers/evalFraction';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { Swipeable } from 'react-swipeable';\n\nimport './CalibrationModal.scss';\nconst parseMeasurementContentsByAnnotation = (annotation) => {\n  const factor = annotation.Measure.axis[0].factor;\n  const unit = annotation.Scale[1][1]\n\n  switch(unit) {\n    case 'ft-in':\n      return (annotation.getLineLength() * factor / 12);\n    case 'in':\n    default:\n      return (annotation.getLineLength() * factor);\n  }\n}\n\nconst numberRegex = /^\\d*(\\.\\d*)?$/;\nconst fractionRegex = /^\\d*(\\s\\d\\/\\d*)$/;\nconst pureFractionRegex = /^(\\d\\/\\d*)*$/;\n\nconst CalibrationModal = () => {\n  const [isOpen, isDisabled, units] = useSelector(\n    state => [\n      selectors.isElementOpen(state, 'calibrationModal'),\n      selectors.isElementDisabled(state, 'calibrationModal'),\n      selectors.getMeasurementUnits(state),\n    ],\n    shallowEqual\n  );\n  const dispatch = useDispatch();\n  const [annotation, setAnnotation] = useState(null);\n  const [value, setValue] = useState('');\n  const [newDistance, setNewDistance] = useState(0);\n  const [unitTo, setUnitTo] = useState('');\n  const [showError, setShowError] = useState(false);\n  const [t] = useTranslation();\n  const inputRef = useRef(null);\n\n  useEffect(() => {\n    isOpen && inputRef?.current?.focus();\n  }, [isOpen]);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      if (\n        annotations?.length === 1 &&\n        mapAnnotationToKey(annotations[0]) === 'distanceMeasurement' &&\n        action === 'selected'\n      ) {\n        const annot = annotations[0];\n        setAnnotation(annot);\n        const value = parseMeasurementContentsByAnnotation(annot).toFixed(2);\n        setValue(value);\n        setUnitTo(annot.Scale[1][1]);\n        // initial new distance should be the same as the value\n        // in case the user doesn't change the input value\n        setNewDistance(parseFloat(value));\n      } else if (action === 'deselected') {\n        setAnnotation(null);\n        setValue('');\n        setUnitTo('');\n        setNewDistance(0);\n      }\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () =>\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n  }, []);\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      if (\n        action === 'modify' &&\n        annotations.length === 1 &&\n        annotations[0] === annotation\n      ) {\n        setValue(parseMeasurementContentsByAnnotation(annotation).toFixed(2));\n        setUnitTo(annotation.Scale[1][1]);\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    return () =>\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n  }, [annotation]);\n\n  const handleInputChange = e => {\n    setShowError(false);\n    setValue(e.target.value);\n  };\n\n  const validateInput = e => {\n    const inputValue = e.target.value.trim();\n    if (inputValue === '') {\n      setShowError(true);\n    }\n    if (numberRegex.test(inputValue)) {\n      const newDistance = parseFloat(inputValue);\n      if (newDistance !== 0) {\n        setNewDistance(parseFloat(inputValue));\n        setValue(inputValue);\n      } else {\n        setShowError(true);\n      }\n    } else if (fractionRegex.test(inputValue)) {\n      const [whole, fraction] = inputValue.split(' ');\n      if (Number.isFinite(evalFraction(fraction))) {\n        const number = Number(whole) + evalFraction(fraction);\n        setNewDistance(parseFloat(number));\n        setValue(number);\n      } else {\n        setShowError(true);\n      }\n    } else if (pureFractionRegex.test(inputValue)) {\n      if (Number.isFinite(evalFraction(inputValue))) {\n        const number = evalFraction(inputValue);\n        setNewDistance(parseFloat(number));\n        setValue(number);\n      } else {\n        setShowError(true);\n      }\n    } else {\n      setShowError(true);\n    }\n  };\n\n  const handleSelectChange = e => {\n    setUnitTo(e.target.value);\n  };\n\n  const handleApply = () => {\n    const newScale = getNewScale();\n    const accurateNewScale = handleLossOfPrecision(newScale);\n\n    core.setAnnotationStyles(annotation, {\n      Scale: accurateNewScale,\n    });\n\n    // this will also set the Scale for the other two measurement tools\n    setToolStyles(\n      'AnnotationCreateDistanceMeasurement',\n      'Scale',\n      accurateNewScale\n    );\n\n    dispatch(actions.closeElements(['calibrationModal']));\n  };\n\n  const handleLossOfPrecision = scale => {\n    // when the new distance that's entered in the modal is much bigger than the current distance, loss of precision can happen\n    // because internally WebViewer will do several multiplications and divisions to get the value to store in a measure dictionary\n    // in this case, setting 'Scale' again should fix this issue because this time the new distance and the current distance is very close, and we should get the accurate scale\n    annotation.Scale = scale;\n\n    return getNewScale();\n  };\n\n  const getNewScale = () => {\n    const currentDistance = parseMeasurementContentsByAnnotation(annotation);\n    const ratio = newDistance / currentDistance;\n\n    const currentScale = annotation.Scale;\n    const newScale = [\n      [currentScale[0][0], currentScale[0][1]],\n      [currentScale[1][0] * ratio, unitTo],\n    ];\n\n    return newScale;\n  };\n\n  const closeModal = () => {\n    dispatch(actions.closeElements(['calibrationModal']));\n  };\n\n  return isDisabled || !annotation ? null : (\n    <Swipeable\n      onSwipedUp={closeModal}\n      onSwipedDown={closeModal}\n      preventDefaultTouchmoveEvent\n    >\n      <div\n        className={classNames({\n          Modal: true,\n          CalibrationModal: true,\n          open: isOpen,\n          closed: !isOpen,\n        })}\n        onMouseDown={closeModal}\n      >\n        <div className=\"container\" onMouseDown={e => e.stopPropagation()}>\n          <div className=\"swipe-indicator\" />\n          <div className=\"calibration__header\">\n            {t('component.calibration')}\n          </div>\n          <div className=\"calibration__body\">\n            <div>{t('message.enterMeasurement')}</div>\n            <div className=\"calibration__input\">\n              <input\n                className={showError ? 'error' : ''}\n                ref={inputRef}\n                type=\"text\"\n                value={value}\n                onChange={handleInputChange}\n                onBlur={validateInput}\n              />\n              <select\n                className=\"unitToInput\"\n                value={unitTo}\n                onChange={handleSelectChange}\n              >\n                {units.to.map(unit => (\n                  <option key={unit} value={unit}>\n                    {unit}\n                  </option>\n                ))}\n              </select>\n            </div>\n            {showError ? <div className=\"errorMeasurement\">{t('message.errorEnterMeasurement')}</div> : null}\n          </div>\n          <div className=\"calibration__footer\">\n            <Button\n              dataElement=\"passwordSubmitButton\"\n              label={t('action.apply')}\n              onClick={handleApply}\n              disabled={showError}\n            />\n          </div>\n        </div>\n      </div>\n    </Swipeable>\n  );\n};\n\nexport default CalibrationModal;\n","import CalibrationModal from './CalibrationModal';\n\nexport default CalibrationModal;","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport defaultTool from 'constants/defaultTool';\nimport core from 'core';\nimport { Tabs, Tab, TabPanel } from 'components/Tabs';\nimport Button from 'components/Button';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { Swipeable } from 'react-swipeable';\nimport DataElements from \"constants/dataElement\";\n\nimport './LinkModal.scss';\n\nconst LinkModal = () => {\n  const [\n    isDisabled,\n    isOpen,\n    totalPages,\n    currentPage,\n    tabSelected,\n    pageLabels,\n  ] = useSelector(state => [\n    selectors.isElementDisabled(state, DataElements.LINK_MODAL),\n    selectors.isElementOpen(state, DataElements.LINK_MODAL),\n    selectors.getTotalPages(state),\n    selectors.getCurrentPage(state),\n    selectors.getSelectedTab(state, DataElements.LINK_MODAL),\n    selectors.getPageLabels(state),\n  ]);\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n\n  const urlInput = React.createRef();\n  const pageLabelInput = React.createRef();\n\n  const [url, setURL] = useState('');\n  const [pageLabel, setPageLabel] = useState(\"\");\n\n  const closeModal = () => {\n    dispatch(actions.closeElement(DataElements.LINK_MODAL));\n    setURL('');\n    core.setToolMode(defaultTool);\n  };\n\n  const newLink = (x, y, width, height, linkPageNumber = currentPage) => {\n    const link = new Annotations.Link();\n    link.PageNumber = linkPageNumber;\n    link.StrokeColor = new Annotations.Color(0, 165, 228);\n    link.StrokeStyle = 'underline';\n    link.StrokeThickness = 2;\n    link.Author = core.getCurrentUser();\n    link.Subject = 'Link';\n    link.X = x;\n    link.Y = y;\n    link.Width = width;\n    link.Height = height;\n    return link;\n  };\n\n  const createLink = action => {\n    const linksResults = [];\n\n    const quads = core.getSelectedTextQuads();\n    const selectedAnnotations = core.getSelectedAnnotations();\n\n    if (quads) {\n      const selectedText = core.getSelectedText();\n      for (const currPageNumber in quads) {\n        const currPageLinks = [];\n        quads[currPageNumber].forEach(quad => {\n          currPageLinks.push(\n            newLink(\n              Math.min(quad.x1, quad.x3),\n              Math.min(quad.y1, quad.y3),\n              Math.abs(quad.x1 - quad.x3),\n              Math.abs(quad.y1 - quad.y3),\n              parseInt(currPageNumber)\n            )\n          );\n        });\n        createHighlightAnnot(\n          currPageLinks,\n          quads[currPageNumber],\n          selectedText,\n          action\n        );\n        linksResults.push(...currPageLinks);\n      }\n    }\n\n    if (selectedAnnotations) {\n      selectedAnnotations.forEach(annot => {\n        const annotManager = core.getAnnotationManager();\n        const groupedAnnots = annotManager.getGroupAnnotations(annot);\n\n        // ungroup and delete any previously created links\n        if (groupedAnnots.length > 1) {\n          const linksToDelete = groupedAnnots.filter(annot => annot instanceof Annotations.Link);\n          if (linksToDelete.length > 0) {\n            annotManager.ungroupAnnotations(groupedAnnots);\n            core.deleteAnnotations(linksToDelete);\n          }\n        }\n\n        const link = newLink(annot.X, annot.Y, annot.Width, annot.Height);\n        link.addAction('U', action);\n        core.addAnnotations([link]);\n        linksResults.push(link);\n        annotManager.groupAnnotations(annot, [link]);\n      });\n    }\n\n    return linksResults;\n  };\n\n  const createHighlightAnnot = async (linkAnnotArray, quads, text, action) => {\n    const annotManager = core.getAnnotationManager();\n    const linkAnnot = linkAnnotArray[0];\n    const highlight = new Annotations.TextHighlightAnnotation();\n    highlight.PageNumber = linkAnnot.PageNumber;\n    highlight.X = linkAnnot.X;\n    highlight.Y = linkAnnot.Y;\n    highlight.Width = linkAnnot.Width;\n    highlight.Height = linkAnnot.Height;\n    highlight.StrokeColor = new Annotations.Color(0, 0, 0, 0);\n    highlight.Opacity = 0;\n    highlight.Quads = quads;\n    highlight.Author = core.getCurrentUser();\n    highlight.setContents(text);\n\n    linkAnnotArray.forEach((link, index) => {\n      link.addAction('U', action);\n      index === 0 ?  core.addAnnotations([link, highlight]) : core.addAnnotations([link]);\n    });\n    annotManager.groupAnnotations(highlight, linkAnnotArray);\n  };\n\n  const addURLLink = e => {\n    e.preventDefault();\n\n    const action = new window.Actions.URI({ uri: url });\n    const links = createLink(action);\n\n    let pageNumbersToDraw = links.map(link => link.PageNumber);\n    pageNumbersToDraw = [...new Set(pageNumbersToDraw)];\n    pageNumbersToDraw.forEach(pageNumberToDraw => {\n      core.drawAnnotations(pageNumberToDraw, null, true);\n    });\n\n    closeModal();\n  };\n\n  const isValidPageLabel = () => {\n    return pageLabels?.includes(pageLabel);\n  };\n\n  const addPageLink = e => {\n    e.preventDefault();\n\n    const Dest = window.Actions.GoTo.Dest;\n\n    const options = { dest: new Dest({ page: pageLabels.indexOf(pageLabel) + 1 }) };\n    const action = new window.Actions.GoTo(options);\n\n    const links = createLink(action);\n\n    let pageNumbersToDraw = links.map(link => link.PageNumber);\n    pageNumbersToDraw = [...new Set(pageNumbersToDraw)];\n    pageNumbersToDraw.forEach(pageNumberToDraw => {\n      core.drawAnnotations(pageNumberToDraw, null, true);\n    });\n\n    closeModal();\n  };\n\n  useEffect(() => {\n    if (isOpen) {\n      //  prepopulate URL if URL is selected\n      const selectedText = core.getSelectedText();\n      if (selectedText) {\n        const urlRegex = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/g;\n        const urls = selectedText.match(urlRegex);\n        if (urls && urls.length > 0) {\n          setURL(urls[0]);\n        }\n      }\n\n      setPageLabel(pageLabels.length > 0 ? pageLabels[0] : \"1\");\n    }\n  }, [totalPages, isOpen]);\n\n  useEffect(() => {\n    if (tabSelected === 'PageNumberPanelButton' && isOpen) {\n      pageLabelInput.current.focus();\n    } else if (tabSelected === 'URLPanelButton' && isOpen) {\n      urlInput.current.focus();\n    }\n  }, [tabSelected, isOpen, pageLabelInput, urlInput]);\n\n  useEffect(() => {\n    core.addEventListener('documentUnloaded', closeModal);\n    return () => {\n      core.removeEventListener('documentUnloaded', closeModal);\n    };\n  }, []);\n\n  const modalClass = classNames({\n    Modal: true,\n    LinkModal: true,\n    open: isOpen,\n    closed: !isOpen,\n  });\n\n  return isDisabled ? null : (\n    <Swipeable\n      onSwipedUp={closeModal}\n      onSwipedDown={closeModal}\n      preventDefaultTouchmoveEvent\n    >\n      <div\n        className={modalClass}\n        data-element={DataElements.LINK_MODAL}\n        onMouseDown={closeModal}\n      >\n        <div className=\"container\" onMouseDown={e => e.stopPropagation()}>\n          <div className=\"swipe-indicator\" />\n          <Tabs id=\"linkModal\">\n            <div className=\"tab-list\">\n              <Tab dataElement=\"URLPanelButton\">\n                <div className=\"tab-options-button\">{t('link.url')}</div>\n              </Tab>\n              <div className=\"tab-options-divider\" />\n              <Tab dataElement=\"PageNumberPanelButton\">\n                <div className=\"tab-options-button\">{t('link.page')}</div>\n              </Tab>\n            </div>\n\n            <TabPanel dataElement=\"URLPanel\">\n              <form onSubmit={addURLLink}>\n                <div>{t('link.enterurl')}</div>\n                <div className=\"linkInput\">\n                  <input\n                    className=\"urlInput\"\n                    ref={urlInput}\n                    value={url}\n                    onChange={e => setURL(e.target.value)}\n                  />\n                  <Button\n                    dataElement=\"linkSubmitButton\"\n                    label={t('action.link')}\n                    onClick={addURLLink}\n                  />\n                </div>\n              </form>\n            </TabPanel>\n            <TabPanel dataElement=\"PageNumberPanel\">\n              <form onSubmit={addPageLink}>\n                <div>{t('link.enterpage')}</div>\n                <div className=\"linkInput\">\n                  <input\n                    ref={pageLabelInput}\n                    value={pageLabel}\n                    onChange={e => setPageLabel(e.target.value)}\n                  />\n                  <Button\n                    dataElement=\"linkSubmitButton\"\n                    label={t('action.link')}\n                    onClick={addPageLink}\n                    disabled={!isValidPageLabel()}\n                  />\n                </div>\n              </form>\n            </TabPanel>\n          </Tabs>\n        </div>\n      </div>\n    </Swipeable>\n  );\n};\n\nexport default LinkModal;\n","import LinkModal from './LinkModal';\n\nexport default LinkModal;","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { Swipeable } from 'react-swipeable';\nimport { FocusTrap } from '@pdftron/webviewer-react-toolkit';\n\nimport Button from 'components/Button';\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport Choice from 'components/Choice';\n\nimport ReactQuill from 'react-quill';\nimport './quill.scss';\nimport './ContentEditModal.scss';\n\nfunction ContentEditModal() {\n  const [isDisabled, isOpen, isContentEditWarningHidden, currentContentBeingEdited] = useSelector(state => [\n    selectors.isElementDisabled(state, 'contentEditModal'),\n    selectors.isElementOpen(state, 'contentEditModal'),\n    selectors.isContentEditWarningHidden(state),\n    selectors.getCurrentContentBeingEdited(state)\n  ]);\n\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n\n  const [hideWarning, setHideWarning] = useState(true);\n  const [showWarning, setShowWarning] = useState(false);\n\n  const closeModal = () => {\n    dispatch(actions.closeElement('contentEditModal'));\n\n    if (showWarning) {\n      // this means warning was cancelled\n      core.setToolMode(window.Core.Tools.ToolNames.EDIT);\n    }\n  };\n\n  useEffect(() => {\n    const handleToolModeChange = (newTool, oldTool) => {\n      if (newTool instanceof Core.Tools.ContentEditTool) {\n        setTimeout(() => {\n          setShowWarning(!isContentEditWarningHidden);\n          dispatch(actions.openElement('contentEditModal'));\n        }, 500);\n      } else if (oldTool instanceof Core.Tools.ContentEditTool) {\n        dispatch(actions.clearCurrentContentBeingEdited());\n      }\n    };\n\n    const handleDoubleClickContentBox = async (annotation) => {\n      if (annotation.isContentEditPlaceholder() && annotation.getContentEditType() === window.Core.ContentEdit.Types.TEXT) {\n        const content = await instance.Core.ContentEdit.getDocumentContent(annotation);\n\n        dispatch(actions.setCurrentContentBeingEdited({ content, annotation }));\n\n        dispatch(actions.openElement('contentEditModal'));\n      }\n    };\n\n    core.addEventListener('toolModeUpdated', handleToolModeChange);\n    core.addEventListener('annotationDoubleClicked', handleDoubleClickContentBox);\n\n    return () => {\n      core.removeEventListener('toolModeUpdated', handleToolModeChange);\n      core.removeEventListener('annotationDoubleClicked', handleDoubleClickContentBox);\n    };\n  }, [isContentEditWarningHidden]);\n\n  const closeWarningModal = () => {\n    dispatch(actions.closeElement('contentEditModal'));\n    dispatch(actions.setHideContentEditWarning(hideWarning));\n    setShowWarning(false);\n  };\n\n  // save the edit changes\n  const saveTextEditResults = () => {\n    dispatch(actions.closeElement('contentEditModal'));\n    instance.Core.ContentEdit.updateDocumentContent(currentContentBeingEdited.annotation, currentContentBeingEdited.content);\n  };\n\n  const richTextEditorChangeHandler = value => {\n    dispatch(actions.updateCurrentContentBeingEdited(value));\n  };\n\n  const modalClass = classNames({\n    Modal: true,\n    ContentEditModal: true,\n    open: isOpen,\n    closed: !isOpen,\n  });\n\n  const toolbarOptions = [['bold', 'italic', 'underline'], ['link']];\n\n  const isEditing = !!currentContentBeingEdited;\n\n  return isDisabled || (!isEditing && !showWarning) ? null : (\n    <Swipeable onSwipedUp={closeModal} onSwipedDown={closeModal} preventDefaultTouchmoveEvent>\n      <FocusTrap locked={isOpen}>\n        <div className={modalClass} data-element=\"contentEditModal\" onMouseDown={closeModal}>\n          <div className=\"container\" onMouseDown={e => e.stopPropagation()}>\n            <div className=\"swipe-indicator\" />\n            <div className=\"header-container\">\n              <div className=\"header\">\n                <p>{t('component.editText')}</p>\n                <Button\n                  className=\"editTextModalCloseButton\"\n                  dataElement=\"editTextModalCloseButton\"\n                  title=\"action.close\"\n                  img=\"ic_close_black_24px\"\n                  onClick={closeModal}\n                />\n              </div>\n            </div>\n\n            {showWarning ? (\n              <div className=\"main-container\">\n                <h2 className=\"textareaLabel\">{t('message.warning')}</h2>\n                <p className=\"textareaLabel\">{t('message.enterContentEditingMode')}</p>\n                <p className=\"textareaLabel\">{t('message.existingAnnotationWarning')}</p>\n                <p className=\"textareaLabel\">{t('message.changesCannotBeUndone')}</p>\n                <Choice\n                  type=\"checkbox\"\n                  checked={hideWarning}\n                  label={t(`message.doNotShowAgain`)}\n                  onChange={() => {\n                    setHideWarning(!hideWarning);\n                  }}\n                />\n              </div>\n            ) : (\n              <div className=\"main-container\">\n                <ReactQuill\n                  value={currentContentBeingEdited.content}\n                  onChange={richTextEditorChangeHandler}\n                  modules={{ toolbar: toolbarOptions }}\n                />\n              </div>\n            )}\n\n            <div className=\"editing-controls footer-container\">\n              {showWarning ? (\n                <button className=\"button text-edit-proceed-button\" onClick={closeWarningModal}>\n                  {t('action.proceed')}\n                </button>\n              ) : (\n                <button className=\"button text-edit-save-button\" onClick={saveTextEditResults}>\n                  {t('action.apply')}\n                </button>\n              )}\n            </div>\n          </div>\n        </div>\n      </FocusTrap>\n    </Swipeable>\n  );\n}\n\nexport default ContentEditModal;\n","import ContentEditModal from './ContentEditModal';\n\nexport default ContentEditModal;","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport fireEvent from 'helpers/fireEvent';\nimport { Swipeable } from 'react-swipeable';\nimport { FocusTrap } from '@pdftron/webviewer-react-toolkit';\nimport defaultTool from 'constants/defaultTool';\nimport Events from 'constants/events';\nimport { mapAnnotationToKey } from 'constants/map';\nimport DataElements from \"constants/dataElement\";\nimport { rgbaToHex, hexToRgba } from 'helpers/color';\nimport { getAnnotationClass } from 'helpers/getAnnotationClass';\nimport Choice from 'components/Choice';\nimport Button from 'components/Button';\nimport { Tabs, Tab, TabPanel } from 'components/Tabs';\n\nimport './FilterAnnotModal.scss';\n\nconst TABS_ID = 'filterAnnotModal';\n\nconst FilterAnnotModal = () => {\n  const [isDisabled, isOpen, colorMap, selectedTab, annotationFilters] = useSelector(state => [\n    selectors.isElementDisabled(state, DataElements.FILTER_MODAL),\n    selectors.isElementOpen(state, DataElements.FILTER_MODAL),\n    selectors.getColorMap(state),\n    selectors.getSelectedTab(state, TABS_ID),\n    selectors.getAnnotationFilters(state)\n  ]);\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n\n  const [authors, setAuthors] = useState([]);\n  const [annotTypes, setAnnotTypes] = useState([]);\n  const [colors, setColorTypes] = useState([]);\n  const [statuses, setStatusTypes] = useState([]);\n  const [authorFilter, setAuthorFilter] = useState([]);\n  const [typesFilter, setTypesFilter] = useState([]);\n  const [colorFilter, setColorFilter] = useState([]);\n  const [checkRepliesForAuthorFilter, setCheckRepliesForAuthorFilter] = useState(true);\n  const [statusFilter, setStatusFilter] = useState([]);\n  const [filterCount, setFilterCount] = useState(0);\n  const [ifShowAnnotationStatus, setIfShowAnnotationStatus] = useState(false);\n\n  const getIconColor = (annot) => {\n    const key = mapAnnotationToKey(annot);\n    const iconColorProperty = colorMap[key]?.iconColor;\n\n    return annot[iconColorProperty];\n  };\n\n  const similarColorExist = (currColors, newColor) => {\n    const colorObject = currColors.map(c => Object.assign({\n      R: parseInt(`${c[1]}${c[2]}`, 16),\n      G: parseInt(`${c[3]}${c[4]}`, 16),\n      B: parseInt(`${c[5]}${c[6]}`, 16)\n    }));\n\n    const threshold = 10;\n    const similarColors = colorObject\n      .filter(c => Math.abs(newColor.R - c.R) < threshold\n        && Math.abs(newColor.G - c.G) < threshold\n        && Math.abs(newColor.B - c.B) < threshold);\n\n    return !!similarColors.length;\n  };\n\n  const filterApply = () => {\n    dispatch(\n      actions.setCustomNoteFilter(annot => {\n        let type = true;\n        let author = true;\n        let color = true;\n        let status = true;\n        if (typesFilter.length > 0) {\n          type = typesFilter.includes(getAnnotationClass(annot));\n        }\n        if (authorFilter.length > 0) {\n          author = authorFilter.includes(core.getDisplayAuthor(annot['Author']));\n          if (!author && checkRepliesForAuthorFilter) {\n            const allReplies = annot.getReplies();\n            for (const reply of allReplies) {\n              // Short-circuit the search if at least one reply is created by\n              // one of the desired authors\n              if (authorFilter.includes(core.getDisplayAuthor(reply['Author']))) {\n                author = true;\n                break;\n              }\n            }\n          }\n        }\n        if (colorFilter.length > 0) {\n          const iconColor = getIconColor(annot);\n          if (iconColor) {\n            color = similarColorExist(colorFilter, iconColor);\n          } else {\n            // check for default color if no color is available\n            color = colorFilter.includes('#485056');\n          }\n        }\n        if (statusFilter.length > 0) {\n          if (annot.getStatus()) {\n            status = statusFilter.includes(annot.getStatus());\n          } else {\n            status = statusFilter.includes('None');\n          }\n        }\n        return type && author && color && status;\n      }),\n    );\n    dispatch(actions.setAnnotationFilters({\n      includeReplies: checkRepliesForAuthorFilter,\n      authorFilter: authorFilter,\n      colorFilter: colorFilter,\n      typeFilter: typesFilter,\n      statusFilter: statusFilter\n    }));\n    fireEvent(\n      Events.ANNOTATION_FILTER_CHANGED,\n      {\n        types: typesFilter,\n        authors: authorFilter,\n        colors: colorFilter,\n        statuses: statusFilter,\n        checkRepliesForAuthorFilter\n      }\n    );\n    closeModal();\n  };\n\n  const filterClear = () => {\n    setCheckRepliesForAuthorFilter(false);\n    setAuthorFilter([]);\n    setTypesFilter([]);\n    setColorFilter([]);\n    setStatusFilter([]);\n  };\n\n  const closeModal = () => {\n    dispatch(actions.closeElement(DataElements.FILTER_MODAL));\n    core.setToolMode(defaultTool);\n  };\n\n  useEffect(() => {\n    const annots = core.getAnnotationsList();\n    // set is a great way to remove any duplicate additions and ensure the unique items are present\n    // the only gotcha that it should not be used by state since not always it will trigger a rerender\n    const authorsToBeAdded = new Set();\n    const annotTypesToBeAdded = new Set();\n    const annotColorsToBeAdded = new Set();\n    const annotStatusesToBeAdded = new Set();\n    annots.forEach(annot => {\n      const displayAuthor = core.getDisplayAuthor(annot['Author']);\n      if (displayAuthor && displayAuthor !== '') {\n        authorsToBeAdded.add(displayAuthor);\n      }\n      // We don't show it in the filter for WidgetAnnotation or StickyAnnotation or LinkAnnotation from the comments\n      if (\n        annot instanceof Annotations.WidgetAnnotation ||\n        (annot instanceof Annotations.StickyAnnotation && annot.isReply()) ||\n        annot instanceof Annotations.Link\n      ) {\n        return;\n      }\n      annotTypesToBeAdded.add(getAnnotationClass(annot));\n      const iconColor = getIconColor(annot);\n      if (iconColor && !similarColorExist([...annotColorsToBeAdded], iconColor)) {\n        annotColorsToBeAdded.add(rgbaToHex(iconColor.R, iconColor.G, iconColor.B, iconColor.A));\n      }\n\n      if (annot.getStatus()) {\n        annotStatusesToBeAdded.add(annot.getStatus());\n      } else {\n        annotStatusesToBeAdded.add('None');\n      }\n    });\n\n    setAuthors([...authorsToBeAdded]);\n    setAnnotTypes([...annotTypesToBeAdded]);\n    setColorTypes([...annotColorsToBeAdded]);\n    setStatusTypes([...annotStatusesToBeAdded]);\n\n    core.addEventListener('documentUnloaded', closeModal);\n    return () => {\n      core.removeEventListener('documentUnloaded', closeModal);\n    };\n  }, [isOpen]);\n\n  useEffect(() => {\n    if (selectedTab === DataElements.ANNOTATION_STATUS_FILTER_PANEL_BUTTON && !ifShowAnnotationStatus) {\n      dispatch(actions.setSelectedTab(TABS_ID, DataElements.ANNOTATION_USER_FILTER_PANEL_BUTTON));\n    }\n  }, [isOpen, selectedTab, ifShowAnnotationStatus]);\n\n  useEffect(() => {\n    setFilterCount((checkRepliesForAuthorFilter ? 1 : 0) + authorFilter.length + colorFilter.length + typesFilter.length + statusFilter.length);\n  }, [checkRepliesForAuthorFilter, authorFilter, colorFilter, typesFilter, statusFilter]);\n\n  useEffect(() => {\n    setIfShowAnnotationStatus((statuses.length > 1) || (statuses.length === 1 && statuses[0] !== 'None'));\n  }, [statuses]);\n\n  useEffect(() => {\n    if (isOpen) {\n      setCheckRepliesForAuthorFilter(annotationFilters.includeReplies);\n      setAuthorFilter(annotationFilters.authorFilter);\n      setColorFilter(annotationFilters.colorFilter);\n      setTypesFilter(annotationFilters.typeFilter);\n      setStatusFilter(annotationFilters.statusFilter);\n    }\n  }, [isOpen]);\n\n  const renderAuthors = () => {\n    return (\n      <>\n        <div className=\"include-replies\">\n          <Choice\n            isSwitch\n            label={t('option.filterAnnotModal.includeReplies')}\n            checked={checkRepliesForAuthorFilter}\n            onChange={e => setCheckRepliesForAuthorFilter(e.target.checked)}\n            id=\"filter-annot-modal-include-replies\"\n          />\n        </div>\n        <div className=\"user-filters three-column-filter\">\n          {[...authors].map((val, index) => {\n            return (\n              <Choice\n                type=\"checkbox\"\n                key={index}\n                label={val}\n                checked={authorFilter.includes(val)}\n                id={val}\n                onChange={e => {\n                  if (authorFilter.indexOf(e.target.getAttribute('id')) === -1) {\n                    setAuthorFilter([...authorFilter, e.target.getAttribute('id')]);\n                  } else {\n                    setAuthorFilter(authorFilter.filter(author => author !== e.target.getAttribute('id')));\n                  }\n                }}\n              />\n            );\n          })}\n        </div>\n      </>\n    );\n  };\n\n  const renderAnnotTypes = () => {\n    return (\n      <div className=\"type-filters three-column-filter\">\n        {[...annotTypes]\n          .sort((type1, type2) => (t(`annotation.${type1}`) <= t(`annotation.${type2}`) ? -1 : 1))\n          .map((val, index) => {\n            return (\n              <Choice\n                type=\"checkbox\"\n                key={index}\n                label={t(`annotation.${val}`)}\n                checked={typesFilter.includes(val)}\n                id={val}\n                onChange={e => {\n                  if (typesFilter.indexOf(e.target.getAttribute('id')) === -1) {\n                    setTypesFilter([...typesFilter, e.target.getAttribute('id')]);\n                  } else {\n                    setTypesFilter(typesFilter.filter(type => type !== e.target.getAttribute('id')));\n                  }\n                }}\n              />\n            );\n          })}\n      </div>\n    );\n  };\n\n  const renderColorTypes = () => {\n    return (\n      <div className=\"color-filters\">\n        {[...colors].map((val, index) => {\n          return (\n            <div className=\"colorSelect\" key={`color${index}`}>\n              <Choice\n                type=\"checkbox\"\n                checked={colorFilter.includes(val)}\n                id={val}\n                onChange={e => {\n                  if (colorFilter.indexOf(e.target.getAttribute('id')) === -1) {\n                    setColorFilter([...colorFilter, e.target.getAttribute('id')]);\n                  } else {\n                    setColorFilter(colorFilter.filter(color => color !== e.target.getAttribute('id')));\n                  }\n                }}\n              />\n              <div\n                className=\"colorCell\"\n                style={{\n                  background: hexToRgba(val),\n                }}\n              ></div>\n            </div>\n          );\n        })}\n      </div>\n    );\n  };\n\n  const renderStatusTypes = () => {\n    return (\n      <div className=\"status-filters three-column-filter\">\n        {[...statuses].map((val, index) => {\n          return (\n            <Choice\n              type=\"checkbox\"\n              key={index}\n              checked={statusFilter.includes(val)}\n              label={t(`option.state.${val.toLocaleLowerCase()}`)}\n              id={val}\n              onChange={e => {\n                if (statusFilter.indexOf(e.target.getAttribute('id')) === -1) {\n                  setStatusFilter([...statusFilter, e.target.getAttribute('id')]);\n                } else {\n                  setStatusFilter(statusFilter.filter(status => status !== e.target.getAttribute('id')));\n                }\n              }}\n            />\n          );\n        })}\n      </div>\n    );\n  };\n\n  const modalClass = classNames({\n    Modal: true,\n    FilterAnnotModal: true,\n    open: isOpen,\n    closed: !isOpen,\n  });\n\n  return isDisabled ? null : (\n    <div className={modalClass} data-element={DataElements.FILTER_MODAL} onMouseDown={closeModal}>\n      <FocusTrap locked={isOpen} focusLastOnUnlock>\n        <div className=\"container\" onMouseDown={e => e.stopPropagation()}>\n          {core.getAnnotationsList().length > 0 ? (\n            <div className=\"filter-modal\">\n              <Swipeable onSwipedDown={closeModal} preventDefaultTouchmoveEvent>\n                <div className=\"swipe-indicator\" />\n                <div className=\"header\">\n                  <div>{`${t('option.filterAnnotModal.filters')} (${filterCount})`}</div>\n                  <Button\n                    img=\"icon-close\"\n                    onClick={closeModal}\n                    title=\"action.cancel\"\n                  />\n                </div>\n              </Swipeable>\n              <div className=\"divider\"></div>\n              <div className=\"body\">\n                <Tabs id={TABS_ID}>\n                  <div className=\"tab-list\">\n                    <Tab dataElement={DataElements.ANNOTATION_USER_FILTER_PANEL_BUTTON}>\n                      <button className=\"tab-options-button\">\n                        {t('option.filterAnnotModal.user')}\n                      </button>\n                    </Tab>\n                    <div className=\"tab-options-divider\" />\n                    <Tab dataElement={DataElements.ANNOTATION_COLOR_FILTER_PANEL_BUTTON}>\n                      <button className=\"tab-options-button\">\n                        {t('option.filterAnnotModal.color')}\n                      </button>\n                    </Tab>\n                    <div className=\"tab-options-divider\" />\n                    <Tab dataElement={DataElements.ANNOTATION_TYPE_FILTER_PANEL_BUTTON}>\n                      <button className=\"tab-options-button\">\n                        {t('option.filterAnnotModal.type')}\n                      </button>\n                    </Tab>\n                    {ifShowAnnotationStatus && (\n                      <>\n                        <div className=\"tab-options-divider\" />\n                        <Tab dataElement={DataElements.ANNOTATION_STATUS_FILTER_PANEL_BUTTON}>\n                          <button className=\"tab-options-button\">\n                            {t('option.filterAnnotModal.status')}\n                          </button>\n                        </Tab>\n                      </>\n                    )}\n                  </div>\n                  <div className=\"filter-options\">\n                    <TabPanel dataElement=\"annotationUserFilterPanel\">\n                      {renderAuthors()}\n                    </TabPanel>\n                    <TabPanel dataElement=\"annotationColorFilterPanel\">\n                      {renderColorTypes()}\n                    </TabPanel>\n                    <TabPanel dataElement=\"annotationTypeFilterPanel\">\n                      {renderAnnotTypes()}\n                    </TabPanel>\n                    {ifShowAnnotationStatus && (\n                      <TabPanel dataElement=\"annotationStatusFilterPanel\">\n                        {renderStatusTypes()}\n                      </TabPanel>\n                    )}\n                  </div>\n                </Tabs>\n              </div>\n              <div className=\"divider\"></div>\n              <div className=\"footer\">\n                <Button className=\"filter-annot-clear\" onClick={filterClear} label={t('action.clearAll')} disabled={filterCount === 0} />\n                <Button className=\"filter-annot-apply\" onClick={filterApply} label={t('action.apply')} />\n              </div>\n            </div>\n          ) : (\n              <div>\n                <div className=\"swipe-indicator\" />\n                <div className=\"message\">{t('message.noAnnotationsFilter')}</div>\n              </div>\n            )}\n        </div>\n      </FocusTrap>\n    </div>\n  );\n};\n\nexport default FilterAnnotModal;\n","import FilterAnnotModal from './FilterAnnotModal';\n\nexport default FilterAnnotModal;","import FilePickerHandler from './FilePickerHandler';\n\nexport default FilePickerHandler;\n","import React from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\n\nimport getHashParameters from 'helpers/getHashParameters';\nimport loadDocument from 'helpers/loadDocument';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './FilePickerHandler.scss';\n\nconst FilePickerHandler = () => {\n  const isDisabled = useSelector(\n    state => selectors.isElementDisabled(state, 'filePickerHandler'),\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n\n  const openDocument = e => {\n    const file = e.target.files[0];\n    if (file) {\n      dispatch(actions.openElement('progressModal'));\n      dispatch(actions.closeElement('menuOverlay'));\n      loadDocument(dispatch, file);\n    }\n  };\n\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  const acceptFormats = wvServer ? window.Core.SupportedFileFormats.SERVER : window.Core.SupportedFileFormats.CLIENT;\n\n  return isDisabled ? null : (\n    <div className=\"FilePickerHandler\">\n      <input\n        id=\"file-picker\"\n        type=\"file\"\n        accept={acceptFormats.map(\n          format => `.${format}`,\n        ).join(', ')}\n        onChange={openDocument}\n      />\n    </div>\n  );\n};\n\nexport default FilePickerHandler;\n","import CopyTextHandler from './CopyTextHandler';\n\nexport default CopyTextHandler;\n","import React from 'react';\nimport './CopyTextHandler.scss';\n\nconst CopyTextHandler = () => (\n  <div className=\"CopyTextHandler\">\n    <textarea id=\"copy-textarea\" tabIndex={-1} aria-hidden />\n  </div>\n);\n\nexport default CopyTextHandler;\n","import React, { useState, useEffect } from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\n\nimport core from 'core';\nimport { workerTypes } from 'constants/types';\nimport { isIOS } from 'helpers/device';\nimport selectors from 'selectors';\n\nimport './PrintHandler.scss';\n\nconst PrintHandler = () => {\n  const [isDisabled, isEmbedPrintSupported] = useSelector(\n    state => [\n      selectors.isElementDisabled(state, 'printHandler'),\n      selectors.isEmbedPrintSupported(state),\n    ],\n    shallowEqual,\n  );\n  const [documentType, setDocumentType] = useState('');\n\n  useEffect(() => {\n    const onDocumentLoaded = () => {\n      const type = core.getDocument().getType();\n      setDocumentType(type);\n    };\n\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    return () => core.removeEventListener('documentLoaded', onDocumentLoaded);\n  });\n\n  return isDisabled ? null : (\n    <div\n      className={classNames({\n        PrintHandler,\n        'ios-print': isIOS,\n      })}\n    >\n      {isEmbedPrintSupported && documentType === workerTypes.PDF ? (\n        <iframe id=\"print-handler\" tabIndex={-1}></iframe>\n      ) : (\n        <div id=\"print-handler\"></div>\n      )}\n    </div>\n  );\n};\n\nexport default PrintHandler;\n","import PrintHandler from './PrintHandler';\n\nexport default PrintHandler;\n","import FontHandler from './FontHandler';\n\nexport default FontHandler;","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport selectors from 'selectors';\n\n// this component is used to preload the font(s) that is used in the SignatureModal(TextSignature)\n// if the font(s) isn't loaded in advanced, we will see the signature text filled with the sans-serif font\n// we could use <link rel=\"preload\" href=\"/path/some.woff2\" as=\"font\"> to preload a font but this hasn't been supported in all the browsers\nconst FontHandler = () => {\n  const fonts = useSelector(state => selectors.getSignatureFonts(state));\n\n  return (\n    <div style={{ opacity: 0 }}>\n      {fonts.map(font => (\n        <span key={font} style={{ fontFamily: font }}></span>\n      ))}\n    </div>\n  );\n};\nexport default FontHandler;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './OverlayItem.scss';\nimport classNames from 'classnames';\n\nclass OverlayItem extends React.PureComponent {\n  static propTypes = {\n    onClick: PropTypes.func,\n    buttonName: PropTypes.string,\n    role: PropTypes.string,\n    selected: PropTypes.bool\n  }\n\n  render() {\n    const { buttonName, role, selected } = this.props;\n    return (\n      <button className={classNames({OverlayItem: true, selected: selected})} onClick={this.props.onClick} aria-label={buttonName} role={role}>\n        <div className=\"ButtonText\">\n          { buttonName }\n        </div>\n      </button>\n    );\n  }\n}\n\nexport default OverlayItem;\n","import OverlayItem from './OverlayItem';\n\nexport default OverlayItem;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport OverlayItem from '../OverlayItem';\nimport ToolButton from '../ToolButton';\nimport Button from 'components/Button';\nimport './ZoomOverlay.scss';\nimport classNames from 'classnames';\n\nconst propTypes = {\n  zoomList: PropTypes.arrayOf(PropTypes.number).isRequired,\n  currentZoomLevel: PropTypes.number.isRequired,\n  isReaderMode: PropTypes.bool.isRequired,\n  isMarqueeZoomActive: PropTypes.bool.isRequired,\n  onClickZoomLevelOption: PropTypes.func.isRequired,\n  onClickMarqueeZoom: PropTypes.func.isRequired,\n  fitToWidth: PropTypes.func.isRequired,\n  fitToPage: PropTypes.func.isRequired,\n  isMarqueeToolButtonDisabled: PropTypes.bool\n}\n\nfunction ZoomOverlay(props) {\n  const [t] = useTranslation();\n\n  const { zoomList, currentZoomLevel, isReaderMode, isMarqueeZoomActive, fitToWidth, fitToPage, onClickZoomLevelOption, onClickMarqueeZoom, isMarqueeToolButtonDisabled } = props;\n\n  return (\n    <>\n      <Button\n        className=\"ZoomItem\"\n        img=\"icon-header-zoom-fit-to-width\"\n        label={t('action.fitToWidth')}\n        ariaLabel={t('action.fitToWidth')}\n        role=\"option\"\n        onClick={fitToWidth}\n      />\n      {!isReaderMode && (\n        <Button\n          className=\"ZoomItem\"\n          img=\"icon-header-zoom-fit-to-page\"\n          label={t('action.fitToPage')}\n          ariaLabel={t('action.fitToPage')}\n          role=\"option\"\n          onClick={fitToPage}\n        />\n      )}\n      <div className=\"divider\" />\n      {zoomList.map((zoomValue, i) => (\n        <OverlayItem key={i} onClick={() => onClickZoomLevelOption(zoomValue)} buttonName={`${zoomValue * 100}%`} selected={currentZoomLevel === zoomValue} role=\"option\" />\n      ))}\n      {!isReaderMode && (\n        <>\n          {!isMarqueeToolButtonDisabled && (\n            <div className=\"dividerSmall\" />\n          )}\n          <div onClick={() => onClickMarqueeZoom()}>\n            <ToolButton\n              className={classNames({ZoomItem: true, selected: isMarqueeZoomActive})}\n              role=\"option\"\n              toolName=\"MarqueeZoomTool\"\n              label={t('tool.Marquee')}\n              img=\"icon-header-zoom-marquee\"\n            />\n          </div>\n        </>\n      )}\n    </>\n  );\n}\n\nZoomOverlay.propTypes = propTypes;\n\nexport default ZoomOverlay;\n","import React from 'react';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport ZoomOverlay from './ZoomOverlay';\nimport { zoomTo, fitToPage, fitToWidth } from 'helpers/zoom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport FlyoutMenu from 'components/FlyoutMenu/FlyoutMenu';\n\nfunction ZoomOverlayContainer(props) {\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n\n  function onClickZoomLevelOption(zoomLevel) {\n    zoomTo(zoomLevel);\n    dispatch(actions.closeElements(['zoomOverlay']));\n  }\n\n  function onClickMarqueeZoom() {\n    dispatch(actions.closeElements(['zoomOverlay']));\n  }\n\n  return (\n    <FlyoutMenu menu=\"zoomOverlay\" trigger=\"zoomOverlayButton\" ariaLabel={t('component.zoomOverlay')}>\n      <ZoomOverlay\n        zoomList={useSelector(selectors.getZoomList)}\n        currentZoomLevel={useSelector(selectors.getZoom)}\n        isReaderMode={useSelector(selectors.isReaderMode)}\n        isMarqueeZoomActive={useSelector(selectors.getActiveToolName) === 'MarqueeZoomTool'}\n        isMarqueeToolButtonDisabled={useSelector(state => selectors.isElementDisabled(state, 'marqueeToolButton'))}\n        fitToWidth={fitToWidth}\n        fitToPage={fitToPage}\n        onClickZoomLevelOption={onClickZoomLevelOption}\n        onClickMarqueeZoom={onClickMarqueeZoom}\n      />\n    </FlyoutMenu>\n  );\n}\n\nexport default ZoomOverlayContainer;\n","import ZoomOverlay from './ZoomOverlayContainer';\n\nexport default ZoomOverlay;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport './CustomStampForums.scss';\nimport Choice from 'components/Choice';\nimport Dropdown from 'components/Dropdown';\nimport Button from 'components/Button';\nimport Icon from 'components/Icon';\n// ColorPalletPicker inner import required as we are not using the redux outer container\nimport ColorPalettePicker from 'components/ColorPalettePicker/ColorPalettePicker';\nimport Events from 'constants/events';\nimport PropTypes from 'prop-types';\n\nconst FALLBACK_DATE_TIME_FORMAT = {\n  date: 'MM/DD/YYYY',\n  time: 'hh:mm A',\n  timeFirst: false,\n};\n\nconst dateTimeFormatToString = (format, useDate = true, useTime = true) => {\n  if (!useDate) {\n    if (!format.time) {\n      return '';\n    }\n    return format.time;\n  }\n  if (!useTime) {\n    if (!format.date) {\n      return '';\n    }\n    return format.date;\n  }\n  return format.timeFirst ?\n    `${format.time} ${format.date}` :\n    `${format.date} ${format.time}`;\n};\n\nconst propTypes = {\n  state: PropTypes.object,\n  setState: PropTypes.func,\n  setEmptyInput: PropTypes.func,\n  fonts: PropTypes.array,\n  openColorPicker: PropTypes.func,\n  getCustomColorAndRemove: PropTypes.func,\n  openDeleteModal: PropTypes.func,\n  dateTimeFormats: PropTypes.array,\n  stampTool: PropTypes.object,\n  userName: PropTypes.string,\n};\n\nconst CustomStampForums = ({\n  state,\n  setState,\n  setEmptyInput,\n  fonts,\n  openColorPicker,\n  getCustomColorAndRemove,\n  openDeleteModal,\n  dateTimeFormats,\n  stampTool,\n  userName,\n}) => {\n  const updateTimestampLabel = (usernameChk, dateChk, dateTime) => {\n    let tmpText = '';\n    if (usernameChk) {\n      tmpText += '[$currentUser] ';\n    }\n    if (dateChk) {\n      tmpText += dateTime;\n    }\n    return tmpText;\n  };\n\n  const defaultDateTimeFormat = dateTimeFormats && dateTimeFormats[0] ? dateTimeFormats[0] : FALLBACK_DATE_TIME_FORMAT;\n  const [dateTime, setDateTime] = useState(dateTimeFormatToString(defaultDateTimeFormat));\n  const [usernameCheckbox, setUsernameCheckbox] = useState(true);\n  const [dateCheckbox, setDateCheckbox] = useState(true);\n  const [timeCheckbox, setTimeCheckbox] = useState(true);\n\n  const [stampTextInputValue, setStampText] = useState('Draft');\n  const [t] = useTranslation();\n\n  const txt = updateTimestampLabel(usernameCheckbox, dateCheckbox, dateTime);\n  const [timestampFormat, setTimestampFormat] = useState(txt);\n\n  const canvasRef = useRef();\n  const canvasContainerRef = useRef();\n  const inputRef = useRef();\n\n  const updateCanvas = (title, subtitle, newState = state) => {\n    const parameters = {\n      canvas: canvasRef.current,\n      title,\n      subtitle,\n      width: 300,\n      height: 100,\n      color: newState.color,\n      textColor: newState.textColor,\n      canvasParent: canvasContainerRef.current,\n      font: newState.font,\n      bold: newState.bold,\n      italic: newState.italic,\n      underline: newState.underline,\n      strikeout: newState.strikeout,\n    };\n\n    const width = stampTool.drawCustomStamp(parameters);\n    const dataURL = canvasRef.current.toDataURL();\n\n    setState({\n      ...newState,\n      width,\n      title,\n      subtitle,\n      height: parameters.height,\n      dataURL,\n    });\n  };\n\n  const handleInputChange = e => {\n    const value = e.target.value || '';\n    setStampText(value);\n    setEmptyInput(!value);\n    updateCanvas(value, timestampFormat);\n  };\n\n  useEffect(() => {\n    updateCanvas(stampTextInputValue, timestampFormat, state);\n  }, [userName]);\n\n  const handleDateCheckboxChange = () => {\n    setDateCheckbox(!dateCheckbox);\n    const newDateTime = dateTimeFormatToString(defaultDateTimeFormat, !dateCheckbox, timeCheckbox);\n    setDateTime(newDateTime);\n    const txt = updateTimestampLabel(usernameCheckbox, (!dateCheckbox || timeCheckbox), newDateTime);\n    setTimestampFormat(txt);\n    updateCanvas(stampTextInputValue, txt);\n  };\n\n  const handleTimeCheckboxChange = () => {\n    setTimeCheckbox(!timeCheckbox);\n    const newDateTime = dateTimeFormatToString(defaultDateTimeFormat, dateCheckbox, !timeCheckbox);\n    setDateTime(newDateTime);\n    const txt = updateTimestampLabel(usernameCheckbox, (dateCheckbox || !timeCheckbox), newDateTime);\n    setTimestampFormat(txt);\n    updateCanvas(stampTextInputValue, txt);\n  };\n\n  const handleUsernameCheckbox = () => {\n    setUsernameCheckbox(!usernameCheckbox);\n    const txt = updateTimestampLabel(!usernameCheckbox, dateCheckbox, dateTime);\n    setTimestampFormat(txt);\n    updateCanvas(stampTextInputValue, txt);\n  };\n\n  const handleFontChange = font => {\n    updateCanvas(stampTextInputValue, timestampFormat, {\n      ...state,\n      font,\n    });\n  };\n\n  const onDateFormatChange = newFormat => {\n    setDateTime(newFormat);\n    const txt = updateTimestampLabel(usernameCheckbox, (dateCheckbox || timeCheckbox), newFormat);\n    setTimestampFormat(txt);\n    updateCanvas(stampTextInputValue, txt);\n  };\n\n  const handleRichTextStyleChange = style => {\n    updateCanvas(stampTextInputValue, timestampFormat, {\n      ...state,\n      [style]: !state[style],\n    });\n  };\n\n  const toggleBold = () => handleRichTextStyleChange('bold');\n  const toggleItalic = () => handleRichTextStyleChange('italic');\n  const toggleStrikeout = () => handleRichTextStyleChange('strikeout');\n  const toggleUnderline = () => handleRichTextStyleChange('underline');\n\n  const stampInputLabel = t('option.customStampModal.stampText');\n\n  const getHexColor = givenColor => {\n    if (givenColor && givenColor.A) {\n      return givenColor.toHexString().toLowerCase();\n    }\n    return '#000000';\n  };\n  const openPicker = (addNew, type) => {\n    const isText = type === 'text';\n    openColorPicker();\n    const handleVisiblityChanged = e => {\n      const { element, isVisible } = e.detail;\n      if (element === 'ColorPickerModal' && !isVisible) {\n        const color = getCustomColorAndRemove();\n        if (color) {\n          const colorToBeAdded = getHexColor(color);\n          isText ? setTextColor(colorToBeAdded) : setBackgroundColor(colorToBeAdded);\n          const toolColors = window.Core.Tools.RubberStampCreateTool[isText ? 'TEXT_COLORS' : 'FILL_COLORS'];\n          toolColors.push(colorToBeAdded);\n          isText ? setTextColors(toolColors) : setBackgroundColors(toolColors);\n          state = {\n            ...state,\n            [isText ? 'textColor' : 'color']: colorToBeAdded,\n          };\n          updateCanvas(stampTextInputValue, timestampFormat, state);\n        }\n      }\n      window.instance.UI.removeEventListener(Events.VISIBILITY_CHANGED, handleVisiblityChanged);\n    };\n    window.instance.UI.addEventListener(Events.VISIBILITY_CHANGED, handleVisiblityChanged);\n  };\n  const deleteColor = type => {\n    const isText = type === 'text';\n    openDeleteModal(() => {\n      const newColors = isText ?\n        textColors.filter(color => color !== textColorToBeDeleted) :\n        backgroundColors.filter(color => color !== backgroundColorToBeDeleted);\n      isText ? setTextColors(newColors) : setBackgroundColors(newColors);\n      isText ? setTextColorToBeDeleted(null) : setBackgroundColorToBeDeleted(null);\n      window.Core.Tools.RubberStampCreateTool[isText ? 'TEXT_COLORS' : 'FILL_COLORS'] = newColors;\n    });\n  };\n\n  const [backgroundColors, setBackgroundColors] = useState(window.Core.Tools.RubberStampCreateTool['FILL_COLORS']);\n  const [backgroundColor, setBackgroundColor] = useState(window.Core.Tools.RubberStampCreateTool['FILL_COLORS'][0]);\n  const [backgroundColorToBeDeleted, setBackgroundColorToBeDeleted] = useState(null);\n\n  const [textColors, setTextColors] = useState(window.Core.Tools.RubberStampCreateTool['TEXT_COLORS']);\n  const [textColor, setTextColor] = useState(window.Core.Tools.RubberStampCreateTool['TEXT_COLORS'][0]);\n  const [textColorToBeDeleted, setTextColorToBeDeleted] = useState(null);\n\n  const openColorPickerText = addNew => openPicker(addNew, 'text');\n  const handleTextColorChange = newColor => {\n    setTextColor(newColor);\n    state = {\n      ...state,\n      textColor: newColor,\n    };\n    updateCanvas(stampTextInputValue, timestampFormat, state);\n  };\n  const handleTextColorDelete = () => deleteColor('text');\n\n  const openColorPickerBackground = addNew => openPicker(addNew, 'fill');\n  const handleBackgroundColorChange = newColor => {\n    setBackgroundColor(newColor);\n    state = {\n      ...state,\n      color: newColor,\n    };\n    updateCanvas(stampTextInputValue, timestampFormat, state);\n  };\n  const handleBackgroundColorDelete = () => deleteColor('fill');\n\n  const formatsList = dateTimeFormats ? dateTimeFormats : [FALLBACK_DATE_TIME_FORMAT];\n  const dateTimeDropdownItems = Array.from(new Set(\n    formatsList.map(format => dateTimeFormatToString(format, dateCheckbox, timeCheckbox))\n  )).filter(format => format !== '');\n\n  return (\n    <div className=\"text-customstamp\">\n      <div className=\"canvas-container\" ref={canvasContainerRef}>\n        <canvas\n          className=\"custom-stamp-canvas\"\n          ref={canvasRef}\n        />\n      </div>\n      <div className=\"scroll-container\">\n        <div className=\"stamp-input-container\">\n          <div className=\"stamp-label\"> {stampInputLabel} </div>\n          <input\n            className=\"text-customstamp-input\"\n            ref={inputRef}\n            type=\"text\"\n            aria-label={stampInputLabel.substring(0, stampInputLabel.length - 1)}\n            value={stampTextInputValue}\n            onChange={handleInputChange}\n          />\n          {\n            !stampTextInputValue\n            && (\n              <div className=\"empty-stamp-input\">\n                {t('message.emptyCustomStampInput')}\n              </div>\n            )\n          }\n        </div>\n        <div className=\"font-container\">\n          <div className=\"stamp-sublabel\"> {t('option.customStampModal.fontStyle')} </div>\n          <div className=\"font-inner-container\">\n            <Dropdown\n              items={fonts}\n              onClickItem={handleFontChange}\n              currentSelectionKey={state.font || fonts[0]}\n              isFont\n            />\n            <Button\n              dataElement=\"stampTextBoldButton\"\n              onClick={toggleBold}\n              img=\"icon-menu-bold\"\n              title=\"option.richText.bold\"\n              isActive={state.bold}\n            />\n            <Button\n              dataElement=\"stampTextItalicButton\"\n              onClick={toggleItalic}\n              img=\"icon-menu-italic\"\n              title=\"option.richText.italic\"\n              isActive={state.italic}\n            />\n            <Button\n              dataElement=\"stampTextUnderlineButton\"\n              onClick={toggleUnderline}\n              img=\"icon-menu-text-underline\"\n              title=\"option.richText.underline\"\n              isActive={state.underline}\n            />\n            <Button\n              dataElement=\"stampTextStrikeoutButton\"\n              onClick={toggleStrikeout}\n              img=\"icon-tool-text-manipulation-strikethrough\"\n              title=\"option.richText.strikeout\"\n              isActive={state.strikeout}\n            />\n          </div>\n        </div>\n        <div className=\"color-container\">\n          <div className=\"stamp-sublabel\">{t('option.customStampModal.textColor')}</div>\n          <div className=\"colorpalette-container\">\n            <ColorPalettePicker\n              getHexColor={getHexColor}\n              color={textColor}\n              setColorToBeDeleted={setTextColorToBeDeleted}\n              colorToBeDeleted={textColorToBeDeleted}\n              customColors={textColors}\n              onStyleChange={setTextColor}\n              handleColorOnClick={handleTextColorChange}\n              handleOnClick={handleTextColorChange}\n              openColorPicker={openColorPickerText}\n              openDeleteModal={handleTextColorDelete}\n              disableTitle\n              enableEdit\n              colorsAreHex\n            />\n          </div>\n        </div>\n        <div className=\"color-container\">\n          <div className=\"stamp-sublabel\">{t('option.customStampModal.backgroundColor')}</div>\n          <div className=\"colorpalette-container\">\n            <ColorPalettePicker\n              getHexColor={getHexColor}\n              color={backgroundColor}\n              setColorToBeDeleted={setBackgroundColorToBeDeleted}\n              colorToBeDeleted={backgroundColorToBeDeleted}\n              customColors={backgroundColors}\n              onStyleChange={setBackgroundColor}\n              handleColorOnClick={handleBackgroundColorChange}\n              handleOnClick={handleBackgroundColorChange}\n              openColorPicker={openColorPickerBackground}\n              openDeleteModal={handleBackgroundColorDelete}\n              disableTitle\n              enableEdit\n              colorsAreHex\n            />\n          </div>\n        </div>\n        <div className=\"timestamp-container\">\n          <div className=\"stamp-sublabel\"> {t('option.customStampModal.timestampText')} </div>\n          <div className=\"timeStamp-choice\">\n            <Choice\n              id=\"default-username\"\n              checked={usernameCheckbox}\n              onChange={handleUsernameCheckbox}\n              label={t('option.customStampModal.Username')}\n            />\n            <Choice\n              id=\"default-date\"\n              checked={dateCheckbox}\n              onChange={handleDateCheckboxChange}\n              label={t('option.customStampModal.Date')}\n            />\n            <Choice\n              id=\"default-time\"\n              checked={timeCheckbox}\n              onChange={handleTimeCheckboxChange}\n              label={t('option.customStampModal.Time')}\n            />\n          </div>\n        </div>\n        {(dateCheckbox || timeCheckbox) && <div className=\"date-format-container\">\n          <div className=\"stamp-sublabel\">{t('option.customStampModal.dateFormat')}</div>\n          <div className=\"hover-icon\">\n            <Icon glyph=\"icon-info\"/>\n            <div className=\"date-format-description\">\n              <div className=\"date-format-cell\">M = {t('option.customStampModal.month')}</div>\n              <div className=\"date-format-cell\">D = {t('option.customStampModal.day')}</div>\n              <div className=\"date-format-cell\">Y = {t('option.customStampModal.year')}</div>\n              <div className=\"date-format-cell\">H = {t('option.customStampModal.hour')} (24hr)</div>\n              <div className=\"date-format-cell\">h = {t('option.customStampModal.hour')} (12hr)</div>\n              <div className=\"date-format-cell\">m = {t('option.customStampModal.minute')}</div>\n              <div className=\"date-format-cell\">s = {t('option.customStampModal.second')}</div>\n              <div className=\"date-format-cell\">A = AM/PM</div>\n            </div>\n          </div>\n          <Dropdown\n            items={dateTimeDropdownItems}\n            currentSelectionKey={dateTime}\n            onClickItem={onDateFormatChange}\n          />\n        </div>}\n      </div>\n    </div>\n  );\n};\n\nCustomStampForums.propTypes = propTypes;\n\nexport default CustomStampForums;\n","import React, { useState } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch, useStore } from 'react-redux';\nimport { FocusTrap } from '@pdftron/webviewer-react-toolkit';\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { useTranslation } from 'react-i18next';\n// import ActionButton from 'components/ActionButton'; /* Temporarily commented out */\nimport CustomStampForums from './CustomStampForums';\nimport Button from 'components/Button';\n\nimport './CreateStampModal.scss';\n\nconst TOOL_NAME = 'AnnotationCreateRubberStamp';\n\nconst CustomStampModal = () => {\n  const [state, setState] = useState({ font: 'Helvetica', bold: true });\n  const stampTool = core.getTool(TOOL_NAME);\n  const [t] = useTranslation();\n  const store = useStore();\n  const [emptyInput, setEmptyInput] = useState(false);\n  const [isOpen, fonts, dateTimeFormats, userName] = useSelector(state => [\n    selectors.isElementOpen(state, 'customStampModal'),\n    selectors.getFonts(state),\n    selectors.getDateTimeFormats(state),\n    selectors.getUserName(state),\n  ]);\n  const dispatch = useDispatch();\n  const closeModal = () => {\n    dispatch(actions.closeElement('customStampModal'));\n  };\n\n  const openColorPicker = () => {\n    dispatch(actions.openElement('ColorPickerModal'));\n  };\n\n  const getCustomColorAndRemove = () => {\n    const customColor = selectors.getCustomColor(store.getState());\n    dispatch(actions.setCustomColor(null));\n    return customColor;\n  };\n\n  const openDeleteModal = async onConfirm => {\n    const message = t('warning.colorPicker.deleteMessage');\n    const title = t('warning.colorPicker.deleteTitle');\n    const confirmBtnText = t('action.ok');\n\n    const warning = {\n      message,\n      title,\n      confirmBtnText,\n      onConfirm,\n    };\n    dispatch(actions.showWarningMessage(warning));\n  };\n\n\n  const modalClass = classNames({\n    Modal: true,\n    CustomStampModal: true,\n    open: isOpen,\n    closed: !isOpen,\n  });\n\n  const createCustomStamp = async () => {\n    core.setToolMode(TOOL_NAME);\n    stampTool.addCustomStamp(state);\n    const annot = await stampTool.createCustomStampAnnotation(state);\n    await stampTool.setRubberStamp(annot);\n    stampTool.showPreview();\n    dispatch(actions.closeElement('customStampModal'));\n    const standardStampCount = stampTool.getStandardStamps().length;\n    const customStampCount = stampTool.getCustomStamps().length;\n    dispatch(actions.setSelectedStampIndex(standardStampCount + customStampCount - 1));\n  };\n\n  return (\n    isOpen ?\n      <div\n        className={modalClass}\n        data-element=\"customStampModal\"\n      >\n        <FocusTrap locked={isOpen}>\n          <div className=\"container\" onMouseDown={e => e.stopPropagation()}>\n            <div className=\"header\">\n              <p>{t(`option.customStampModal.modalName`)}</p>\n              <Button\n                dataElement=\"customStampModalCloseButton\"\n                title=\"action.close\"\n                img=\"ic_close_black_24px\"\n                onClick={closeModal}\n              />\n            </div>\n            <CustomStampForums\n              openDeleteModal={openDeleteModal}\n              getCustomColorAndRemove={getCustomColorAndRemove}\n              openColorPicker={openColorPicker}\n              isModalOpen={isOpen}\n              state={state}\n              setState={setState}\n              closeModal={closeModal}\n              setEmptyInput={setEmptyInput}\n              fonts={fonts}\n              dateTimeFormats={dateTimeFormats}\n              stampTool={stampTool}\n              userName={userName}\n            />\n            <div className=\"footer\">\n              <div\n                className={\n                  emptyInput\n                    ? 'stamp-create stamp-create-disabled'\n                    : 'stamp-create'\n                }\n                onClick={\n                  () => {\n                    if (emptyInput) {\n                      return;\n                    }\n                    createCustomStamp();\n                  }\n                }\n              >\n                {t('action.create')}\n              </div>\n            </div>\n          </div>\n        </FocusTrap>\n      </div>\n      :\n      null\n  );\n};\n\nexport default CustomStampModal;\n","import CreateStampModal from './CreateStampModal';\n\nexport default CreateStampModal;\n","import React, { useState } from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport './FileListPanel.scss';\n\nconst FileListPanel = ({ defaultValue, onFileSelect, list = [] }) => {\n  const [t] = useTranslation();\n  const { id } = defaultValue || {};\n\n  const onRowClick = (id) => {\n    onFileSelect(list.find(item => item.id === id));\n  };\n\n  const onRowKeyDown = (event, id) => {\n    if (event.key === 'Enter') {\n      onFileSelect(list.find(item => item.id === id));\n    }\n  };\n\n  const getFileThumbnail = (item) => {\n    if (item.hasOwnProperty('thumbnail')) {\n      let src = null;\n      const thumbnail = item.thumbnail;\n      if (thumbnail.url) {\n        src = thumbnail.url;\n      } else if (thumbnail.toDataURL) {\n        src = thumbnail.toDataURL();\n      }\n      //If thumbnail doesnt have a url or is canvas then we just show a blank square\n      const img = <img src={src} className=\"li-div-img\" />\n      return (<div className=\"li-div\">{img}</div>);\n    } else {\n      return null;\n    }\n  }\n\n  const elements = list.map((item, i) => {\n    const isSelected = id === item.id;\n    const modalClass = classNames({\n      selected: isSelected\n    });\n\n    const thumbnail = getFileThumbnail(item);\n\n    return (\n      <li tabIndex=\"0\" key={i} onClick={() => onRowClick(item.id)} onKeyDown={(event) => onRowKeyDown(event, item.id)} className={modalClass}>\n        {thumbnail}\n        <div className=\"li-div-txt\" >{item.filename}</div>\n      </li>\n    );\n  });\n\n  return (\n    <div className=\"FileListPanel\">\n      <ul>\n        {elements}\n      </ul>\n    </div>\n  );\n}\n\nexport default FileListPanel;","import FileListPanel from './FileListPanel';\n\nexport default FileListPanel;","import ThumbnailCard from './ThumbnailCard';\n\nexport default ThumbnailCard;","import React from 'react';\nimport Choice from '../../Choice/Choice';\nimport './ThumbnailCard.scss';\n\nconst ThumbnailCard = ({ onChange, checked, index, thumbnail }) => {\n  let img = null;\n\n  if (thumbnail) {\n    let src;\n    if (thumbnail.currentSrc) {\n      src = thumbnail.currentSrc\n    } else if (thumbnail.url) {\n      src = thumbnail.url;\n    } else if (thumbnail.toDataURL) {\n      src = thumbnail.toDataURL();\n    }\n\n    img = <img className=\"thumb-card-img\" alt=\"img_name\" src={src} />\n  }\n\n  return (\n    <div className=\"thumb-card\" onClick={onChange}>\n      <Choice\n        id={`custom-checkbox-${index}`}\n        className=\"thumb-card-ck\"\n        name={'thumb' + index}\n        checked={checked}\n      />\n      <div className=\"thumb-card-body\">\n        {img}\n      </div>\n      <div className=\"thumb-card-title\">{index + 1}</div>\n    </div>\n  );\n};\n\nexport default ThumbnailCard;","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport getPageArrayFromString from 'helpers/getPageArrayFromString';\nimport './PageNumberInput.scss';\n\nconst propTypes = {\n  selectedPageNumbers: PropTypes.arrayOf(PropTypes.number),\n  pageCount: PropTypes.number,\n  onSelectedPageNumbersChange: PropTypes.func,\n  onBlurHandler: PropTypes.func,\n  placeholder: PropTypes.string,\n};\n\nconst noop = () => {};\n\nfunction PageNumberInput({ selectedPageNumbers, onSelectedPageNumbersChange, onBlurHandler = noop, pageCount, placeHolder, onError = noop }) {\n  // Since we don't have page labels info we just assume page numbers as labels\n  const pageLabels = Array.from({ length: pageCount }, (_, i) => (i + 1).toString());\n  const [pageString, setPageString] = useState('');\n\n  useEffect(() => {\n    //Whenever we receive a selectedPageNumbers prop, massage it into the nice format\n    if (selectedPageNumbers) {\n      setPageString(getPageString(selectedPageNumbers));\n    }\n  }, [selectedPageNumbers]);\n\n  const onPagesChange = e => {\n    setPageString(e.target.value);\n\n    const selectedPagesString = e.target.value.replace(/ /g, '');\n    const pageNumbersArray = !selectedPagesString ? [] : getPageArrayFromString(selectedPagesString, pageLabels, pageCount, onError);\n\n    //Send info back to parent component\n    onSelectedPageNumbersChange && onSelectedPageNumbersChange(pageNumbersArray);\n  };\n\n  const getPageString = selectedPageArray => {\n    let pagesToPrint = '';\n    const sortedPages = selectedPageArray.sort((a, b) => a - b);\n    let prevIndex = null;\n\n    for (let i = 0; sortedPages.length > i; i++) {\n      if (sortedPages[i + 1] === sortedPages[i] + 1) {\n        prevIndex = prevIndex !== null ? prevIndex : sortedPages[i];\n      } else if (prevIndex !== null) {\n        pagesToPrint = `${pagesToPrint}${prevIndex}-${sortedPages[i]}, `;\n        prevIndex = null;\n      } else {\n        pagesToPrint = `${pagesToPrint}${sortedPages[i]}, `;\n      }\n    }\n\n    return pagesToPrint.slice(0, -2);\n  };\n\n  const onBlur = e => {\n    const selectedPagesString = e.target.value.replace(/ /g, '');\n    const pageNumbersArray = !selectedPagesString ? [] : getPageArrayFromString(selectedPagesString, pageLabels, pageCount, onError);\n    const pageNumbersString = getPageString(pageNumbersArray);\n    setPageString(pageNumbersString);\n\n    //Send info back to parent component\n    onBlurHandler && onBlurHandler(pageNumbersArray);\n  };\n\n  return (\n    <input\n      className=\"page-number-input\"\n      type=\"text\"\n      onChange={onPagesChange}\n      onBlur={onBlur}\n      value={pageString}\n      placeholder={placeHolder}\n    />\n  );\n}\n\nPageNumberInput.propTypes = propTypes;\n\nexport default PageNumberInput;\n","import PageNumberInput from './PageNumberInput';\n\nexport default PageNumberInput;","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport Button from 'components/Button';\nimport { useTranslation } from 'react-i18next';\nimport ThumbnailCard from '../ThumbnailCard';\nimport PageNumberInput from '../PageNumberInput';\nimport '../PageReplacementModal.scss';\nimport './FileSelectedPanel.scss';\n\n// Need to forward the ref so the FocusTrap works correctly\nconst FileSelectedPanel = React.forwardRef((\n  {\n    closeThisModal,\n    pageIndicesToReplace,\n    sourceDocument,\n    replacePagesHandler,\n    documentInViewer,\n  }, ref) => {\n  const [t] = useTranslation();\n\n  const [currentDocSelectedPageNumbers, setCurrentDocSelectedPageNumbers] = useState(pageIndicesToReplace.map(index => index + 1));\n  const [selectedThumbnails, setSelectedThumbnails] = useState({});\n  const [thumbnails, setThumbnails] = useState([]);\n  const [isLoading, setIsLoading] = useState(true);\n  const [completedPages, setCompletedPagesCount] = useState(0);\n  const [sourceDocumentName, setSourceDocumentName] = useState(null);\n  const [currentDocumentName, setCurrentDocumentName] = useState(null);\n  const [sourceDocumentPageCount, setSourceDocumentPageCount] = useState(0);\n\n  useEffect(() => {\n    async function generateThumbnails() {\n      const thumbnails = [];\n      const pageCount = sourceDocument.getPageCount();\n      setSourceDocumentPageCount(pageCount);\n\n      const thumbnailPromises = [];\n      for (let i = 1; i <= pageCount; i++) {\n        const thumbnailPromise = new Promise(resolve => {\n          sourceDocument.loadThumbnail(i, (result) => {\n            let thumbnail;\n            // If we get an embedded thumbnail we set the currentSrc prop\n            // otherwise we set the URl to avoid having to call this repeatedly every time the thumbnail card is rendered\n            if (result.currentSrc) {\n              thumbnail = {\n                pageNumber: i,\n                currentSrc: result.currentSrc,\n              };\n            } else {\n              thumbnail = {\n                pageNumber: i,\n                url: result.toDataURL(),\n              };\n            }\n            thumbnails.push(thumbnail);\n            setCompletedPagesCount(i);\n            resolve();\n          })\n        });\n        thumbnailPromises.push(thumbnailPromise);\n      }\n\n      await Promise.all(thumbnailPromises)\n      const sortedThumbnails = thumbnails.sort((a, b) => a.pageNumber - b.pageNumber);\n      setThumbnails(sortedThumbnails)\n      setIsLoading(false);\n    };\n\n    function getTruncatedName(documentName) {\n      let truncatedName;\n      if (documentName.length > 25) {\n        truncatedName = `\"${documentName.slice(0, 10)}...${documentName.slice(documentName.length - 10)}\"`\n      } else {\n        truncatedName = `\"${documentName}\"`\n      }\n\n      return truncatedName;\n    };\n\n    if (sourceDocument) {\n      generateThumbnails();\n      setSourceDocumentName(getTruncatedName(sourceDocument.getFilename()));\n      setCurrentDocumentName(getTruncatedName(documentInViewer.getFilename()))\n    }\n  }, [sourceDocument]);\n\n  const replacePages = () => {\n    const pagesToReplaceIntoDocument = getPageNumbersFromSelectedThumbnails();\n    replacePagesHandler(sourceDocument, currentDocSelectedPageNumbers, pagesToReplaceIntoDocument);\n    closeThisModal();\n  };\n\n  const deselectAllThumbnails = () => {\n    setSelectedThumbnails({});\n  };\n\n  const getPageNumbersFromSelectedThumbnails = () => {\n    const selectedPageNumbers = [];\n\n    for (const pageNumber in selectedThumbnails) {\n      if (selectedThumbnails[pageNumber]) {\n        selectedPageNumbers.push(parseInt(pageNumber))\n      }\n    }\n    return selectedPageNumbers;\n  };\n\n\n  const onThumbnailSelected = (pageNumber) => {\n    if (selectedThumbnails[pageNumber] === undefined) {\n      selectedThumbnails[pageNumber] = true;\n    } else {\n      selectedThumbnails[pageNumber] = !selectedThumbnails[pageNumber];\n    }\n    setSelectedThumbnails({ ...selectedThumbnails });\n  };\n\n  const renderContent = () => {\n    if (thumbnails.length > 0) {\n      return thumbnails.map((thumbnail, index) => {\n        const pageNumber = index + 1;\n        return (\n          <ThumbnailCard key={pageNumber}\n            onChange={() => onThumbnailSelected(pageNumber)}\n            checked={!!selectedThumbnails[pageNumber]}\n            index={index}\n            thumbnail={thumbnail}\n          />\n        )\n      })\n    } else {\n      const pageCount = sourceDocument ? sourceDocument.getPageCount() : 0;\n      const processText = `${completedPages}/${pageCount}`;\n      return (<div>{t('message.processing')} {processText}</div>)\n    }\n  };\n\n  const isReplaceButtonDisabled = () => {\n    for (const pageIndex in selectedThumbnails) {\n      if (selectedThumbnails[pageIndex]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  const onSourceDocumentNumberInputChange = (selectedPageNumbers) => {\n    const selectedPagesMap = selectedPageNumbers.reduce((map, pageNumber) => ({ ...map, [pageNumber]: true }), {});\n    setSelectedThumbnails({ ...selectedPagesMap });\n  };\n\n\n  const loadedDocumentPageCount = documentInViewer.getPageCount();\n\n  return (\n    <div className=\"container\" onMouseDown={e => e.stopPropagation()} ref={ref}>\n      <div className=\"swipe-indicator\" />\n      <div className=\"header\">\n        {t(`component.pageReplaceModalTitle`)}\n        <Button\n          img={\"icon-close\"}\n          onClick={() => closeThisModal()}\n          dataElement={\"pageReplacementModalClose\"}\n        />\n      </div>\n      <div className=\"page-replacement-divider\" />\n      <div className=\"modal-body\">\n        <div className=\"replace-page-input-container\">\n          <div className=\"replace-page-input\">{t('option.pageReplacementModal.pageReplaceInputLabel')}</div>\n          <PageNumberInput\n            selectedPageNumbers={currentDocSelectedPageNumbers}\n            pageCount={loadedDocumentPageCount}\n            onBlurHandler={setCurrentDocSelectedPageNumbers}\n          />\n          <div className=\"replace-page-input\"><span className=\"page-replace-doc-name\">{currentDocumentName}</span> {t('option.pageReplacementModal.pageReplaceInputFromSource')}</div>\n          <PageNumberInput\n            selectedPageNumbers={getPageNumbersFromSelectedThumbnails()}\n            pageCount={sourceDocumentPageCount}\n            onBlurHandler={onSourceDocumentNumberInputChange}\n          />\n          <div className=\"replace-page-input\"><span className=\"page-replace-doc-name\">{sourceDocumentName}</span></div>\n        </div>\n        <div className={classNames(\"modal-body-container\", { isLoading })}>\n          {renderContent()}\n        </div>\n      </div>\n      <div className=\"page-replacement-divider\" />\n      <div className={classNames(\"footer\", { isFileSelected: !isLoading })}>\n        <button className={classNames(\"deselect-thumbnails\", { disabled: isLoading })} onClick={deselectAllThumbnails} disabled={isLoading}>\n          {t('action.deselectAll')}\n        </button>\n        <Button\n          className=\"modal-btn replace-btn\"\n          onClick={() => replacePages()}\n          label={t('action.replace')}\n          disabled={isReplaceButtonDisabled()}\n        />\n      </div>\n    </div >\n  );\n});\n\nexport default FileSelectedPanel;","import React from 'react';\nimport FileSelectedPanel from './FileSelectedPanel';\nimport { replacePages } from '../../../helpers/pageManipulationFunctions';\nimport core from 'core';\n\n// Need to forward the ref to keep the focus trap working correctly\nconst FileSelectedPanelContainer = React.forwardRef((props, ref) => {\n\n  const documentInViewer = core.getDocument();\n\n  return (\n    <FileSelectedPanel\n      {...props}\n      documentInViewer={documentInViewer}\n      replacePagesHandler={replacePages}\n      ref={ref}\n    />\n  )\n});\n\nexport default FileSelectedPanelContainer;","import FileSelectedPanel from './FileSelectedPanelContainer';\n\nexport default FileSelectedPanel;","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport core from 'core';\nimport { useTranslation } from 'react-i18next';\nimport { FocusTrap } from '@pdftron/webviewer-react-toolkit';\nimport './PageReplacementModal.scss';\nimport FileListPanel from './FileListPanel';\nimport FileInputPanel from './FileInputPanel';\nimport FilePickerPanel from './FilePickerPanel';\nimport { Swipeable } from 'react-swipeable';\nimport { Tabs, Tab, TabPanel } from 'components/Tabs';\nimport Button from 'components/Button';\nimport FileSelectedPanel from './FileSelectedPanel';\n\nconst isValidUrlRegex = new RegExp(/^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/, 'm');\nconst options = { loadAsPDF: true, l: window.sampleL /* license key here */ };\n\nconst PageReplacementModal = ({\n  closeModal,\n  selectableFiles,\n  isOpen,\n  selectedThumbnailPageIndexes,\n  selectedTab,\n}) => {\n  const [t] = useTranslation();\n  const [source, setSource] = useState({});\n  const [selectedDoc, setSelectedDoc] = useState(null);\n  const [isFileSelected, setIsFileSelected] = useState(false);\n  const [selectedTabInternal, setSelectedTabInternal] = useState(null);\n\n  useEffect(() => {\n    if (isOpen && selectedTabInternal !== selectedTab) {\n      setSelectedTabInternal(selectedTab);\n    }\n  });\n\n  const closeThisModal = () => {\n    setSelectedDoc(null);\n    setIsFileSelected(false);\n    const el = document.getElementById('file-picker-two');\n    if (el) {\n      el.value = null;\n    }\n    closeModal();\n    setSelectedTabInternal(null);\n    setSource({})\n  };\n\n\n  const modalClass = classNames({\n    Modal: true,\n    PageReplacementModal: true,\n    open: isOpen,\n    closed: !isOpen,\n  });\n\n  const srcString = source[selectedTabInternal];\n  const handleSelection = async () => {\n    setIsFileSelected(true);\n    let document;\n    if (srcString && selectedTabInternal === 'customFileListPanelButton') {\n      if (srcString.onSelect) {\n        document = await srcString.onSelect();\n        setSelectedDoc(document);\n      }\n    } else if (srcString) {\n      document = await core.createDocument(srcString, options);\n      setSelectedDoc(document);\n    }\n  };\n\n  // File picker can merge docs, in which case the callback gets\n  // executed with a Document not a file\n  const fileProcessedHandler = async (file) => {\n    let document;\n    if (file instanceof instance.Core.Document) {\n      document = file;\n    } else {\n      document = await core.createDocument(file, options);\n    }\n    setSelectedDoc(document);\n    setIsFileSelected(true);\n  };\n\n  let isSelectBtnDisabled = srcString === undefined;\n\n  if (selectedTabInternal === 'urlInputPanelButton' && !isValidUrlRegex.test(srcString)) {\n    isSelectBtnDisabled = true;\n  };\n\n  const renderFileSelectedPanel = () => {\n    return (\n      <FileSelectedPanel\n        closeThisModal={closeThisModal}\n        pageIndicesToReplace={selectedThumbnailPageIndexes}\n        sourceDocument={selectedDoc}\n      />\n    )\n  };\n\n  const renderSelectionTabs = () => {\n    const isFilePanelEnabled = selectableFiles && selectableFiles.length > 0;\n\n    return (\n      <div className=\"container tabs\" onMouseDown={e => e.stopPropagation()}>\n        <div className=\"swipe-indicator\" />\n        <div className=\"header\">\n          {t(`component.pageReplaceModalTitle`)}\n          <Button\n            img={\"icon-close\"}\n            onClick={closeThisModal}\n            dataElement={\"pageReplacementModalClose\"}\n          />\n        </div>\n        <Tabs className=\"page-replacement-tabs\" id=\"pageReplacementModal\">\n          <div className=\"tab-list\">\n            {isFilePanelEnabled &&\n              <Tab dataElement=\"customFileListPanelButton\">\n                <button className=\"tab-options-button\">\n                  {t('component.files')}\n                </button>\n              </Tab>\n            }\n            <div className=\"tab-options-divider\" />\n            <Tab dataElement=\"urlInputPanelButton\">\n              <button className=\"tab-options-button\">\n                {t('link.url')}\n              </button>\n            </Tab>\n            <div className=\"tab-options-divider\" />\n            <Tab dataElement=\"filePickerPanelButton\">\n              <button className=\"tab-options-button\">\n                {t('option.pageReplacementModal.localFile')}\n              </button>\n            </Tab>\n          </div>\n          <div className=\"page-replacement-divider\" />\n          <TabPanel dataElement=\"customFileListPanel\">\n            <div className=\"panel-body\">\n              <FileListPanel\n                onFileSelect={(selection) => {\n                  setSource({ [selectedTabInternal]: selection });\n                }}\n                list={selectableFiles}\n                defaultValue={srcString} />\n            </div>\n          </TabPanel>\n          <TabPanel dataElement=\"urlInputPanel\">\n            <div className=\"panel-body\">\n              <FileInputPanel\n                onFileSelect={(url) => {\n                  setSource({ [selectedTabInternal]: url });\n                }}\n                defaultValue={source['urlInputPanelButton']}\n              />\n            </div>\n          </TabPanel>\n          <TabPanel dataElement=\"filePickerPanel\">\n            <div className=\"panel-body\">\n              <FilePickerPanel\n                onFileProcessed={(file) => fileProcessedHandler(file)}\n              />\n            </div>\n          </TabPanel>\n        </Tabs>\n        <div className=\"page-replacement-divider\" />\n        <div className=\"footer\">\n          <Button\n            className={classNames('modal-btn', { noFile: isSelectBtnDisabled })}\n            onClick={() => isSelectBtnDisabled ? null : handleSelection()}\n            label={t('action.select')}\n          />\n        </div>\n      </div>\n    );\n  };\n\n  return isOpen ? (\n    <Swipeable\n      onSwipedUp={closeThisModal}\n      onSwipedDown={closeThisModal}\n      preventDefaultTouchmoveEvent\n    >\n      <div\n        className={modalClass}\n        data-element=\"pageReplacementModal\"\n        onMouseDown={closeThisModal}\n        id=\"pageReplacementModal\"\n      >\n        <FocusTrap locked={isOpen}>\n          {isFileSelected ? renderFileSelectedPanel() : renderSelectionTabs()}\n        </FocusTrap>\n      </div>\n    </Swipeable>\n  ) : null;\n};\n\nexport default PageReplacementModal;","import React, { useCallback } from 'react';\nimport PageReplacementModal from './PageReplacementModal';\n\nfunction PageReplacementModalContainer(props) {\n  const { closePageReplacement, ...rest } = props;\n\n  const closeModal = useCallback(() => {\n    closePageReplacement();\n  }, [closePageReplacement]);\n\n  const newProps = {\n    ...rest,\n    closeModal,\n  };\n\n  return <PageReplacementModal {...newProps} />;\n}\n\nexport default PageReplacementModalContainer;","import React from 'react';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { useSelector, useDispatch } from 'react-redux';\nimport PageReplacementModalContainer from './PageReplacementModalContainer';\n\nfunction PageReplacementModalRedux(props) {\n  const dispatch = useDispatch();\n  const closePageReplacement = () => {\n    dispatch(actions.closeElement('pageReplacementModal'));\n  };\n\n  const selectableFiles = useSelector(state => selectors.getPageReplacementFileList(state));\n\n  const [isOpen] = useSelector(state => [\n    selectors.isElementOpen(state, 'pageReplacementModal'),\n  ]);\n\n  const selectedThumbnailPageIndexes = useSelector(state =>\n    selectors.getSelectedThumbnailPageIndexes(state)\n  );\n\n  const selectedTab = useSelector(state =>\n    selectors.getSelectedTab(state, 'pageReplacementModal')\n  );\n\n  const newProps = {\n    ...props,\n    closePageReplacement,\n    selectableFiles,\n    isOpen,\n    selectedThumbnailPageIndexes,\n    selectedTab,\n  };\n\n  return <PageReplacementModalContainer {...newProps} />;\n}\n\nexport default PageReplacementModalRedux;","import PageReplacementModalRedux from './PageReplacementModalRedux';\n\nexport default PageReplacementModalRedux;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector, useDispatch, shallowEqual } from \"react-redux\";\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './CustomModal.scss';\n\nfunction isDOMNode(element) {\n  try {\n    return (\n      element instanceof window.Node ||\n      element instanceof window.parent.Node\n    );\n  } catch (e) {\n    return false;\n  }\n}\n\nconst CustomModalItemPropTypes = {\n  dataElement: PropTypes.string.isRequired,\n  isOpen: PropTypes.bool,\n  render: PropTypes.func,\n  element: PropTypes.object,\n  close: PropTypes.func,\n  disableBackdropClick: PropTypes.bool,\n  disableEscapeKeyDown: PropTypes.bool,\n};\n\nfunction CustomModalItem(props) {\n  const { dataElement, isOpen, element, render, close, disableBackdropClick, disableEscapeKeyDown } = props;\n  const modalRef = React.useRef();\n\n  React.useLayoutEffect(function renderCustomModal() {\n    if (render && isOpen && modalRef.current) {\n      modalRef.current.focus();\n      let el = render();\n      if (typeof el === 'string') {\n        el = document.createTextNode(el);\n      }\n      if (isDOMNode(el)) {\n        while (modalRef.current.firstChild) {\n          modalRef.current.removeChild(modalRef.current.lastChild);\n        }\n        modalRef.current.appendChild(el);\n      }\n    }\n  }, [isOpen, render]);\n\n  const onClickOutsideModal = React.useCallback(function onClickOutsideModal() {\n    if (!disableBackdropClick) {\n      close(dataElement);\n    }\n  }, [close, dataElement, disableBackdropClick]);\n\n  const onKeyDownOutsideModal = React.useCallback(function onClickOutsideModal(event) {\n    if (event && event.which === 27 && !disableEscapeKeyDown) {\n      close(dataElement);\n    }\n  }, [close, dataElement, disableEscapeKeyDown]);\n\n  React.useEffect(() => {\n    if (isOpen) {\n      document.addEventListener('keydown', onKeyDownOutsideModal);\n      return function cleanUp() {\n        document.removeEventListener('keydown', onKeyDownOutsideModal);\n      };\n    }\n  }, [onKeyDownOutsideModal, isOpen]);\n\n\n  const classNames = ['Modal CustomModal'];\n  classNames.push(dataElement);\n  if (isOpen) {\n    classNames.push('open');\n  } else {\n    classNames.push('closed');\n  }\n\n  return (\n    // Disable key-events for modal element as we attach keydown for Escape to document\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n    <div\n      role=\"button\"\n      tabIndex=\"-1\"\n      className={classNames.join(' ')}\n      data-element={dataElement}\n      onClick={onClickOutsideModal}\n    >\n      {/* This element is not interactive. Reason to have onclick is to prevent propagation */}\n      {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}\n      <div ref={modalRef} className=\"CustomModal-container\" onClick={e => e.stopPropagation()}>{element}</div>\n    </div>\n  );\n}\n\nCustomModalItem.propTypes = CustomModalItemPropTypes;\n\nfunction CustomModal() {\n  const [customModals, openElements, disableElements] = useSelector(\n    state => [\n      selectors.getCustomModals(state),\n      selectors.getOpenElements(state),\n      selectors.getDisabledElements(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n  const closeCustomModalElement = React.useCallback(function closeCustomModalElementCallback(dataElement) {\n    dispatch(actions.closeElement(dataElement));\n  }, [dispatch]);\n\n  const headerRefs = React.useRef([]);\n  headerRefs.current = customModals.map((element, i) => headerRefs.current[i] ?? React.createRef());\n\n  const bodyRefs = React.useRef([]);\n  bodyRefs.current = customModals.map((element, i) => bodyRefs.current[i] ?? React.createRef());\n\n  const footerRefs = React.useRef([]);\n  footerRefs.current = customModals.map((element, i) => footerRefs.current[i] ?? React.createRef());\n\n  return customModals.map((customModalItem, index) => {\n    const { dataElement, disableBackdropClick = false, disableEscapeKeyDown = false } = customModalItem;\n    let { render } = customModalItem;\n    const isModalOpen = openElements[dataElement];\n    const disableElement = disableElements[dataElement];\n    if (disableElement && disableElement.disabled === true) {\n      // avoid rendering component if it is disabled\n      return null;\n    }\n\n    const { header, body, footer } = customModalItem;\n\n    let headerDiv = null;\n    let bodyDiv = null;\n    let footerDiv = null;\n\n    const appendToComponent = (el, ref) => {\n      if (isDOMNode(el)) {\n        if (ref.current[index].current) {\n          ref.current[index].current.appendChild(el);\n        }\n      }\n    }\n\n    const createElementsForModal = (innerHTML, divRefs, children) => {\n      if (innerHTML) {\n        appendToComponent(innerHTML, divRefs);\n      } else if (children && children.length) {\n        children.forEach((child, i) => {\n          let div;\n          if (isDOMNode(child)) {\n            child.classList.add('customEl' + i);\n            div = child;\n          } else {\n            let { title, button, className, style, onClick = null } = child;\n            div = (button) ? document.createElement('button') : document.createElement('div');\n            className = (button) ? 'Button ' + className : className;\n            className = (className) ? className.split(' ').forEach(name => div.classList.add(name)) : className;\n\n            div.classList.add('customEl' + i);\n            div.innerText = title;\n            div.onclick = onClick;\n\n            if (style) {\n              const styleString = (Object.entries(style).map(([k, v]) => Number.isInteger(v) ? `${k}:${v}px` : `${k}:${v}`).join(';'));\n              div.style = styleString\n            }\n          }\n          const currentRef = divRefs.current[index];\n          if (currentRef && currentRef.current) {\n            const el = currentRef.current.querySelector('.customEl' + i);\n            if (el) {\n              currentRef.current.replaceChild(div, el);\n            } else {\n              currentRef.current.appendChild(div);\n            }\n          }\n        });\n      }\n    }\n\n    if (header) {\n      const { className, style, children = [], innerHTML = null  } = header;\n      let { title } = header;\n      title = (title && !innerHTML) ? <p>{title}</p> : null;\n      createElementsForModal(innerHTML, headerRefs, children);\n\n      headerDiv = <div\n        ref={headerRefs.current[index]}\n        className={'CustomModal-header ' + className}\n        style={style}>{title}</div>\n    }\n\n    if (body) {\n      const { className, style, children = [], innerHTML = null } = body;\n      let { title } = body;\n      title = (title && !innerHTML) ? <p>{title}</p> : null;\n      createElementsForModal(innerHTML, bodyRefs, children);\n\n      bodyDiv = <div\n        ref={bodyRefs.current[index]}\n        className={'CustomModal-body ' + className}\n        style={style}>{title}</div>\n    }\n\n    if (footer) {\n      const { className, style, children = [], innerHTML = null } = footer;\n      let { title } = footer;\n      title = (title && !innerHTML) ? <p>{title}</p> : null;\n      createElementsForModal(innerHTML, footerRefs, children);\n\n      footerDiv = <div\n        ref={footerRefs.current[index]}\n        className={'CustomModal-footer ' + className}\n        style={style}>{title}</div>\n    }\n\n    let element = null;\n    if (header || body || footer) {\n      element = <React.Fragment>{headerDiv}{bodyDiv}{footerDiv}</React.Fragment>\n      render = null;\n    }\n\n    return (\n      <CustomModalItem\n        key={dataElement}\n        dataElement={dataElement}\n        isOpen={isModalOpen}\n        render={render}\n        element={element}\n        close={closeCustomModalElement}\n        disableBackdropClick={disableBackdropClick}\n        disableEscapeKeyDown={disableEscapeKeyDown}\n      />\n    );\n  }).filter(Boolean);\n}\n\nexport default React.memo(CustomModal);\n","import CustomModal from './CustomModal';\n\nexport default CustomModal;\n","import React, { useState } from 'react';\r\nimport classNames from 'classnames';\r\nimport { useTranslation } from 'react-i18next';\r\nimport Button from 'components/Button';\r\nimport core from 'core';\r\nimport Choice from '../Choice/Choice';\r\n\r\nimport { Swipeable } from 'react-swipeable';\r\nimport './Model3DModal.scss';\r\n\r\nconst Model3DModal = ({\r\n  fileInput,\r\n  urlInput,\r\n  error,\r\n  setError,\r\n  file,\r\n  setFile,\r\n  url,\r\n  setURL,\r\n  closeModal,\r\n  isDisabled,\r\n  isOpen,\r\n}) => {\r\n  const [t] = useTranslation();\r\n\r\n  const [typeOfInput, setTypeOfInput] = useState('url');\r\n  const [base64, setBase64] = useState('');\r\n  const urlInputRadio = React.createRef();\r\n  const fileInputRadio = React.createRef();\r\n\r\n  const draw3DAnnotation = e => {\r\n    const defaultW = 300;\r\n    const defaultH = 300;\r\n\r\n    const model3DAnnotation = new Annotations.Model3DAnnotation();\r\n    model3DAnnotation.set3DData(base64);\r\n    if (typeOfInput === 'url') {\r\n      model3DAnnotation.set3DData(url, 'url');\r\n    } else if (typeOfInput === 'file') {\r\n    }\r\n    //reset x and y position with current zoom level\r\n    const zoom = window.documentViewer.getZoomLevel();\r\n    model3DAnnotation.X = e.layerX / zoom;\r\n    model3DAnnotation.Y = e.layerY / zoom;\r\n    model3DAnnotation.Width = defaultW;\r\n    model3DAnnotation.Height = defaultH;\r\n    model3DAnnotation.Author = core.getCurrentUser();\r\n    model3DAnnotation.setPageNumber(window.documentViewer.getCurrentPage());\r\n    core.addAnnotations([model3DAnnotation]);\r\n    // const options = {\r\n    //   pageNumber: model3DAnnotation.PageNumber,\r\n    //   majorRedraw: true,\r\n    // };\r\n    core.drawAnnotationsFromList([model3DAnnotation]);\r\n    core.removeEventListener('click', draw3DAnnotation);\r\n  };\r\n\r\n  const getExtension = fileName => {\r\n    return fileName.split('.').pop();\r\n  };\r\n\r\n  const drawModel3DHandler = async e => {\r\n    e.preventDefault();\r\n\r\n    if (typeOfInput === 'url') {\r\n      // convert url to base 64\r\n      if (getExtension(url) !== 'glb') {\r\n        setError({ ...error, ...{ 'urlError': t('Model3D.formatError') } });\r\n        return;\r\n      } else {\r\n        const base64StrGenerator = async url => {\r\n          // build base64 string from the given file url\r\n          const urlToBase64Str = url => {\r\n            return new Promise(function(resolve) {\r\n              const xhr = new XMLHttpRequest();\r\n              xhr.onload = async function() {\r\n                const reader = new FileReader();\r\n                reader.onloadend = function() {\r\n                  resolve(reader.result);\r\n                };\r\n                await reader.readAsDataURL(xhr.response);\r\n              };\r\n              xhr.open('GET', url);\r\n              xhr.responseType = 'blob';\r\n              xhr.send();\r\n            });\r\n          };\r\n          return await urlToBase64Str(url);\r\n        };\r\n        setBase64(await base64StrGenerator(url));\r\n      }\r\n    } else if (typeOfInput === 'file') {\r\n      if (getExtension(file.name) !== 'glb') {\r\n        setError({ ...error, ...{ 'urlError': t('Model3D.formatError') } });\r\n        return;\r\n      }\r\n    }\r\n\r\n    closeModal();\r\n    core.setToolMode('Pan');\r\n    const viewer = documentViewer.getViewerElement();\r\n    viewer.style.cursor = 'crosshair';\r\n    core.addEventListener('click', draw3DAnnotation);\r\n  };\r\n\r\n  const modalClass = classNames({\r\n    Modal: true,\r\n    Model3DModal: true,\r\n    open: isOpen,\r\n    closed: !isOpen,\r\n  });\r\n\r\n  const handleFileChange = async event => {\r\n    setTypeOfInput('file');\r\n    const file = event.target.files[0];\r\n    setFile(file);\r\n    const fileToBase64 = file =>\r\n      new Promise(() => {\r\n        const reader = new FileReader();\r\n        reader.readAsDataURL(file);\r\n        reader.onload = () => {\r\n          return setBase64(reader.result);\r\n        };\r\n      });\r\n    await fileToBase64(file);\r\n    setError({});\r\n    setURL('');\r\n  };\r\n\r\n  const handleURLChange = url => {\r\n    setTypeOfInput('url');\r\n    setURL(url.trim());\r\n    setError('');\r\n    fileInput.current.value = null;\r\n  };\r\n\r\n  const urlInputElement = (\r\n    <input\r\n      className=\"urlInput\"\r\n      type=\"url\"\r\n      ref={urlInput}\r\n      value={url}\r\n      onChange={e => handleURLChange(e.target.value)}\r\n      onFocus={() => urlInputRadio.current.click()}\r\n      placeholder={t('Model3D.enterurl')}\r\n    />\r\n  );\r\n\r\n  const fileInputElement = (\r\n    <input\r\n      type=\"file\"\r\n      ref={fileInput}\r\n      onChange={handleFileChange}\r\n      accept=\".glb\"\r\n      onFocus={() => fileInputRadio.current.click()}\r\n    />\r\n  );\r\n\r\n  return isDisabled ? null : (\r\n    <Swipeable onSwipedUp={closeModal} onSwipedDown={closeModal} preventDefaultTouchmoveEvent>\r\n      <div className={modalClass} data-element=\"Model3DModal\" onMouseDown={closeModal}>\r\n        <div className=\"container\" onMouseDown={e => e.stopPropagation()}>\r\n          <div className=\"swipe-indicator\" />\r\n          <form onSubmit={drawModel3DHandler}>\r\n            <div className=\"col\">{t('Model3D.enterurlOrLocalFile')}</div>\r\n            <Choice\r\n              dataElement=\"3DAnnotationLink\"\r\n              id=\"3D-annotation-link\"\r\n              name=\"3DInput\"\r\n              className=\"inputWrapper\"\r\n              ref={urlInputRadio}\r\n              radio\r\n              label={urlInputElement}\r\n              center\r\n            />\r\n            {error?.urlError && <p className=\"error\">* {error.urlError}</p>}\r\n            <Choice\r\n              dataElement=\"3DAnnotationLocalFile\"\r\n              id=\"3D-annotation-file\"\r\n              name=\"3DInput\"\r\n              className=\"inputWrapper\"\r\n              ref={fileInputRadio}\r\n              radio\r\n              label={fileInputElement}\r\n              center\r\n            />\r\n            {error?.fileError && <p className=\"error\">* {error.fileError}</p>}\r\n            <Button dataElement=\"linkSubmitButton\" label={t('action.draw')} onClick={drawModel3DHandler} />\r\n          </form>\r\n        </div>\r\n      </div>\r\n    </Swipeable>\r\n  );\r\n};\r\n\r\nexport default Model3DModal;\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport Model3DModal from './Model3DModal';\r\n\r\nfunction Model3DModalContainer(props) {\r\n  const { close3DModal, ...rest } = props;\r\n\r\n  const closeModal = useCallback(() => {\r\n    close3DModal();\r\n  }, [close3DModal]);\r\n\r\n  const newProps = {\r\n    ...rest,\r\n    closeModal,\r\n  };\r\n\r\n  return <Model3DModal {...newProps} />;\r\n}\r\n\r\nexport default Model3DModalContainer;\r\n","import React, { useEffect, useState } from 'react';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Model3DModalContainer from './Model3DModalContainer';\n\nfunction Model3DModalRedux(props) {\n  const dispatch = useDispatch();\n  const [url, setURL] = useState('');\n  const [file, setFile] = useState({});\n  const [error, setError] = useState({ 'fileError': '', 'urlError': '' });\n  const fileInput = React.createRef();\n  const urlInput = React.createRef();\n\n\n\n  const [isDisabled, isOpen] = useSelector(state => [\n    selectors.isElementDisabled(state, 'Model3DModal'),\n    selectors.isElementOpen(state, 'Model3DModal'),\n  ]);\n\n  const onColorChange = selectedColor => {\n    const convertedColor = new window.Annotations.Color(\n      selectedColor.r,\n      selectedColor.g,\n      selectedColor.b,\n      selectedColor.a,\n    );\n    dispatch(actions.setCustomColor(convertedColor));\n  };\n\n  const close3DModal = () => {\n    dispatch(actions.closeElement('Model3DModal'));\n    setURL('');\n    setFile({});\n    setError({});\n    if (fileInput.current) {\n      fileInput.current.value = null;\n    }\n  };\n\n\n  // Hack to close modal if hotkey to open other tool is used.\n  useEffect(() => {\n    const onToolUpdated = () => {\n      dispatch(actions.closeElement('Model3DModal'));\n    };\n    core.addEventListener('toolUpdated', onToolUpdated);\n    return () => core.removeEventListener('toolUpdated', onToolUpdated);\n  }, []);\n\n  useEffect(() => {\n    if (isOpen) {\n      urlInput.current.focus();\n      dispatch(actions.closeElements(['printModal', 'loadingModal', 'progressModal', 'errorModal', 'OpenFileModal']));\n    }\n  }, [dispatch, isOpen]);\n\n\n  const newProps = {\n    ...props,\n    isDisabled,\n    isOpen,\n    close3DModal,\n    fileInput,\n    urlInput,\n    error,\n    setError,\n    file,\n    setFile,\n    url,\n    setURL\n  };\n  return <Model3DModalContainer {...newProps} />;\n}\n\nexport default Model3DModalRedux;\n","import Model3DModalRedux from './Model3DModalRedux';\n\nexport default Model3DModalRedux;","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { forwardRef, useMemo } from 'react';\nimport { useFocus } from '../../hooks';\nimport { Icon } from '../Icon';\nexport var Input = forwardRef(function (_a, ref) {\n    var _b = _a.message, message = _b === void 0 ? 'default' : _b, messageText = _a.messageText, fillWidth = _a.fillWidth, wrapperClassName = _a.wrapperClassName, padMessageText = _a.padMessageText, className = _a.className, onFocus = _a.onFocus, onBlur = _a.onBlur, rightElement = _a.rightElement, leftElement = _a.leftElement, _c = _a.type, type = _c === void 0 ? 'text' : _c, props = __rest(_a, [\"message\", \"messageText\", \"fillWidth\", \"wrapperClassName\", \"padMessageText\", \"className\", \"onFocus\", \"onBlur\", \"rightElement\", \"leftElement\", \"type\"]);\n    var _d = useFocus(onFocus, onBlur), focused = _d.focused, handleOnFocus = _d.handleOnFocus, handleOnBlur = _d.handleOnBlur;\n    var rightIcon = useMemo(function () {\n        if (rightElement)\n            return rightElement;\n        var icon = undefined;\n        switch (message) {\n            case 'warning':\n                icon = 'Warning';\n                break;\n            case 'error':\n                icon = 'Error';\n                break;\n        }\n        return icon ? React.createElement(Icon, { className: \"ui__input__icon\", icon: icon }) : undefined;\n    }, [message, rightElement]);\n    var wrapperClass = classnames('ui__base ui__input__wrapper', {\n        'ui__input__wrapper--fill': fillWidth,\n        'ui__input__wrapper--pad': padMessageText && !messageText,\n    }, wrapperClassName);\n    var mainClass = classnames('ui__input', \"ui__input--message-\" + message, { 'ui__input--focused': focused });\n    var inputClass = classnames('ui__input__input', { 'ui__input__input--disabled': props.disabled }, className);\n    return (React.createElement(\"div\", { className: wrapperClass },\n        React.createElement(\"div\", { className: mainClass },\n            leftElement,\n            React.createElement(\"input\", __assign({}, props, { type: type, onFocus: handleOnFocus, onBlur: handleOnBlur, className: inputClass, ref: ref })),\n            rightIcon),\n        messageText ? React.createElement(\"div\", { className: \"ui__input__messageText\" }, messageText) : undefined));\n});\n","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      var _tag = createStyleElement(this);\n\n      var before;\n\n      if (this.tags.length === 0) {\n        before = this.before;\n      } else {\n        before = this.tags[this.tags.length - 1].nextSibling;\n      }\n\n      this.container.insertBefore(_tag, before);\n      this.tags.push(_tag);\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is a really hot path\n        // we check the second character first because having \"i\"\n        // as the second character will happen less often than\n        // having \"@\" as the first character\n        var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n\n        sheet.insertRule(rule, // we need to insert @import rules before anything else\n        // otherwise there will be an error\n        // technically this means that the @import rules will\n        // _usually_(not always since there could be multiple style tags)\n        // be the first ones in prod and generally later in dev\n        // this shouldn't really matter in the real world though\n        // @import is generally only used for font faces from google fonts and etc.\n        // so while this could be technically correct then it would be slower and larger\n        // for a tiny bit of correctness that won't matter in the real world\n        isImportRule ? 0 : sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n  if (block) {\n    Sheet.current.insert(block + '}');\n  }\n}\n\nvar Sheet = {\n  current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n  switch (context) {\n    // property\n    case 1:\n      {\n        switch (content.charCodeAt(0)) {\n          case 64:\n            {\n              // @import\n              Sheet.current.insert(content + ';');\n              return '';\n            }\n          // charcode for l\n\n          case 108:\n            {\n              // charcode for b\n              // this ignores label\n              if (content.charCodeAt(2) === 98) {\n                return '';\n              }\n            }\n        }\n\n        break;\n      }\n    // selector\n\n    case 2:\n      {\n        if (ns === 0) return content + delimiter;\n        break;\n      }\n    // at-rule\n\n    case 3:\n      {\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            {\n              Sheet.current.insert(selectors[0] + content);\n              return '';\n            }\n\n          default:\n            {\n              return content + (at === 0 ? delimiter : '');\n            }\n        }\n      }\n\n    case -2:\n      {\n        content.split(needle).forEach(toSheet);\n      }\n  }\n};\n\nvar createCache = function createCache(options) {\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var stylis = new Stylis(stylisOptions);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n\n  {\n    container = options.container || document.head;\n    var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n    Array.prototype.forEach.call(nodes, function (node) {\n      var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n      attrib.split(' ').forEach(function (id) {\n        inserted[id] = true;\n      });\n\n      if (node.parentNode !== container) {\n        container.appendChild(node);\n      }\n    });\n  }\n\n  var _insert;\n\n  {\n    stylis.use(options.stylisPlugins)(ruleSheet);\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      var name = serialized.name;\n      Sheet.current = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        var map = serialized.map;\n        Sheet.current = {\n          insert: function insert(rule) {\n            sheet.insert(rule + map);\n          }\n        };\n      }\n\n      stylis(selector, serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[name] = true;\n      }\n    };\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n    var commentStart = /\\/\\*/g;\n    var commentEnd = /\\*\\//g;\n    stylis.use(function (context, content) {\n      switch (context) {\n        case -1:\n          {\n            while (commentStart.test(content)) {\n              commentEnd.lastIndex = commentStart.lastIndex;\n\n              if (commentEnd.test(content)) {\n                commentStart.lastIndex = commentEnd.lastIndex;\n                continue;\n              }\n\n              throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n            }\n\n            commentStart.lastIndex = 0;\n            break;\n          }\n      }\n    });\n    stylis.use(function (context, content, selectors) {\n      switch (context) {\n        case -1:\n          {\n            var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n            var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n            if (unsafePseudoClasses && cache.compat !== true) {\n              unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n                var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n                var ignore = ignoreRegExp.test(content);\n\n                if (unsafePseudoClass && !ignore) {\n                  console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n                }\n              });\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className]);\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n\n  if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n    console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n    shouldWarnAboutInterpolatingClassNameFromCss = false;\n  }\n\n  return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i], false);\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings, false);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /*#__PURE__*/createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  var render = function render(props, ref) {\n    return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n      return func(props, cache, ref);\n    });\n  }; // $FlowFixMe\n\n\n  return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n  if (process.env.NODE_ENV !== 'production') {\n    var error = new Error();\n\n    if (error.stack) {\n      // chrome\n      var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  return newProps;\n};\n\nvar Noop = function Noop() {\n  return null;\n};\n\nvar render = function render(cache, props, theme, ref) {\n  var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var type = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles);\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  var rules = insertStyles(cache, serialized, typeof type === 'string');\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  var ele = /*#__PURE__*/createElement(type, newProps);\n  var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n  return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n}; // eslint-disable-next-line no-undef\n\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  if (typeof props.css === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      return render(cache, props, theme, ref);\n    });\n  }\n\n  return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-04d85134.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-04d85134.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n\n  if (typeof styles === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      var serialized = serializeStyles([styles(theme)]);\n      return /*#__PURE__*/createElement(InnerGlobal, {\n        serialized: serialized,\n        cache: cache\n      });\n    });\n  }\n\n  var serialized = serializeStyles([styles]);\n  return /*#__PURE__*/createElement(InnerGlobal, {\n    serialized: serialized,\n    cache: cache\n  });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(InnerGlobal, _React$Component);\n\n  function InnerGlobal(props, context, updater) {\n    return _React$Component.call(this, props, context, updater) || this;\n  }\n\n  var _proto = InnerGlobal.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.sheet = new StyleSheet({\n      key: this.props.cache.key + \"-global\",\n      nonce: this.props.cache.sheet.nonce,\n      container: this.props.cache.sheet.container\n    }); // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n    if (node !== null) {\n      this.sheet.tags.push(node);\n    }\n\n    if (this.props.cache.sheet.tags.length) {\n      this.sheet.before = this.props.cache.sheet.tags[0];\n    }\n\n    this.insertStyles();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.serialized.name !== this.props.serialized.name) {\n      this.insertStyles();\n    }\n  };\n\n  _proto.insertStyles = function insertStyles$1() {\n    if (this.props.serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(this.props.cache, this.props.serialized.next, true);\n    }\n\n    if (this.sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n      this.sheet.before = element;\n      this.sheet.flush();\n    }\n\n    this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.sheet.flush();\n  };\n\n  _proto.render = function render() {\n\n    return null;\n  };\n\n  return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Noop = function Noop() {\n  return null;\n};\n\nvar ClassNames = withEmotionCache(function (props, context) {\n  return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n    var hasRendered = false;\n\n    var css = function css() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('css can only be used during render');\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var serialized = serializeStyles(args, context.registered);\n\n      {\n        insertStyles(context, serialized, false);\n      }\n\n      return context.key + \"-\" + serialized.name;\n    };\n\n    var cx = function cx() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('cx can only be used during render');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return merge(context.registered, css, classnames(args));\n    };\n\n    var content = {\n      css: css,\n      cx: cx,\n      theme: theme\n    };\n    var ele = props.children(content);\n    hasRendered = true;\n    var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n    return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n  });\n});\n\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\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}","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport { Component, createContext } from 'react';\nimport { jsx, keyframes, ClassNames } from '@emotion/core';\nimport { createPortal } from 'react-dom';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _css from '@emotion/css';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport AutosizeInput from 'react-input-autosize';\n\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n   @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n   @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n  if (!name) {\n    return prefix;\n  } else if (name[0] === '-') {\n    return prefix + name;\n  } else {\n    return prefix + '__' + name;\n  }\n}\n\nfunction classNames(prefix, state, className) {\n  var arr = [className];\n\n  if (state && prefix) {\n    for (var key in state) {\n      if (state.hasOwnProperty(key) && state[key]) {\n        arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n      }\n    }\n  }\n\n  return arr.filter(function (i) {\n    return i;\n  }).map(function (i) {\n    return String(i).trim();\n  }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n  if (Array.isArray(value)) return value.filter(Boolean);\n  if (_typeof(value) === 'object' && value !== null) return [value];\n  return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n  if (onInputChange) {\n    var newValue = onInputChange(inputValue, actionMeta);\n    if (typeof newValue === 'string') return newValue;\n  }\n\n  return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n  return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n  if (isDocumentElement(el)) {\n    return window.pageYOffset;\n  }\n\n  return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n  // with a scroll distance, we perform scroll on the element\n  if (isDocumentElement(el)) {\n    window.scrollTo(0, top);\n    return;\n  }\n\n  el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n  var style = getComputedStyle(element);\n  var excludeStaticParent = style.position === 'absolute';\n  var overflowRx = /(auto|scroll)/;\n  var docEl = document.documentElement; // suck it, flow...\n\n  if (style.position === 'fixed') return docEl;\n\n  for (var parent = element; parent = parent.parentElement;) {\n    style = getComputedStyle(parent);\n\n    if (excludeStaticParent && style.position === 'static') {\n      continue;\n    }\n\n    if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n      return parent;\n    }\n  }\n\n  return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n  @param t: time (elapsed)\n  @param b: initial value\n  @param c: amount of change\n  @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n  return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n  var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n  var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n  var start = getScrollTop(element);\n  var change = to - start;\n  var increment = 10;\n  var currentTime = 0;\n\n  function animateScroll() {\n    currentTime += increment;\n    var val = easeOutCubic(currentTime, start, change, duration);\n    scrollTo(element, val);\n\n    if (currentTime < duration) {\n      window.requestAnimationFrame(animateScroll);\n    } else {\n      callback(element);\n    }\n  }\n\n  animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n  var menuRect = menuEl.getBoundingClientRect();\n  var focusedRect = focusedEl.getBoundingClientRect();\n  var overScroll = focusedEl.offsetHeight / 3;\n\n  if (focusedRect.bottom + overScroll > menuRect.bottom) {\n    scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n  } else if (focusedRect.top - overScroll < menuRect.top) {\n    scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n  }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width\n  };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n  try {\n    document.createEvent('TouchEvent');\n    return true;\n  } catch (e) {\n    return false;\n  }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n  try {\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nfunction getMenuPlacement(_ref) {\n  var maxHeight = _ref.maxHeight,\n      menuEl = _ref.menuEl,\n      minHeight = _ref.minHeight,\n      placement = _ref.placement,\n      shouldScroll = _ref.shouldScroll,\n      isFixedPosition = _ref.isFixedPosition,\n      theme = _ref.theme;\n  var spacing = theme.spacing;\n  var scrollParent = getScrollParent(menuEl);\n  var defaultState = {\n    placement: 'bottom',\n    maxHeight: maxHeight\n  }; // something went wrong, return default state\n\n  if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n  // the menu is rendered\n\n  var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n      scrollHeight = _scrollParent$getBoun.height;\n\n  var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n      menuBottom = _menuEl$getBoundingCl.bottom,\n      menuHeight = _menuEl$getBoundingCl.height,\n      menuTop = _menuEl$getBoundingCl.top;\n\n  var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n      containerTop = _menuEl$offsetParent$.top;\n\n  var viewHeight = window.innerHeight;\n  var scrollTop = getScrollTop(scrollParent);\n  var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n  var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n  var viewSpaceAbove = containerTop - marginTop;\n  var viewSpaceBelow = viewHeight - menuTop;\n  var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n  var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n  var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n  var scrollUp = scrollTop + menuTop - marginTop;\n  var scrollDuration = 160;\n\n  switch (placement) {\n    case 'auto':\n    case 'bottom':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceBelow >= menuHeight) {\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        } // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n\n        var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n        return {\n          placement: 'bottom',\n          maxHeight: constrainedHeight\n        };\n      } // 4. Forked beviour when there isn't enough space below\n      // AUTO: flip the menu, render above\n\n\n      if (placement === 'auto' || isFixedPosition) {\n        // may need to be constrained after flipping\n        var _constrainedHeight = maxHeight;\n        var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n        if (spaceAbove >= minHeight) {\n          _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight\n        };\n      } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n      if (placement === 'bottom') {\n        scrollTo(scrollParent, scrollDown);\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      }\n\n      break;\n\n    case 'top':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceAbove >= menuHeight) {\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n        var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n        }\n\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight2\n        };\n      } // 4. not enough space, the browser WILL NOT increase scrollable area when\n      // absolutely positioned element rendered above the viewport (only below).\n      // Flip the menu, render below\n\n\n      return {\n        placement: 'bottom',\n        maxHeight: maxHeight\n      };\n\n    default:\n      throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n  } // fulfil contract with flow: implicit return value of undefined\n\n\n  return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n  var placementToCSSProp = {\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n  return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n  var _ref3;\n\n  var placement = _ref2.placement,\n      _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      spacing = _ref2$theme.spacing,\n      colors = _ref2$theme.colors;\n  return _ref3 = {\n    label: 'menu'\n  }, _defineProperty(_ref3, alignToControl(placement), '100%'), _defineProperty(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty(_ref3, \"borderRadius\", borderRadius), _defineProperty(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty(_ref3, \"position\", 'absolute'), _defineProperty(_ref3, \"width\", '100%'), _defineProperty(_ref3, \"zIndex\", 1), _ref3;\n};\nvar PortalPlacementContext = /*#__PURE__*/createContext({\n  getPortalPlacement: null\n}); // NOTE: internal only\n\nvar MenuPlacer = /*#__PURE__*/function (_Component) {\n  _inherits(MenuPlacer, _Component);\n\n  var _super = _createSuper(MenuPlacer);\n\n  function MenuPlacer() {\n    var _this;\n\n    _classCallCheck(this, MenuPlacer);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      maxHeight: _this.props.maxMenuHeight,\n      placement: null\n    };\n\n    _this.getPlacement = function (ref) {\n      var _this$props = _this.props,\n          minMenuHeight = _this$props.minMenuHeight,\n          maxMenuHeight = _this$props.maxMenuHeight,\n          menuPlacement = _this$props.menuPlacement,\n          menuPosition = _this$props.menuPosition,\n          menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n          theme = _this$props.theme;\n      if (!ref) return; // DO NOT scroll if position is fixed\n\n      var isFixedPosition = menuPosition === 'fixed';\n      var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n      var state = getMenuPlacement({\n        maxHeight: maxMenuHeight,\n        menuEl: ref,\n        minHeight: minMenuHeight,\n        placement: menuPlacement,\n        shouldScroll: shouldScroll,\n        isFixedPosition: isFixedPosition,\n        theme: theme\n      });\n      var getPortalPlacement = _this.context.getPortalPlacement;\n      if (getPortalPlacement) getPortalPlacement(state);\n\n      _this.setState(state);\n    };\n\n    _this.getUpdatedProps = function () {\n      var menuPlacement = _this.props.menuPlacement;\n      var placement = _this.state.placement || coercePlacement(menuPlacement);\n      return _objectSpread(_objectSpread({}, _this.props), {}, {\n        placement: placement,\n        maxHeight: _this.state.maxHeight\n      });\n    };\n\n    return _this;\n  }\n\n  _createClass(MenuPlacer, [{\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return children({\n        ref: this.getPlacement,\n        placerProps: this.getUpdatedProps()\n      });\n    }\n  }]);\n\n  return MenuPlacer;\n}(Component);\nMenuPlacer.contextType = PortalPlacementContext;\n\nvar Menu = function Menu(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('menu', props),\n    className: cx({\n      menu: true\n    }, className)\n  }, innerProps, {\n    ref: innerRef\n  }), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n  var maxHeight = _ref4.maxHeight,\n      baseUnit = _ref4.theme.spacing.baseUnit;\n  return {\n    maxHeight: maxHeight,\n    overflowY: 'auto',\n    paddingBottom: baseUnit,\n    paddingTop: baseUnit,\n    position: 'relative',\n    // required for offset[Height, Top] > keyboard scroll\n    WebkitOverflowScrolling: 'touch'\n  };\n};\nvar MenuList = function MenuList(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isMulti = props.isMulti,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('menuList', props),\n    className: cx({\n      'menu-list': true,\n      'menu-list--is-multi': isMulti\n    }, className),\n    ref: innerRef\n  }, innerProps), children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n  var _ref5$theme = _ref5.theme,\n      baseUnit = _ref5$theme.spacing.baseUnit,\n      colors = _ref5$theme.colors;\n  return {\n    color: colors.neutral40,\n    padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n    textAlign: 'center'\n  };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('noOptionsMessage', props),\n    className: cx({\n      'menu-notice': true,\n      'menu-notice--no-options': true\n    }, className)\n  }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n  children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('loadingMessage', props),\n    className: cx({\n      'menu-notice': true,\n      'menu-notice--loading': true\n    }, className)\n  }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n  children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n  var rect = _ref6.rect,\n      offset = _ref6.offset,\n      position = _ref6.position;\n  return {\n    left: rect.left,\n    position: position,\n    top: offset,\n    width: rect.width,\n    zIndex: 1\n  };\n};\nvar MenuPortal = /*#__PURE__*/function (_Component2) {\n  _inherits(MenuPortal, _Component2);\n\n  var _super2 = _createSuper(MenuPortal);\n\n  function MenuPortal() {\n    var _this2;\n\n    _classCallCheck(this, MenuPortal);\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    _this2 = _super2.call.apply(_super2, [this].concat(args));\n    _this2.state = {\n      placement: null\n    };\n\n    _this2.getPortalPlacement = function (_ref7) {\n      var placement = _ref7.placement;\n      var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n      if (placement !== initialPlacement) {\n        _this2.setState({\n          placement: placement\n        });\n      }\n    };\n\n    return _this2;\n  }\n\n  _createClass(MenuPortal, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          appendTo = _this$props2.appendTo,\n          children = _this$props2.children,\n          controlElement = _this$props2.controlElement,\n          menuPlacement = _this$props2.menuPlacement,\n          position = _this$props2.menuPosition,\n          getStyles = _this$props2.getStyles;\n      var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n      if (!appendTo && !isFixed || !controlElement) {\n        return null;\n      }\n\n      var placement = this.state.placement || coercePlacement(menuPlacement);\n      var rect = getBoundingClientObj(controlElement);\n      var scrollDistance = isFixed ? 0 : window.pageYOffset;\n      var offset = rect[placement] + scrollDistance;\n      var state = {\n        offset: offset,\n        position: position,\n        rect: rect\n      }; // same wrapper element whether fixed or portalled\n\n      var menuWrapper = jsx(\"div\", {\n        css: getStyles('menuPortal', state)\n      }, children);\n      return jsx(PortalPlacementContext.Provider, {\n        value: {\n          getPortalPlacement: this.getPortalPlacement\n        }\n      }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n    }\n  }]);\n\n  return MenuPortal;\n}(Component);\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n  // fast-deep-equal index.js 2.0.1\n  if (a === b) return true;\n\n  if (a && b && _typeof(a) == 'object' && _typeof(b) == 'object') {\n    var arrA = isArray(a),\n        arrB = isArray(b),\n        i,\n        length,\n        key;\n\n    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n    var keys = keyList(a);\n    length = keys.length;\n\n    if (length !== keyList(b).length) {\n      return false;\n    }\n\n    for (i = length; i-- !== 0;) {\n      if (!hasProp.call(b, keys[i])) return false;\n    } // end fast-deep-equal\n    // Custom handling for React\n\n\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    } // fast-deep-equal index.js 2.0.1\n\n\n    return true;\n  }\n\n  return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nfunction exportedEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (error.message && error.message.match(/stack|recursion/i)) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    } // some other error. we should definitely know about these\n\n\n    throw error;\n  }\n}\n\nvar containerCSS = function containerCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isRtl = _ref.isRtl;\n  return {\n    label: 'container',\n    direction: isRtl ? 'rtl' : null,\n    pointerEvents: isDisabled ? 'none' : null,\n    // cancel mouse events when disabled\n    position: 'relative'\n  };\n};\nvar SelectContainer = function SelectContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      isRtl = props.isRtl;\n  return jsx(\"div\", _extends({\n    css: getStyles('container', props),\n    className: cx({\n      '--is-disabled': isDisabled,\n      '--is-rtl': isRtl\n    }, className)\n  }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    alignItems: 'center',\n    display: 'flex',\n    flex: 1,\n    flexWrap: 'wrap',\n    padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n    WebkitOverflowScrolling: 'touch',\n    position: 'relative',\n    overflow: 'hidden'\n  };\n};\nvar ValueContainer = function ValueContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      isMulti = props.isMulti,\n      getStyles = props.getStyles,\n      hasValue = props.hasValue;\n  return jsx(\"div\", {\n    css: getStyles('valueContainer', props),\n    className: cx({\n      'value-container': true,\n      'value-container--is-multi': isMulti,\n      'value-container--has-value': hasValue\n    }, className)\n  }, children);\n}; // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n  return {\n    alignItems: 'center',\n    alignSelf: 'stretch',\n    display: 'flex',\n    flexShrink: 0\n  };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles;\n  return jsx(\"div\", {\n    css: getStyles('indicatorsContainer', props),\n    className: cx({\n      indicators: true\n    }, className)\n  }, children);\n};\n\nfunction _templateObject() {\n  var data = _taggedTemplateLiteral([\"\\n  0%, 80%, 100% { opacity: 0; }\\n  40% { opacity: 1; }\\n\"]);\n\n  _templateObject = function _templateObject() {\n    return data;\n  };\n\n  return data;\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"19bqh2r\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\"\n} : {\n  name: \"19bqh2r\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n  var size = _ref.size,\n      props = _objectWithoutProperties(_ref, [\"size\"]);\n\n  return jsx(\"svg\", _extends({\n    height: size,\n    width: size,\n    viewBox: \"0 0 20 20\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    css: _ref2\n  }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n  }));\n};\nvar DownChevron = function DownChevron(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n  }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3) {\n  var isFocused = _ref3.isFocused,\n      _ref3$theme = _ref3.theme,\n      baseUnit = _ref3$theme.spacing.baseUnit,\n      colors = _ref3$theme.colors;\n  return {\n    label: 'indicatorContainer',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    ':hover': {\n      color: isFocused ? colors.neutral80 : colors.neutral40\n    }\n  };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, innerProps, {\n    css: getStyles('dropdownIndicator', props),\n    className: cx({\n      indicator: true,\n      'dropdown-indicator': true\n    }, className)\n  }), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, innerProps, {\n    css: getStyles('clearIndicator', props),\n    className: cx({\n      indicator: true,\n      'clear-indicator': true\n    }, className)\n  }), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n  var isDisabled = _ref4.isDisabled,\n      _ref4$theme = _ref4.theme,\n      baseUnit = _ref4$theme.spacing.baseUnit,\n      colors = _ref4$theme.colors;\n  return {\n    label: 'indicatorSeparator',\n    alignSelf: 'stretch',\n    backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n    marginBottom: baseUnit * 2,\n    marginTop: baseUnit * 2,\n    width: 1\n  };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"span\", _extends({}, innerProps, {\n    css: getStyles('indicatorSeparator', props),\n    className: cx({\n      'indicator-separator': true\n    }, className)\n  }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject());\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n  var isFocused = _ref5.isFocused,\n      size = _ref5.size,\n      _ref5$theme = _ref5.theme,\n      colors = _ref5$theme.colors,\n      baseUnit = _ref5$theme.spacing.baseUnit;\n  return {\n    label: 'loadingIndicator',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    alignSelf: 'center',\n    fontSize: size,\n    lineHeight: 1,\n    marginRight: size,\n    textAlign: 'center',\n    verticalAlign: 'middle'\n  };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n  var delay = _ref6.delay,\n      offset = _ref6.offset;\n  return jsx(\"span\", {\n    css: /*#__PURE__*/_css({\n      animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n      backgroundColor: 'currentColor',\n      borderRadius: '1em',\n      display: 'inline-block',\n      marginLeft: offset ? '1em' : null,\n      height: '1em',\n      verticalAlign: 'top',\n      width: '1em'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\")\n  });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isRtl = props.isRtl;\n  return jsx(\"div\", _extends({}, innerProps, {\n    css: getStyles('loadingIndicator', props),\n    className: cx({\n      indicator: true,\n      'loading-indicator': true\n    }, className)\n  }), jsx(LoadingDot, {\n    delay: 0,\n    offset: isRtl\n  }), jsx(LoadingDot, {\n    delay: 160,\n    offset: true\n  }), jsx(LoadingDot, {\n    delay: 320,\n    offset: !isRtl\n  }));\n};\nLoadingIndicator.defaultProps = {\n  size: 4\n};\n\nvar css = function css(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      _ref$theme = _ref.theme,\n      colors = _ref$theme.colors,\n      borderRadius = _ref$theme.borderRadius,\n      spacing = _ref$theme.spacing;\n  return {\n    label: 'control',\n    alignItems: 'center',\n    backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n    borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n    borderRadius: borderRadius,\n    borderStyle: 'solid',\n    borderWidth: 1,\n    boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n    cursor: 'default',\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'space-between',\n    minHeight: spacing.controlHeight,\n    outline: '0 !important',\n    position: 'relative',\n    transition: 'all 100ms',\n    '&:hover': {\n      borderColor: isFocused ? colors.primary : colors.neutral30\n    }\n  };\n};\n\nvar Control = function Control(props) {\n  var children = props.children,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      className = props.className,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps,\n      menuIsOpen = props.menuIsOpen;\n  return jsx(\"div\", _extends({\n    ref: innerRef,\n    css: getStyles('control', props),\n    className: cx({\n      control: true,\n      'control--is-disabled': isDisabled,\n      'control--is-focused': isFocused,\n      'control--menu-is-open': menuIsOpen\n    }, className)\n  }, innerProps), children);\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar groupCSS = function groupCSS(_ref) {\n  var spacing = _ref.theme.spacing;\n  return {\n    paddingBottom: spacing.baseUnit * 2,\n    paddingTop: spacing.baseUnit * 2\n  };\n};\n\nvar Group = function Group(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      Heading = props.Heading,\n      headingProps = props.headingProps,\n      label = props.label,\n      theme = props.theme,\n      selectProps = props.selectProps;\n  return jsx(\"div\", {\n    css: getStyles('group', props),\n    className: cx({\n      group: true\n    }, className)\n  }, jsx(Heading, _extends({}, headingProps, {\n    selectProps: selectProps,\n    theme: theme,\n    getStyles: getStyles,\n    cx: cx\n  }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    label: 'group',\n    color: '#999',\n    cursor: 'default',\n    display: 'block',\n    fontSize: '75%',\n    fontWeight: '500',\n    marginBottom: '0.25em',\n    paddingLeft: spacing.baseUnit * 3,\n    paddingRight: spacing.baseUnit * 3,\n    textTransform: 'uppercase'\n  };\n};\nvar GroupHeading = function GroupHeading(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      theme = props.theme,\n      selectProps = props.selectProps,\n      cleanProps = _objectWithoutProperties(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n  return jsx(\"div\", _extends({\n    css: getStyles('groupHeading', _objectSpread$1({\n      theme: theme\n    }, cleanProps)),\n    className: cx({\n      'group-heading': true\n    }, className)\n  }, cleanProps));\n};\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar inputCSS = function inputCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    margin: spacing.baseUnit / 2,\n    paddingBottom: spacing.baseUnit / 2,\n    paddingTop: spacing.baseUnit / 2,\n    visibility: isDisabled ? 'hidden' : 'visible',\n    color: colors.neutral80\n  };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n  return {\n    label: 'input',\n    background: 0,\n    border: 0,\n    fontSize: 'inherit',\n    opacity: isHidden ? 0 : 1,\n    outline: 0,\n    padding: 0,\n    color: 'inherit'\n  };\n};\n\nvar Input = function Input(_ref2) {\n  var className = _ref2.className,\n      cx = _ref2.cx,\n      getStyles = _ref2.getStyles,\n      innerRef = _ref2.innerRef,\n      isHidden = _ref2.isHidden,\n      isDisabled = _ref2.isDisabled,\n      theme = _ref2.theme,\n      selectProps = _ref2.selectProps,\n      props = _objectWithoutProperties(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n  return jsx(\"div\", {\n    css: getStyles('input', _objectSpread$2({\n      theme: theme\n    }, props))\n  }, jsx(AutosizeInput, _extends({\n    className: cx({\n      input: true\n    }, className),\n    inputRef: innerRef,\n    inputStyle: inputStyle(isHidden),\n    disabled: isDisabled\n  }, props)));\n};\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar multiValueCSS = function multiValueCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      borderRadius = _ref$theme.borderRadius,\n      colors = _ref$theme.colors;\n  return {\n    label: 'multiValue',\n    backgroundColor: colors.neutral10,\n    borderRadius: borderRadius / 2,\n    display: 'flex',\n    margin: spacing.baseUnit / 2,\n    minWidth: 0 // resolves flex/text-overflow bug\n\n  };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n  var _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      colors = _ref2$theme.colors,\n      cropWithEllipsis = _ref2.cropWithEllipsis;\n  return {\n    borderRadius: borderRadius / 2,\n    color: colors.neutral80,\n    fontSize: '85%',\n    overflow: 'hidden',\n    padding: 3,\n    paddingLeft: 6,\n    textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n    whiteSpace: 'nowrap'\n  };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n  var _ref3$theme = _ref3.theme,\n      spacing = _ref3$theme.spacing,\n      borderRadius = _ref3$theme.borderRadius,\n      colors = _ref3$theme.colors,\n      isFocused = _ref3.isFocused;\n  return {\n    alignItems: 'center',\n    borderRadius: borderRadius / 2,\n    backgroundColor: isFocused && colors.dangerLight,\n    display: 'flex',\n    paddingLeft: spacing.baseUnit,\n    paddingRight: spacing.baseUnit,\n    ':hover': {\n      backgroundColor: colors.dangerLight,\n      color: colors.danger\n    }\n  };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n  var children = _ref4.children,\n      innerProps = _ref4.innerProps;\n  return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n  var children = _ref5.children,\n      innerProps = _ref5.innerProps;\n  return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n    size: 14\n  }));\n}\n\nvar MultiValue = function MultiValue(props) {\n  var children = props.children,\n      className = props.className,\n      components = props.components,\n      cx = props.cx,\n      data = props.data,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      removeProps = props.removeProps,\n      selectProps = props.selectProps;\n  var Container = components.Container,\n      Label = components.Label,\n      Remove = components.Remove;\n  return jsx(ClassNames, null, function (_ref6) {\n    var css = _ref6.css,\n        emotionCx = _ref6.cx;\n    return jsx(Container, {\n      data: data,\n      innerProps: _objectSpread$3(_objectSpread$3({}, innerProps), {}, {\n        className: emotionCx(css(getStyles('multiValue', props)), cx({\n          'multi-value': true,\n          'multi-value--is-disabled': isDisabled\n        }, className))\n      }),\n      selectProps: selectProps\n    }, jsx(Label, {\n      data: data,\n      innerProps: {\n        className: emotionCx(css(getStyles('multiValueLabel', props)), cx({\n          'multi-value__label': true\n        }, className))\n      },\n      selectProps: selectProps\n    }, children), jsx(Remove, {\n      data: data,\n      innerProps: _objectSpread$3({\n        className: emotionCx(css(getStyles('multiValueRemove', props)), cx({\n          'multi-value__remove': true\n        }, className))\n      }, removeProps),\n      selectProps: selectProps\n    }));\n  });\n};\n\nMultiValue.defaultProps = {\n  cropWithEllipsis: true\n};\n\nvar optionCSS = function optionCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      isSelected = _ref.isSelected,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'option',\n    backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n    color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n    cursor: 'default',\n    display: 'block',\n    fontSize: 'inherit',\n    padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n    width: '100%',\n    userSelect: 'none',\n    WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n    // provide some affordance on touch devices\n    ':active': {\n      backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n    }\n  };\n};\n\nvar Option = function Option(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      isSelected = props.isSelected,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('option', props),\n    className: cx({\n      option: true,\n      'option--is-disabled': isDisabled,\n      'option--is-focused': isFocused,\n      'option--is-selected': isSelected\n    }, className),\n    ref: innerRef\n  }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'placeholder',\n    color: colors.neutral50,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    position: 'absolute',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar Placeholder = function Placeholder(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('placeholder', props),\n    className: cx({\n      placeholder: true\n    }, className)\n  }, innerProps), children);\n};\n\nvar css$1 = function css(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'singleValue',\n    color: isDisabled ? colors.neutral40 : colors.neutral80,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n    overflow: 'hidden',\n    position: 'absolute',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar SingleValue = function SingleValue(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('singleValue', props),\n    className: cx({\n      'single-value': true,\n      'single-value--is-disabled': isDisabled\n    }, className)\n  }, innerProps), children);\n};\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar components = {\n  ClearIndicator: ClearIndicator,\n  Control: Control,\n  DropdownIndicator: DropdownIndicator,\n  DownChevron: DownChevron,\n  CrossIcon: CrossIcon,\n  Group: Group,\n  GroupHeading: GroupHeading,\n  IndicatorsContainer: IndicatorsContainer,\n  IndicatorSeparator: IndicatorSeparator,\n  Input: Input,\n  LoadingIndicator: LoadingIndicator,\n  Menu: Menu,\n  MenuList: MenuList,\n  MenuPortal: MenuPortal,\n  LoadingMessage: LoadingMessage,\n  NoOptionsMessage: NoOptionsMessage,\n  MultiValue: MultiValue,\n  MultiValueContainer: MultiValueContainer,\n  MultiValueLabel: MultiValueLabel,\n  MultiValueRemove: MultiValueRemove,\n  Option: Option,\n  Placeholder: Placeholder,\n  SelectContainer: SelectContainer,\n  SingleValue: SingleValue,\n  ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n  return _objectSpread$4(_objectSpread$4({}, components), props.components);\n};\n\nexport { isDocumentElement as A, exportedEqual as B, cleanValue as C, scrollIntoView as D, noop as E, components as F, handleInputChange as G, MenuPlacer as M, containerCSS as a, css as b, clearIndicatorCSS as c, dropdownIndicatorCSS as d, groupHeadingCSS as e, indicatorSeparatorCSS as f, groupCSS as g, inputCSS as h, indicatorsContainerCSS as i, loadingMessageCSS as j, menuListCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuPortalCSS as n, multiValueCSS as o, multiValueLabelCSS as p, multiValueRemoveCSS as q, noOptionsMessageCSS as r, optionCSS as s, placeholderCSS as t, css$1 as u, valueContainerCSS as v, isTouchCapable as w, isMobileDevice as x, defaultComponents as y, classNames as z };\n","export default function _taggedTemplateLiteral(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport React, { Component, PureComponent } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { jsx } from '@emotion/core';\nimport { findDOMNode } from 'react-dom';\nimport { c as clearIndicatorCSS, a as containerCSS, b as css, d as dropdownIndicatorCSS, g as groupCSS, e as groupHeadingCSS, i as indicatorsContainerCSS, f as indicatorSeparatorCSS, h as inputCSS, l as loadingIndicatorCSS, j as loadingMessageCSS, m as menuCSS, k as menuListCSS, n as menuPortalCSS, o as multiValueCSS, p as multiValueLabelCSS, q as multiValueRemoveCSS, r as noOptionsMessageCSS, s as optionCSS, t as placeholderCSS, u as css$1, v as valueContainerCSS, w as isTouchCapable, x as isMobileDevice, y as defaultComponents, z as classNames, A as isDocumentElement, B as exportedEqual, C as cleanValue, D as scrollIntoView, E as noop, M as MenuPlacer } from './index-75b02bac.browser.esm.js';\nimport _css from '@emotion/css';\n\nvar diacritics = [{\n  base: 'A',\n  letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n  base: 'AA',\n  letters: \"\\uA732\"\n}, {\n  base: 'AE',\n  letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n  base: 'AO',\n  letters: \"\\uA734\"\n}, {\n  base: 'AU',\n  letters: \"\\uA736\"\n}, {\n  base: 'AV',\n  letters: \"\\uA738\\uA73A\"\n}, {\n  base: 'AY',\n  letters: \"\\uA73C\"\n}, {\n  base: 'B',\n  letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n  base: 'C',\n  letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n  base: 'D',\n  letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n  base: 'DZ',\n  letters: \"\\u01F1\\u01C4\"\n}, {\n  base: 'Dz',\n  letters: \"\\u01F2\\u01C5\"\n}, {\n  base: 'E',\n  letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n  base: 'F',\n  letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n  base: 'G',\n  letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n  base: 'H',\n  letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n  base: 'I',\n  letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n  base: 'J',\n  letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n  base: 'K',\n  letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n  base: 'L',\n  letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n  base: 'LJ',\n  letters: \"\\u01C7\"\n}, {\n  base: 'Lj',\n  letters: \"\\u01C8\"\n}, {\n  base: 'M',\n  letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n  base: 'N',\n  letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n  base: 'NJ',\n  letters: \"\\u01CA\"\n}, {\n  base: 'Nj',\n  letters: \"\\u01CB\"\n}, {\n  base: 'O',\n  letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n  base: 'OI',\n  letters: \"\\u01A2\"\n}, {\n  base: 'OO',\n  letters: \"\\uA74E\"\n}, {\n  base: 'OU',\n  letters: \"\\u0222\"\n}, {\n  base: 'P',\n  letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n  base: 'Q',\n  letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n  base: 'R',\n  letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n  base: 'S',\n  letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n  base: 'T',\n  letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n  base: 'TZ',\n  letters: \"\\uA728\"\n}, {\n  base: 'U',\n  letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n  base: 'V',\n  letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n  base: 'VY',\n  letters: \"\\uA760\"\n}, {\n  base: 'W',\n  letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n  base: 'X',\n  letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n  base: 'Y',\n  letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n  base: 'Z',\n  letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n  base: 'a',\n  letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n  base: 'aa',\n  letters: \"\\uA733\"\n}, {\n  base: 'ae',\n  letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n  base: 'ao',\n  letters: \"\\uA735\"\n}, {\n  base: 'au',\n  letters: \"\\uA737\"\n}, {\n  base: 'av',\n  letters: \"\\uA739\\uA73B\"\n}, {\n  base: 'ay',\n  letters: \"\\uA73D\"\n}, {\n  base: 'b',\n  letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n  base: 'c',\n  letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n  base: 'd',\n  letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n  base: 'dz',\n  letters: \"\\u01F3\\u01C6\"\n}, {\n  base: 'e',\n  letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n  base: 'f',\n  letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n  base: 'g',\n  letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n  base: 'h',\n  letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n  base: 'hv',\n  letters: \"\\u0195\"\n}, {\n  base: 'i',\n  letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n  base: 'j',\n  letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n  base: 'k',\n  letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n  base: 'l',\n  letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n  base: 'lj',\n  letters: \"\\u01C9\"\n}, {\n  base: 'm',\n  letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n  base: 'n',\n  letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n  base: 'nj',\n  letters: \"\\u01CC\"\n}, {\n  base: 'o',\n  letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n  base: 'oi',\n  letters: \"\\u01A3\"\n}, {\n  base: 'ou',\n  letters: \"\\u0223\"\n}, {\n  base: 'oo',\n  letters: \"\\uA74F\"\n}, {\n  base: 'p',\n  letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n  base: 'q',\n  letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n  base: 'r',\n  letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n  base: 's',\n  letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n  base: 't',\n  letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n  base: 'tz',\n  letters: \"\\uA729\"\n}, {\n  base: 'u',\n  letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n  base: 'v',\n  letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n  base: 'vy',\n  letters: \"\\uA761\"\n}, {\n  base: 'w',\n  letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n  base: 'x',\n  letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n  base: 'y',\n  letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n  base: 'z',\n  letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n  return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\n\nfor (var i = 0; i < diacritics.length; i++) {\n  var diacritic = diacritics[i];\n\n  for (var j = 0; j < diacritic.letters.length; j++) {\n    diacriticToBase[diacritic.letters[j]] = diacritic.base;\n  }\n}\n\nvar stripDiacritics = function stripDiacritics(str) {\n  return str.replace(anyDiacritic, function (match) {\n    return diacriticToBase[match];\n  });\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar trimString = function trimString(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n  return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n  return function (option, rawInput) {\n    var _ignoreCase$ignoreAcc = _objectSpread({\n      ignoreCase: true,\n      ignoreAccents: true,\n      stringify: defaultStringify,\n      trim: true,\n      matchFrom: 'any'\n    }, config),\n        ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n        ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n        stringify = _ignoreCase$ignoreAcc.stringify,\n        trim = _ignoreCase$ignoreAcc.trim,\n        matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n    var input = trim ? trimString(rawInput) : rawInput;\n    var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n    if (ignoreCase) {\n      input = input.toLowerCase();\n      candidate = candidate.toLowerCase();\n    }\n\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n      candidate = stripDiacritics(candidate);\n    }\n\n    return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n  };\n};\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n  name: \"1laao21-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\"\n} : {\n  name: \"1laao21-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFJIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vY29yZSc7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxuY29uc3QgQTExeVRleHQgPSAocHJvcHM6IEVsZW1lbnRDb25maWc8J3NwYW4nPikgPT4gKFxuICA8c3BhblxuICAgIGNzcz17e1xuICAgICAgbGFiZWw6ICdhMTF5VGV4dCcsXG4gICAgICB6SW5kZXg6IDk5OTksXG4gICAgICBib3JkZXI6IDAsXG4gICAgICBjbGlwOiAncmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpJyxcbiAgICAgIGhlaWdodDogMSxcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICBwYWRkaW5nOiAwLFxuICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBBMTF5VGV4dDtcbiJdfQ== */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\nvar A11yText = function A11yText(props) {\n  return jsx(\"span\", _extends({\n    css: _ref\n  }, props));\n};\n\nfunction DummyInput(_ref) {\n  var inProp = _ref.in,\n      out = _ref.out,\n      onExited = _ref.onExited,\n      appear = _ref.appear,\n      enter = _ref.enter,\n      exit = _ref.exit,\n      innerRef = _ref.innerRef,\n      emotion = _ref.emotion,\n      props = _objectWithoutProperties(_ref, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n  return jsx(\"input\", _extends({\n    ref: innerRef\n  }, props, {\n    css: /*#__PURE__*/_css({\n      label: 'dummyInput',\n      // get rid of any default styles\n      background: 0,\n      border: 0,\n      fontSize: 'inherit',\n      outline: 0,\n      padding: 0,\n      // important! without `width` browsers won't allow focus\n      width: 1,\n      // remove cursor on desktop\n      color: 'transparent',\n      // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n      left: -100,\n      opacity: 0,\n      position: 'relative',\n      transform: 'scale(0)'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJNIiwiZmlsZSI6IkR1bW15SW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHVtbXlJbnB1dCh7XG4gIGluOiBpblByb3AsXG4gIG91dCxcbiAgb25FeGl0ZWQsXG4gIGFwcGVhcixcbiAgZW50ZXIsXG4gIGV4aXQsXG4gIGlubmVyUmVmLFxuICBlbW90aW9uLFxuICAuLi5wcm9wc1xufTogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgY3NzPXt7XG4gICAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAgIC8vIGdldCByaWQgb2YgYW55IGRlZmF1bHQgc3R5bGVzXG4gICAgICAgIGJhY2tncm91bmQ6IDAsXG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgICAgb3V0bGluZTogMCxcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgLy8gaW1wb3J0YW50ISB3aXRob3V0IGB3aWR0aGAgYnJvd3NlcnMgd29uJ3QgYWxsb3cgZm9jdXNcbiAgICAgICAgd2lkdGg6IDEsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBkZXNrdG9wXG4gICAgICAgIGNvbG9yOiAndHJhbnNwYXJlbnQnLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gbW9iaWxlIHdoaWxzdCBtYWludGFpbmluZyBcInNjcm9sbCBpbnRvIHZpZXdcIiBiZWhhdmlvdXJcbiAgICAgICAgbGVmdDogLTEwMCxcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDApJyxcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== */\")\n  }));\n}\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar NodeResolver = /*#__PURE__*/function (_Component) {\n  _inherits(NodeResolver, _Component);\n\n  var _super = _createSuper(NodeResolver);\n\n  function NodeResolver() {\n    _classCallCheck(this, NodeResolver);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(NodeResolver, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.innerRef(findDOMNode(this));\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.props.innerRef(null);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n\n  return NodeResolver;\n}(Component);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n  boxSizing: 'border-box',\n  // account for possible declaration `width: 100%;` on body\n  overflow: 'hidden',\n  position: 'relative',\n  height: '100%'\n};\n\nfunction preventTouchMove(e) {\n  e.preventDefault();\n}\nfunction allowTouchMove(e) {\n  e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n  var top = this.scrollTop;\n  var totalScroll = this.scrollHeight;\n  var currentScroll = top + this.offsetHeight;\n\n  if (top === 0) {\n    this.scrollTop = 1;\n  } else if (currentScroll === totalScroll) {\n    this.scrollTop = top - 1;\n  }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\nfunction isTouchDevice() {\n  return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nvar canUseDOM = !!( window.document && window.document.createElement);\nvar activeScrollLocks = 0;\n\nvar ScrollLock = /*#__PURE__*/function (_Component) {\n  _inherits(ScrollLock, _Component);\n\n  var _super = _createSuper$1(ScrollLock);\n\n  function ScrollLock() {\n    var _this;\n\n    _classCallCheck(this, ScrollLock);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.originalStyles = {};\n    _this.listenerOptions = {\n      capture: false,\n      passive: false\n    };\n    return _this;\n  }\n\n  _createClass(ScrollLock, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      if (!canUseDOM) return;\n      var _this$props = this.props,\n          accountForScrollbars = _this$props.accountForScrollbars,\n          touchScrollTarget = _this$props.touchScrollTarget;\n      var target = document.body;\n      var targetStyle = target && target.style;\n\n      if (accountForScrollbars) {\n        // store any styles already applied to the body\n        STYLE_KEYS.forEach(function (key) {\n          var val = targetStyle && targetStyle[key];\n          _this2.originalStyles[key] = val;\n        });\n      } // apply the lock styles and padding if this is the first scroll lock\n\n\n      if (accountForScrollbars && activeScrollLocks < 1) {\n        var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n        var clientWidth = document.body ? document.body.clientWidth : 0;\n        var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n        Object.keys(LOCK_STYLES).forEach(function (key) {\n          var val = LOCK_STYLES[key];\n\n          if (targetStyle) {\n            targetStyle[key] = val;\n          }\n        });\n\n        if (targetStyle) {\n          targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n        }\n      } // account for touch devices\n\n\n      if (target && isTouchDevice()) {\n        // Mobile Safari ignores { overflow: hidden } declaration on the body.\n        target.addEventListener('touchmove', preventTouchMove, this.listenerOptions); // Allow scroll on provided target\n\n        if (touchScrollTarget) {\n          touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n          touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n        }\n      } // increment active scroll locks\n\n\n      activeScrollLocks += 1;\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var _this3 = this;\n\n      if (!canUseDOM) return;\n      var _this$props2 = this.props,\n          accountForScrollbars = _this$props2.accountForScrollbars,\n          touchScrollTarget = _this$props2.touchScrollTarget;\n      var target = document.body;\n      var targetStyle = target && target.style; // safely decrement active scroll locks\n\n      activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n      if (accountForScrollbars && activeScrollLocks < 1) {\n        STYLE_KEYS.forEach(function (key) {\n          var val = _this3.originalStyles[key];\n\n          if (targetStyle) {\n            targetStyle[key] = val;\n          }\n        });\n      } // remove touch listeners\n\n\n      if (target && isTouchDevice()) {\n        target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n        if (touchScrollTarget) {\n          touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n          touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return null;\n    }\n  }]);\n\n  return ScrollLock;\n}(Component);\n\nScrollLock.defaultProps = {\n  accountForScrollbars: true\n};\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar _ref$1 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1dsbpcp\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\"\n} : {\n  name: \"1dsbpcp\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbEJsb2NrLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZEVSIsImZpbGUiOiJTY3JvbGxCbG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IFB1cmVDb21wb25lbnQsIHR5cGUgRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuaW1wb3J0IE5vZGVSZXNvbHZlciBmcm9tICcuL05vZGVSZXNvbHZlcic7XG5pbXBvcnQgU2Nyb2xsTG9jayBmcm9tICcuL1Njcm9sbExvY2svaW5kZXgnO1xuXG50eXBlIFByb3BzID0ge1xuICBjaGlsZHJlbjogRWxlbWVudDwqPixcbiAgaXNFbmFibGVkOiBib29sZWFuLFxufTtcbnR5cGUgU3RhdGUgPSB7XG4gIHRvdWNoU2Nyb2xsVGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwsXG59O1xuXG4vLyBOT1RFOlxuLy8gV2Ugc2hvdWxkbid0IG5lZWQgdGhpcyBhZnRlciB1cGRhdGluZyB0byBSZWFjdCB2MTYuMy4wLCB3aGljaCBpbnRyb2R1Y2VzOlxuLy8gLSBjcmVhdGVSZWYoKSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjcmVhdGVyZWZcbi8vIC0gZm9yd2FyZFJlZigpIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGZvcndhcmRyZWZcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nyb2xsQmxvY2sgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBzdGF0ZSA9IHsgdG91Y2hTY3JvbGxUYXJnZXQ6IG51bGwgfTtcblxuICAvLyBtdXN0IGJlIGluIHN0YXRlIHRvIHRyaWdnZXIgYSByZS1yZW5kZXIsIG9ubHkgcnVucyBvbmNlIHBlciBpbnN0YW5jZVxuICBnZXRTY3JvbGxUYXJnZXQgPSAocmVmOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGlmIChyZWYgPT09IHRoaXMuc3RhdGUudG91Y2hTY3JvbGxUYXJnZXQpIHJldHVybjtcbiAgICB0aGlzLnNldFN0YXRlKHsgdG91Y2hTY3JvbGxUYXJnZXQ6IHJlZiB9KTtcbiAgfTtcblxuICAvLyB0aGlzIHdpbGwgY2xvc2UgdGhlIG1lbnUgd2hlbiBhIHVzZXIgY2xpY2tzIG91dHNpZGVcbiAgYmx1clNlbGVjdElucHV0ID0gKCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGlzRW5hYmxlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHRvdWNoU2Nyb2xsVGFyZ2V0IH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgLy8gYmFpbCBlYXJseSBpZiBub3QgZW5hYmxlZFxuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgICAvKlxuICAgICAqIERpdlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGJsb2NrcyBzY3JvbGxpbmcgb24gbm9uLWJvZHkgZWxlbWVudHMgYmVoaW5kIHRoZSBtZW51XG5cbiAgICAgKiBOb2RlUmVzb2x2ZXJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKiB3ZSBuZWVkIGEgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgdG8gXCJ1bmxvY2tcIiBzY3JvbGwgb25cbiAgICAgKiBtb2JpbGUgZGV2aWNlc1xuXG4gICAgICogU2Nyb2xsTG9ja1xuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGFjdHVhbGx5IGRvZXMgdGhlIHNjcm9sbCBsb2NraW5nXG4gICAgICovXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmJsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgICA8Tm9kZVJlc29sdmVyIGlubmVyUmVmPXt0aGlzLmdldFNjcm9sbFRhcmdldH0+e2NoaWxkcmVufTwvTm9kZVJlc29sdmVyPlxuICAgICAgICB7dG91Y2hTY3JvbGxUYXJnZXQgPyAoXG4gICAgICAgICAgPFNjcm9sbExvY2sgdG91Y2hTY3JvbGxUYXJnZXQ9e3RvdWNoU2Nyb2xsVGFyZ2V0fSAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\n\n// NOTE:\n// We shouldn't need this after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\nvar ScrollBlock = /*#__PURE__*/function (_PureComponent) {\n  _inherits(ScrollBlock, _PureComponent);\n\n  var _super = _createSuper$2(ScrollBlock);\n\n  function ScrollBlock() {\n    var _this;\n\n    _classCallCheck(this, ScrollBlock);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      touchScrollTarget: null\n    };\n\n    _this.getScrollTarget = function (ref) {\n      if (ref === _this.state.touchScrollTarget) return;\n\n      _this.setState({\n        touchScrollTarget: ref\n      });\n    };\n\n    _this.blurSelectInput = function () {\n      if (document.activeElement) {\n        document.activeElement.blur();\n      }\n    };\n\n    return _this;\n  }\n\n  _createClass(ScrollBlock, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          children = _this$props.children,\n          isEnabled = _this$props.isEnabled;\n      var touchScrollTarget = this.state.touchScrollTarget; // bail early if not enabled\n\n      if (!isEnabled) return children;\n      /*\n       * Div\n       * ------------------------------\n       * blocks scrolling on non-body elements behind the menu\n        * NodeResolver\n       * ------------------------------\n       * we need a reference to the scrollable element to \"unlock\" scroll on\n       * mobile devices\n        * ScrollLock\n       * ------------------------------\n       * actually does the scroll locking\n       */\n\n      return jsx(\"div\", null, jsx(\"div\", {\n        onClick: this.blurSelectInput,\n        css: _ref$1\n      }), jsx(NodeResolver, {\n        innerRef: this.getScrollTarget\n      }, children), touchScrollTarget ? jsx(ScrollLock, {\n        touchScrollTarget: touchScrollTarget\n      }) : null);\n    }\n  }]);\n\n  return ScrollBlock;\n}(PureComponent);\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar ScrollCaptor = /*#__PURE__*/function (_Component) {\n  _inherits(ScrollCaptor, _Component);\n\n  var _super = _createSuper$3(ScrollCaptor);\n\n  function ScrollCaptor() {\n    var _this;\n\n    _classCallCheck(this, ScrollCaptor);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.isBottom = false;\n    _this.isTop = false;\n    _this.scrollTarget = void 0;\n    _this.touchStart = void 0;\n\n    _this.cancelScroll = function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n    };\n\n    _this.handleEventDelta = function (event, delta) {\n      var _this$props = _this.props,\n          onBottomArrive = _this$props.onBottomArrive,\n          onBottomLeave = _this$props.onBottomLeave,\n          onTopArrive = _this$props.onTopArrive,\n          onTopLeave = _this$props.onTopLeave;\n      var _this$scrollTarget = _this.scrollTarget,\n          scrollTop = _this$scrollTarget.scrollTop,\n          scrollHeight = _this$scrollTarget.scrollHeight,\n          clientHeight = _this$scrollTarget.clientHeight;\n      var target = _this.scrollTarget;\n      var isDeltaPositive = delta > 0;\n      var availableScroll = scrollHeight - clientHeight - scrollTop;\n      var shouldCancelScroll = false; // reset bottom/top flags\n\n      if (availableScroll > delta && _this.isBottom) {\n        if (onBottomLeave) onBottomLeave(event);\n        _this.isBottom = false;\n      }\n\n      if (isDeltaPositive && _this.isTop) {\n        if (onTopLeave) onTopLeave(event);\n        _this.isTop = false;\n      } // bottom limit\n\n\n      if (isDeltaPositive && delta > availableScroll) {\n        if (onBottomArrive && !_this.isBottom) {\n          onBottomArrive(event);\n        }\n\n        target.scrollTop = scrollHeight;\n        shouldCancelScroll = true;\n        _this.isBottom = true; // top limit\n      } else if (!isDeltaPositive && -delta > scrollTop) {\n        if (onTopArrive && !_this.isTop) {\n          onTopArrive(event);\n        }\n\n        target.scrollTop = 0;\n        shouldCancelScroll = true;\n        _this.isTop = true;\n      } // cancel scroll\n\n\n      if (shouldCancelScroll) {\n        _this.cancelScroll(event);\n      }\n    };\n\n    _this.onWheel = function (event) {\n      _this.handleEventDelta(event, event.deltaY);\n    };\n\n    _this.onTouchStart = function (event) {\n      // set touch start so we can calculate touchmove delta\n      _this.touchStart = event.changedTouches[0].clientY;\n    };\n\n    _this.onTouchMove = function (event) {\n      var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n\n      _this.handleEventDelta(event, deltaY);\n    };\n\n    _this.getScrollTarget = function (ref) {\n      _this.scrollTarget = ref;\n    };\n\n    return _this;\n  }\n\n  _createClass(ScrollCaptor, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListening(this.scrollTarget);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListening(this.scrollTarget);\n    }\n  }, {\n    key: \"startListening\",\n    value: function startListening(el) {\n      // bail early if no element is available to attach to\n      if (!el) return; // all the if statements are to appease Flow 😢\n\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('wheel', this.onWheel, false);\n      }\n\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('touchstart', this.onTouchStart, false);\n      }\n\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('touchmove', this.onTouchMove, false);\n      }\n    }\n  }, {\n    key: \"stopListening\",\n    value: function stopListening(el) {\n      if (!el) return; // all the if statements are to appease Flow 😢\n\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('wheel', this.onWheel, false);\n      }\n\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('touchstart', this.onTouchStart, false);\n      }\n\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('touchmove', this.onTouchMove, false);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(NodeResolver, {\n        innerRef: this.getScrollTarget\n      }, this.props.children);\n    }\n  }]);\n\n  return ScrollCaptor;\n}(Component);\n\nfunction ScrollCaptorSwitch(_ref) {\n  var _ref$isEnabled = _ref.isEnabled,\n      isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled,\n      props = _objectWithoutProperties(_ref, [\"isEnabled\"]);\n\n  return isEnabled ? /*#__PURE__*/React.createElement(ScrollCaptor, props) : props.children;\n}\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event) {\n  var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var isSearchable = context.isSearchable,\n      isMulti = context.isMulti,\n      label = context.label,\n      isDisabled = context.isDisabled,\n      tabSelectsValue = context.tabSelectsValue;\n\n  switch (event) {\n    case 'menu':\n      return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu\").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n\n    case 'input':\n      return \"\".concat(label ? label : 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n    case 'value':\n      return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n  }\n};\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n  var value = context.value,\n      isDisabled = context.isDisabled;\n  if (!value) return;\n\n  switch (event) {\n    case 'deselect-option':\n    case 'pop-value':\n    case 'remove-value':\n      return \"option \".concat(value, \", deselected.\");\n\n    case 'select-option':\n      return isDisabled ? \"option \".concat(value, \" is disabled. Select another option.\") : \"option \".concat(value, \", selected.\");\n  }\n};\nvar valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n  var focusedValue = _ref.focusedValue,\n      getOptionLabel = _ref.getOptionLabel,\n      selectValue = _ref.selectValue;\n  return \"value \".concat(getOptionLabel(focusedValue), \" focused, \").concat(selectValue.indexOf(focusedValue) + 1, \" of \").concat(selectValue.length, \".\");\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n  var focusedOption = _ref2.focusedOption,\n      getOptionLabel = _ref2.getOptionLabel,\n      options = _ref2.options;\n  return \"option \".concat(getOptionLabel(focusedOption), \" focused\").concat(focusedOption.isDisabled ? ' disabled' : '', \", \").concat(options.indexOf(focusedOption) + 1, \" of \").concat(options.length, \".\");\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n  var inputValue = _ref3.inputValue,\n      screenReaderMessage = _ref3.screenReaderMessage;\n  return \"\".concat(screenReaderMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n  return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n  return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n  return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n  return !!option.isDisabled;\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar defaultStyles = {\n  clearIndicator: clearIndicatorCSS,\n  container: containerCSS,\n  control: css,\n  dropdownIndicator: dropdownIndicatorCSS,\n  group: groupCSS,\n  groupHeading: groupHeadingCSS,\n  indicatorsContainer: indicatorsContainerCSS,\n  indicatorSeparator: indicatorSeparatorCSS,\n  input: inputCSS,\n  loadingIndicator: loadingIndicatorCSS,\n  loadingMessage: loadingMessageCSS,\n  menu: menuCSS,\n  menuList: menuListCSS,\n  menuPortal: menuPortalCSS,\n  multiValue: multiValueCSS,\n  multiValueLabel: multiValueLabelCSS,\n  multiValueRemove: multiValueRemoveCSS,\n  noOptionsMessage: noOptionsMessageCSS,\n  option: optionCSS,\n  placeholder: placeholderCSS,\n  singleValue: css$1,\n  valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n  var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  // initialize with source styles\n  var styles = _objectSpread$1({}, source); // massage in target styles\n\n\n  Object.keys(target).forEach(function (key) {\n    if (source[key]) {\n      styles[key] = function (rsCss, props) {\n        return target[key](source[key](rsCss, props), props);\n      };\n    } else {\n      styles[key] = target[key];\n    }\n  });\n  return styles;\n}\n\nvar colors = {\n  primary: '#2684FF',\n  primary75: '#4C9AFF',\n  primary50: '#B2D4FF',\n  primary25: '#DEEBFF',\n  danger: '#DE350B',\n  dangerLight: '#FFBDAD',\n  neutral0: 'hsl(0, 0%, 100%)',\n  neutral5: 'hsl(0, 0%, 95%)',\n  neutral10: 'hsl(0, 0%, 90%)',\n  neutral20: 'hsl(0, 0%, 80%)',\n  neutral30: 'hsl(0, 0%, 70%)',\n  neutral40: 'hsl(0, 0%, 60%)',\n  neutral50: 'hsl(0, 0%, 50%)',\n  neutral60: 'hsl(0, 0%, 40%)',\n  neutral70: 'hsl(0, 0%, 30%)',\n  neutral80: 'hsl(0, 0%, 20%)',\n  neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n  baseUnit: baseUnit,\n  controlHeight: controlHeight,\n  menuGutter: menuGutter\n};\nvar defaultTheme = {\n  borderRadius: borderRadius,\n  colors: colors,\n  spacing: spacing\n};\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$4(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$4(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$4() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nvar defaultProps = {\n  backspaceRemovesValue: true,\n  blurInputOnSelect: isTouchCapable(),\n  captureMenuScroll: !isTouchCapable(),\n  closeMenuOnSelect: true,\n  closeMenuOnScroll: false,\n  components: {},\n  controlShouldRenderValue: true,\n  escapeClearsValue: false,\n  filterOption: createFilter(),\n  formatGroupLabel: formatGroupLabel,\n  getOptionLabel: getOptionLabel,\n  getOptionValue: getOptionValue,\n  isDisabled: false,\n  isLoading: false,\n  isMulti: false,\n  isRtl: false,\n  isSearchable: true,\n  isOptionDisabled: isOptionDisabled,\n  loadingMessage: function loadingMessage() {\n    return 'Loading...';\n  },\n  maxMenuHeight: 300,\n  minMenuHeight: 140,\n  menuIsOpen: false,\n  menuPlacement: 'bottom',\n  menuPosition: 'absolute',\n  menuShouldBlockScroll: false,\n  menuShouldScrollIntoView: !isMobileDevice(),\n  noOptionsMessage: function noOptionsMessage() {\n    return 'No options';\n  },\n  openMenuOnFocus: false,\n  openMenuOnClick: true,\n  options: [],\n  pageSize: 5,\n  placeholder: 'Select...',\n  screenReaderStatus: function screenReaderStatus(_ref) {\n    var count = _ref.count;\n    return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n  },\n  styles: {},\n  tabIndex: '0',\n  tabSelectsValue: true\n};\nvar instanceId = 1;\n\nvar Select = /*#__PURE__*/function (_Component) {\n  _inherits(Select, _Component);\n\n  var _super = _createSuper$4(Select);\n\n  // Misc. Instance Properties\n  // ------------------------------\n  // TODO\n  // Refs\n  // ------------------------------\n  // Lifecycle\n  // ------------------------------\n  function Select(_props) {\n    var _this;\n\n    _classCallCheck(this, Select);\n\n    _this = _super.call(this, _props);\n    _this.state = {\n      ariaLiveSelection: '',\n      ariaLiveContext: '',\n      focusedOption: null,\n      focusedValue: null,\n      inputIsHidden: false,\n      isFocused: false,\n      menuOptions: {\n        render: [],\n        focusable: []\n      },\n      selectValue: []\n    };\n    _this.blockOptionHover = false;\n    _this.isComposing = false;\n    _this.clearFocusValueOnUpdate = false;\n    _this.commonProps = void 0;\n    _this.components = void 0;\n    _this.hasGroups = false;\n    _this.initialTouchX = 0;\n    _this.initialTouchY = 0;\n    _this.inputIsHiddenAfterUpdate = void 0;\n    _this.instancePrefix = '';\n    _this.openAfterFocus = false;\n    _this.scrollToFocusedOptionOnUpdate = false;\n    _this.userIsDragging = void 0;\n    _this.controlRef = null;\n\n    _this.getControlRef = function (ref) {\n      _this.controlRef = ref;\n    };\n\n    _this.focusedOptionRef = null;\n\n    _this.getFocusedOptionRef = function (ref) {\n      _this.focusedOptionRef = ref;\n    };\n\n    _this.menuListRef = null;\n\n    _this.getMenuListRef = function (ref) {\n      _this.menuListRef = ref;\n    };\n\n    _this.inputRef = null;\n\n    _this.getInputRef = function (ref) {\n      _this.inputRef = ref;\n    };\n\n    _this.cacheComponents = function (components) {\n      _this.components = defaultComponents({\n        components: components\n      });\n    };\n\n    _this.focus = _this.focusInput;\n    _this.blur = _this.blurInput;\n\n    _this.onChange = function (newValue, actionMeta) {\n      var _this$props = _this.props,\n          onChange = _this$props.onChange,\n          name = _this$props.name;\n      onChange(newValue, _objectSpread$2(_objectSpread$2({}, actionMeta), {}, {\n        name: name\n      }));\n    };\n\n    _this.setValue = function (newValue) {\n      var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n      var option = arguments.length > 2 ? arguments[2] : undefined;\n      var _this$props2 = _this.props,\n          closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n          isMulti = _this$props2.isMulti;\n\n      _this.onInputChange('', {\n        action: 'set-value'\n      });\n\n      if (closeMenuOnSelect) {\n        _this.inputIsHiddenAfterUpdate = !isMulti;\n\n        _this.onMenuClose();\n      } // when the select value should change, we should reset focusedValue\n\n\n      _this.clearFocusValueOnUpdate = true;\n\n      _this.onChange(newValue, {\n        action: action,\n        option: option\n      });\n    };\n\n    _this.selectOption = function (newValue) {\n      var _this$props3 = _this.props,\n          blurInputOnSelect = _this$props3.blurInputOnSelect,\n          isMulti = _this$props3.isMulti;\n      var selectValue = _this.state.selectValue;\n\n      if (isMulti) {\n        if (_this.isOptionSelected(newValue, selectValue)) {\n          var candidate = _this.getOptionValue(newValue);\n\n          _this.setValue(selectValue.filter(function (i) {\n            return _this.getOptionValue(i) !== candidate;\n          }), 'deselect-option', newValue);\n\n          _this.announceAriaLiveSelection({\n            event: 'deselect-option',\n            context: {\n              value: _this.getOptionLabel(newValue)\n            }\n          });\n        } else {\n          if (!_this.isOptionDisabled(newValue, selectValue)) {\n            _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n\n            _this.announceAriaLiveSelection({\n              event: 'select-option',\n              context: {\n                value: _this.getOptionLabel(newValue)\n              }\n            });\n          } else {\n            // announce that option is disabled\n            _this.announceAriaLiveSelection({\n              event: 'select-option',\n              context: {\n                value: _this.getOptionLabel(newValue),\n                isDisabled: true\n              }\n            });\n          }\n        }\n      } else {\n        if (!_this.isOptionDisabled(newValue, selectValue)) {\n          _this.setValue(newValue, 'select-option');\n\n          _this.announceAriaLiveSelection({\n            event: 'select-option',\n            context: {\n              value: _this.getOptionLabel(newValue)\n            }\n          });\n        } else {\n          // announce that option is disabled\n          _this.announceAriaLiveSelection({\n            event: 'select-option',\n            context: {\n              value: _this.getOptionLabel(newValue),\n              isDisabled: true\n            }\n          });\n        }\n      }\n\n      if (blurInputOnSelect) {\n        _this.blurInput();\n      }\n    };\n\n    _this.removeValue = function (removedValue) {\n      var selectValue = _this.state.selectValue;\n\n      var candidate = _this.getOptionValue(removedValue);\n\n      var newValue = selectValue.filter(function (i) {\n        return _this.getOptionValue(i) !== candidate;\n      });\n\n      _this.onChange(newValue.length ? newValue : null, {\n        action: 'remove-value',\n        removedValue: removedValue\n      });\n\n      _this.announceAriaLiveSelection({\n        event: 'remove-value',\n        context: {\n          value: removedValue ? _this.getOptionLabel(removedValue) : ''\n        }\n      });\n\n      _this.focusInput();\n    };\n\n    _this.clearValue = function () {\n      _this.onChange(null, {\n        action: 'clear'\n      });\n    };\n\n    _this.popValue = function () {\n      var selectValue = _this.state.selectValue;\n      var lastSelectedValue = selectValue[selectValue.length - 1];\n      var newValue = selectValue.slice(0, selectValue.length - 1);\n\n      _this.announceAriaLiveSelection({\n        event: 'pop-value',\n        context: {\n          value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n        }\n      });\n\n      _this.onChange(newValue.length ? newValue : null, {\n        action: 'pop-value',\n        removedValue: lastSelectedValue\n      });\n    };\n\n    _this.getValue = function () {\n      return _this.state.selectValue;\n    };\n\n    _this.cx = function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n    };\n\n    _this.getOptionLabel = function (data) {\n      return _this.props.getOptionLabel(data);\n    };\n\n    _this.getOptionValue = function (data) {\n      return _this.props.getOptionValue(data);\n    };\n\n    _this.getStyles = function (key, props) {\n      var base = defaultStyles[key](props);\n      base.boxSizing = 'border-box';\n      var custom = _this.props.styles[key];\n      return custom ? custom(base, props) : base;\n    };\n\n    _this.getElementId = function (element) {\n      return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n    };\n\n    _this.getActiveDescendentId = function () {\n      var menuIsOpen = _this.props.menuIsOpen;\n      var _this$state = _this.state,\n          menuOptions = _this$state.menuOptions,\n          focusedOption = _this$state.focusedOption;\n      if (!focusedOption || !menuIsOpen) return undefined;\n      var index = menuOptions.focusable.indexOf(focusedOption);\n      var option = menuOptions.render[index];\n      return option && option.key;\n    };\n\n    _this.announceAriaLiveSelection = function (_ref2) {\n      var event = _ref2.event,\n          context = _ref2.context;\n\n      _this.setState({\n        ariaLiveSelection: valueEventAriaMessage(event, context)\n      });\n    };\n\n    _this.announceAriaLiveContext = function (_ref3) {\n      var event = _ref3.event,\n          context = _ref3.context;\n\n      _this.setState({\n        ariaLiveContext: instructionsAriaMessage(event, _objectSpread$2(_objectSpread$2({}, context), {}, {\n          label: _this.props['aria-label']\n        }))\n      });\n    };\n\n    _this.onMenuMouseDown = function (event) {\n      if (event.button !== 0) {\n        return;\n      }\n\n      event.stopPropagation();\n      event.preventDefault();\n\n      _this.focusInput();\n    };\n\n    _this.onMenuMouseMove = function (event) {\n      _this.blockOptionHover = false;\n    };\n\n    _this.onControlMouseDown = function (event) {\n      var openMenuOnClick = _this.props.openMenuOnClick;\n\n      if (!_this.state.isFocused) {\n        if (openMenuOnClick) {\n          _this.openAfterFocus = true;\n        }\n\n        _this.focusInput();\n      } else if (!_this.props.menuIsOpen) {\n        if (openMenuOnClick) {\n          _this.openMenu('first');\n        }\n      } else {\n        if ( // $FlowFixMe\n        event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n          _this.onMenuClose();\n        }\n      }\n\n      if ( // $FlowFixMe\n      event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n        event.preventDefault();\n      }\n    };\n\n    _this.onDropdownIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      if (_this.props.isDisabled) return;\n      var _this$props4 = _this.props,\n          isMulti = _this$props4.isMulti,\n          menuIsOpen = _this$props4.menuIsOpen;\n\n      _this.focusInput();\n\n      if (menuIsOpen) {\n        _this.inputIsHiddenAfterUpdate = !isMulti;\n\n        _this.onMenuClose();\n      } else {\n        _this.openMenu('first');\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n    };\n\n    _this.onClearIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      _this.clearValue();\n\n      event.stopPropagation();\n      _this.openAfterFocus = false;\n\n      if (event.type === 'touchend') {\n        _this.focusInput();\n      } else {\n        setTimeout(function () {\n          return _this.focusInput();\n        });\n      }\n    };\n\n    _this.onScroll = function (event) {\n      if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n        if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n          _this.props.onMenuClose();\n        }\n      } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n        if (_this.props.closeMenuOnScroll(event)) {\n          _this.props.onMenuClose();\n        }\n      }\n    };\n\n    _this.onCompositionStart = function () {\n      _this.isComposing = true;\n    };\n\n    _this.onCompositionEnd = function () {\n      _this.isComposing = false;\n    };\n\n    _this.onTouchStart = function (_ref4) {\n      var touches = _ref4.touches;\n      var touch = touches && touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      _this.initialTouchX = touch.clientX;\n      _this.initialTouchY = touch.clientY;\n      _this.userIsDragging = false;\n    };\n\n    _this.onTouchMove = function (_ref5) {\n      var touches = _ref5.touches;\n      var touch = touches && touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n      var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n      var moveThreshold = 5;\n      _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n    };\n\n    _this.onTouchEnd = function (event) {\n      if (_this.userIsDragging) return; // close the menu if the user taps outside\n      // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n      // on events on child elements, not the document (which we've attached this handler to).\n\n      if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n        _this.blurInput();\n      } // reset move vars\n\n\n      _this.initialTouchX = 0;\n      _this.initialTouchY = 0;\n    };\n\n    _this.onControlTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onControlMouseDown(event);\n    };\n\n    _this.onClearIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onClearIndicatorMouseDown(event);\n    };\n\n    _this.onDropdownIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onDropdownIndicatorMouseDown(event);\n    };\n\n    _this.handleInputChange = function (event) {\n      var inputValue = event.currentTarget.value;\n      _this.inputIsHiddenAfterUpdate = false;\n\n      _this.onInputChange(inputValue, {\n        action: 'input-change'\n      });\n\n      if (!_this.props.menuIsOpen) {\n        _this.onMenuOpen();\n      }\n    };\n\n    _this.onInputFocus = function (event) {\n      var _this$props5 = _this.props,\n          isSearchable = _this$props5.isSearchable,\n          isMulti = _this$props5.isMulti;\n\n      if (_this.props.onFocus) {\n        _this.props.onFocus(event);\n      }\n\n      _this.inputIsHiddenAfterUpdate = false;\n\n      _this.announceAriaLiveContext({\n        event: 'input',\n        context: {\n          isSearchable: isSearchable,\n          isMulti: isMulti\n        }\n      });\n\n      _this.setState({\n        isFocused: true\n      });\n\n      if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n        _this.openMenu('first');\n      }\n\n      _this.openAfterFocus = false;\n    };\n\n    _this.onInputBlur = function (event) {\n      if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n        _this.inputRef.focus();\n\n        return;\n      }\n\n      if (_this.props.onBlur) {\n        _this.props.onBlur(event);\n      }\n\n      _this.onInputChange('', {\n        action: 'input-blur'\n      });\n\n      _this.onMenuClose();\n\n      _this.setState({\n        focusedValue: null,\n        isFocused: false\n      });\n    };\n\n    _this.onOptionHover = function (focusedOption) {\n      if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n        return;\n      }\n\n      _this.setState({\n        focusedOption: focusedOption\n      });\n    };\n\n    _this.shouldHideSelectedOptions = function () {\n      var _this$props6 = _this.props,\n          hideSelectedOptions = _this$props6.hideSelectedOptions,\n          isMulti = _this$props6.isMulti;\n      if (hideSelectedOptions === undefined) return isMulti;\n      return hideSelectedOptions;\n    };\n\n    _this.onKeyDown = function (event) {\n      var _this$props7 = _this.props,\n          isMulti = _this$props7.isMulti,\n          backspaceRemovesValue = _this$props7.backspaceRemovesValue,\n          escapeClearsValue = _this$props7.escapeClearsValue,\n          inputValue = _this$props7.inputValue,\n          isClearable = _this$props7.isClearable,\n          isDisabled = _this$props7.isDisabled,\n          menuIsOpen = _this$props7.menuIsOpen,\n          onKeyDown = _this$props7.onKeyDown,\n          tabSelectsValue = _this$props7.tabSelectsValue,\n          openMenuOnFocus = _this$props7.openMenuOnFocus;\n      var _this$state2 = _this.state,\n          focusedOption = _this$state2.focusedOption,\n          focusedValue = _this$state2.focusedValue,\n          selectValue = _this$state2.selectValue;\n      if (isDisabled) return;\n\n      if (typeof onKeyDown === 'function') {\n        onKeyDown(event);\n\n        if (event.defaultPrevented) {\n          return;\n        }\n      } // Block option hover events when the user has just pressed a key\n\n\n      _this.blockOptionHover = true;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('previous');\n\n          break;\n\n        case 'ArrowRight':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('next');\n\n          break;\n\n        case 'Delete':\n        case 'Backspace':\n          if (inputValue) return;\n\n          if (focusedValue) {\n            _this.removeValue(focusedValue);\n          } else {\n            if (!backspaceRemovesValue) return;\n\n            if (isMulti) {\n              _this.popValue();\n            } else if (isClearable) {\n              _this.clearValue();\n            }\n          }\n\n          break;\n\n        case 'Tab':\n          if (_this.isComposing) return;\n\n          if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n          // option is already selected; it breaks the flow of navigation\n          openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n            return;\n          }\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'Enter':\n          if (event.keyCode === 229) {\n            // ignore the keydown event from an Input Method Editor(IME)\n            // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n            break;\n          }\n\n          if (menuIsOpen) {\n            if (!focusedOption) return;\n            if (_this.isComposing) return;\n\n            _this.selectOption(focusedOption);\n\n            break;\n          }\n\n          return;\n\n        case 'Escape':\n          if (menuIsOpen) {\n            _this.inputIsHiddenAfterUpdate = false;\n\n            _this.onInputChange('', {\n              action: 'menu-close'\n            });\n\n            _this.onMenuClose();\n          } else if (isClearable && escapeClearsValue) {\n            _this.clearValue();\n          }\n\n          break;\n\n        case ' ':\n          // space\n          if (inputValue) {\n            return;\n          }\n\n          if (!menuIsOpen) {\n            _this.openMenu('first');\n\n            break;\n          }\n\n          if (!focusedOption) return;\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'ArrowUp':\n          if (menuIsOpen) {\n            _this.focusOption('up');\n          } else {\n            _this.openMenu('last');\n          }\n\n          break;\n\n        case 'ArrowDown':\n          if (menuIsOpen) {\n            _this.focusOption('down');\n          } else {\n            _this.openMenu('first');\n          }\n\n          break;\n\n        case 'PageUp':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pageup');\n\n          break;\n\n        case 'PageDown':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pagedown');\n\n          break;\n\n        case 'Home':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('first');\n\n          break;\n\n        case 'End':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('last');\n\n          break;\n\n        default:\n          return;\n      }\n\n      event.preventDefault();\n    };\n\n    _this.buildMenuOptions = function (props, selectValue) {\n      var _props$inputValue = props.inputValue,\n          inputValue = _props$inputValue === void 0 ? '' : _props$inputValue,\n          options = props.options;\n\n      var toOption = function toOption(option, id) {\n        var isDisabled = _this.isOptionDisabled(option, selectValue);\n\n        var isSelected = _this.isOptionSelected(option, selectValue);\n\n        var label = _this.getOptionLabel(option);\n\n        var value = _this.getOptionValue(option);\n\n        if (_this.shouldHideSelectedOptions() && isSelected || !_this.filterOption({\n          label: label,\n          value: value,\n          data: option\n        }, inputValue)) {\n          return;\n        }\n\n        var onHover = isDisabled ? undefined : function () {\n          return _this.onOptionHover(option);\n        };\n        var onSelect = isDisabled ? undefined : function () {\n          return _this.selectOption(option);\n        };\n        var optionId = \"\".concat(_this.getElementId('option'), \"-\").concat(id);\n        return {\n          innerProps: {\n            id: optionId,\n            onClick: onSelect,\n            onMouseMove: onHover,\n            onMouseOver: onHover,\n            tabIndex: -1\n          },\n          data: option,\n          isDisabled: isDisabled,\n          isSelected: isSelected,\n          key: optionId,\n          label: label,\n          type: 'option',\n          value: value\n        };\n      };\n\n      return options.reduce(function (acc, item, itemIndex) {\n        if (item.options) {\n          // TODO needs a tidier implementation\n          if (!_this.hasGroups) _this.hasGroups = true;\n          var items = item.options;\n          var children = items.map(function (child, i) {\n            var option = toOption(child, \"\".concat(itemIndex, \"-\").concat(i));\n            if (option) acc.focusable.push(child);\n            return option;\n          }).filter(Boolean);\n\n          if (children.length) {\n            var groupId = \"\".concat(_this.getElementId('group'), \"-\").concat(itemIndex);\n            acc.render.push({\n              type: 'group',\n              key: groupId,\n              data: item,\n              options: children\n            });\n          }\n        } else {\n          var option = toOption(item, \"\".concat(itemIndex));\n\n          if (option) {\n            acc.render.push(option);\n            acc.focusable.push(item);\n          }\n        }\n\n        return acc;\n      }, {\n        render: [],\n        focusable: []\n      });\n    };\n\n    var _value = _props.value;\n    _this.cacheComponents = memoizeOne(_this.cacheComponents, exportedEqual).bind(_assertThisInitialized(_this));\n\n    _this.cacheComponents(_props.components);\n\n    _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n    var _selectValue = cleanValue(_value);\n\n    _this.buildMenuOptions = memoizeOne(_this.buildMenuOptions, function (newArgs, lastArgs) {\n      var _ref6 = newArgs,\n          _ref7 = _slicedToArray(_ref6, 2),\n          newProps = _ref7[0],\n          newSelectValue = _ref7[1];\n\n      var _ref8 = lastArgs,\n          _ref9 = _slicedToArray(_ref8, 2),\n          lastProps = _ref9[0],\n          lastSelectValue = _ref9[1];\n\n      return newSelectValue === lastSelectValue && newProps.inputValue === lastProps.inputValue && newProps.options === lastProps.options;\n    }).bind(_assertThisInitialized(_this));\n\n    var _menuOptions = _props.menuIsOpen ? _this.buildMenuOptions(_props, _selectValue) : {\n      render: [],\n      focusable: []\n    };\n\n    _this.state.menuOptions = _menuOptions;\n    _this.state.selectValue = _selectValue;\n    return _this;\n  }\n\n  _createClass(Select, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListeningComposition();\n      this.startListeningToTouch();\n\n      if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n        // Listen to all scroll events, and filter them out inside of 'onScroll'\n        document.addEventListener('scroll', this.onScroll, true);\n      }\n\n      if (this.props.autoFocus) {\n        this.focusInput();\n      }\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      var _this$props8 = this.props,\n          options = _this$props8.options,\n          value = _this$props8.value,\n          menuIsOpen = _this$props8.menuIsOpen,\n          inputValue = _this$props8.inputValue; // re-cache custom components\n\n      this.cacheComponents(nextProps.components); // rebuild the menu options\n\n      if (nextProps.value !== value || nextProps.options !== options || nextProps.menuIsOpen !== menuIsOpen || nextProps.inputValue !== inputValue) {\n        var selectValue = cleanValue(nextProps.value);\n        var menuOptions = nextProps.menuIsOpen ? this.buildMenuOptions(nextProps, selectValue) : {\n          render: [],\n          focusable: []\n        };\n        var focusedValue = this.getNextFocusedValue(selectValue);\n        var focusedOption = this.getNextFocusedOption(menuOptions.focusable);\n        this.setState({\n          menuOptions: menuOptions,\n          selectValue: selectValue,\n          focusedOption: focusedOption,\n          focusedValue: focusedValue\n        });\n      } // some updates should toggle the state of the input visibility\n\n\n      if (this.inputIsHiddenAfterUpdate != null) {\n        this.setState({\n          inputIsHidden: this.inputIsHiddenAfterUpdate\n        });\n        delete this.inputIsHiddenAfterUpdate;\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props9 = this.props,\n          isDisabled = _this$props9.isDisabled,\n          menuIsOpen = _this$props9.menuIsOpen;\n      var isFocused = this.state.isFocused;\n\n      if ( // ensure focus is restored correctly when the control becomes enabled\n      isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n      isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n        this.focusInput();\n      }\n\n      if (isFocused && isDisabled && !prevProps.isDisabled) {\n        // ensure select state gets blurred in case Select is programatically disabled while focused\n        this.setState({\n          isFocused: false\n        }, this.onMenuClose);\n      } // scroll the focused option into view if necessary\n\n\n      if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n        this.scrollToFocusedOptionOnUpdate = false;\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListeningComposition();\n      this.stopListeningToTouch();\n      document.removeEventListener('scroll', this.onScroll, true);\n    }\n  }, {\n    key: \"onMenuOpen\",\n    // ==============================\n    // Consumer Handlers\n    // ==============================\n    value: function onMenuOpen() {\n      this.props.onMenuOpen();\n    }\n  }, {\n    key: \"onMenuClose\",\n    value: function onMenuClose() {\n      var _this$props10 = this.props,\n          isSearchable = _this$props10.isSearchable,\n          isMulti = _this$props10.isMulti;\n      this.announceAriaLiveContext({\n        event: 'input',\n        context: {\n          isSearchable: isSearchable,\n          isMulti: isMulti\n        }\n      });\n      this.onInputChange('', {\n        action: 'menu-close'\n      });\n      this.props.onMenuClose();\n    }\n  }, {\n    key: \"onInputChange\",\n    value: function onInputChange(newValue, actionMeta) {\n      this.props.onInputChange(newValue, actionMeta);\n    } // ==============================\n    // Methods\n    // ==============================\n\n  }, {\n    key: \"focusInput\",\n    value: function focusInput() {\n      if (!this.inputRef) return;\n      this.inputRef.focus();\n    }\n  }, {\n    key: \"blurInput\",\n    value: function blurInput() {\n      if (!this.inputRef) return;\n      this.inputRef.blur();\n    } // aliased for consumers\n\n  }, {\n    key: \"openMenu\",\n    value: function openMenu(focusOption) {\n      var _this2 = this;\n\n      var _this$state3 = this.state,\n          selectValue = _this$state3.selectValue,\n          isFocused = _this$state3.isFocused;\n      var menuOptions = this.buildMenuOptions(this.props, selectValue);\n      var _this$props11 = this.props,\n          isMulti = _this$props11.isMulti,\n          tabSelectsValue = _this$props11.tabSelectsValue;\n      var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n      if (!isMulti) {\n        var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n\n        if (selectedIndex > -1) {\n          openAtIndex = selectedIndex;\n        }\n      } // only scroll if the menu isn't already open\n\n\n      this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n      this.inputIsHiddenAfterUpdate = false;\n      this.setState({\n        menuOptions: menuOptions,\n        focusedValue: null,\n        focusedOption: menuOptions.focusable[openAtIndex]\n      }, function () {\n        _this2.onMenuOpen();\n\n        _this2.announceAriaLiveContext({\n          event: 'menu',\n          context: {\n            tabSelectsValue: tabSelectsValue\n          }\n        });\n      });\n    }\n  }, {\n    key: \"focusValue\",\n    value: function focusValue(direction) {\n      var _this$props12 = this.props,\n          isMulti = _this$props12.isMulti,\n          isSearchable = _this$props12.isSearchable;\n      var _this$state4 = this.state,\n          selectValue = _this$state4.selectValue,\n          focusedValue = _this$state4.focusedValue; // Only multiselects support value focusing\n\n      if (!isMulti) return;\n      this.setState({\n        focusedOption: null\n      });\n      var focusedIndex = selectValue.indexOf(focusedValue);\n\n      if (!focusedValue) {\n        focusedIndex = -1;\n        this.announceAriaLiveContext({\n          event: 'value'\n        });\n      }\n\n      var lastIndex = selectValue.length - 1;\n      var nextFocus = -1;\n      if (!selectValue.length) return;\n\n      switch (direction) {\n        case 'previous':\n          if (focusedIndex === 0) {\n            // don't cycle from the start to the end\n            nextFocus = 0;\n          } else if (focusedIndex === -1) {\n            // if nothing is focused, focus the last value first\n            nextFocus = lastIndex;\n          } else {\n            nextFocus = focusedIndex - 1;\n          }\n\n          break;\n\n        case 'next':\n          if (focusedIndex > -1 && focusedIndex < lastIndex) {\n            nextFocus = focusedIndex + 1;\n          }\n\n          break;\n      }\n\n      if (nextFocus === -1) {\n        this.announceAriaLiveContext({\n          event: 'input',\n          context: {\n            isSearchable: isSearchable,\n            isMulti: isMulti\n          }\n        });\n      }\n\n      this.setState({\n        inputIsHidden: nextFocus !== -1,\n        focusedValue: selectValue[nextFocus]\n      });\n    }\n  }, {\n    key: \"focusOption\",\n    value: function focusOption() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n      var _this$props13 = this.props,\n          pageSize = _this$props13.pageSize,\n          tabSelectsValue = _this$props13.tabSelectsValue;\n      var _this$state5 = this.state,\n          focusedOption = _this$state5.focusedOption,\n          menuOptions = _this$state5.menuOptions;\n      var options = menuOptions.focusable;\n      if (!options.length) return;\n      var nextFocus = 0; // handles 'first'\n\n      var focusedIndex = options.indexOf(focusedOption);\n\n      if (!focusedOption) {\n        focusedIndex = -1;\n        this.announceAriaLiveContext({\n          event: 'menu',\n          context: {\n            tabSelectsValue: tabSelectsValue\n          }\n        });\n      }\n\n      if (direction === 'up') {\n        nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n      } else if (direction === 'down') {\n        nextFocus = (focusedIndex + 1) % options.length;\n      } else if (direction === 'pageup') {\n        nextFocus = focusedIndex - pageSize;\n        if (nextFocus < 0) nextFocus = 0;\n      } else if (direction === 'pagedown') {\n        nextFocus = focusedIndex + pageSize;\n        if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n      } else if (direction === 'last') {\n        nextFocus = options.length - 1;\n      }\n\n      this.scrollToFocusedOptionOnUpdate = true;\n      this.setState({\n        focusedOption: options[nextFocus],\n        focusedValue: null\n      });\n      this.announceAriaLiveContext({\n        event: 'menu',\n        context: {\n          isDisabled: isOptionDisabled(options[nextFocus]),\n          tabSelectsValue: tabSelectsValue\n        }\n      });\n    }\n  }, {\n    key: \"getTheme\",\n    // ==============================\n    // Getters\n    // ==============================\n    value: function getTheme() {\n      // Use the default theme if there are no customizations.\n      if (!this.props.theme) {\n        return defaultTheme;\n      } // If the theme prop is a function, assume the function\n      // knows how to merge the passed-in default theme with\n      // its own modifications.\n\n\n      if (typeof this.props.theme === 'function') {\n        return this.props.theme(defaultTheme);\n      } // Otherwise, if a plain theme object was passed in,\n      // overlay it with the default theme.\n\n\n      return _objectSpread$2(_objectSpread$2({}, defaultTheme), this.props.theme);\n    }\n  }, {\n    key: \"getCommonProps\",\n    value: function getCommonProps() {\n      var clearValue = this.clearValue,\n          cx = this.cx,\n          getStyles = this.getStyles,\n          getValue = this.getValue,\n          setValue = this.setValue,\n          selectOption = this.selectOption,\n          props = this.props;\n      var isMulti = props.isMulti,\n          isRtl = props.isRtl,\n          options = props.options;\n      var hasValue = this.hasValue();\n      return {\n        cx: cx,\n        clearValue: clearValue,\n        getStyles: getStyles,\n        getValue: getValue,\n        hasValue: hasValue,\n        isMulti: isMulti,\n        isRtl: isRtl,\n        options: options,\n        selectOption: selectOption,\n        setValue: setValue,\n        selectProps: props,\n        theme: this.getTheme()\n      };\n    }\n  }, {\n    key: \"getNextFocusedValue\",\n    value: function getNextFocusedValue(nextSelectValue) {\n      if (this.clearFocusValueOnUpdate) {\n        this.clearFocusValueOnUpdate = false;\n        return null;\n      }\n\n      var _this$state6 = this.state,\n          focusedValue = _this$state6.focusedValue,\n          lastSelectValue = _this$state6.selectValue;\n      var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n      if (lastFocusedIndex > -1) {\n        var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n        if (nextFocusedIndex > -1) {\n          // the focused value is still in the selectValue, return it\n          return focusedValue;\n        } else if (lastFocusedIndex < nextSelectValue.length) {\n          // the focusedValue is not present in the next selectValue array by\n          // reference, so return the new value at the same index\n          return nextSelectValue[lastFocusedIndex];\n        }\n      }\n\n      return null;\n    }\n  }, {\n    key: \"getNextFocusedOption\",\n    value: function getNextFocusedOption(options) {\n      var lastFocusedOption = this.state.focusedOption;\n      return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n    }\n  }, {\n    key: \"hasValue\",\n    value: function hasValue() {\n      var selectValue = this.state.selectValue;\n      return selectValue.length > 0;\n    }\n  }, {\n    key: \"hasOptions\",\n    value: function hasOptions() {\n      return !!this.state.menuOptions.render.length;\n    }\n  }, {\n    key: \"countOptions\",\n    value: function countOptions() {\n      return this.state.menuOptions.focusable.length;\n    }\n  }, {\n    key: \"isClearable\",\n    value: function isClearable() {\n      var _this$props14 = this.props,\n          isClearable = _this$props14.isClearable,\n          isMulti = _this$props14.isMulti; // single select, by default, IS NOT clearable\n      // multi select, by default, IS clearable\n\n      if (isClearable === undefined) return isMulti;\n      return isClearable;\n    }\n  }, {\n    key: \"isOptionDisabled\",\n    value: function isOptionDisabled(option, selectValue) {\n      return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n    }\n  }, {\n    key: \"isOptionSelected\",\n    value: function isOptionSelected(option, selectValue) {\n      var _this3 = this;\n\n      if (selectValue.indexOf(option) > -1) return true;\n\n      if (typeof this.props.isOptionSelected === 'function') {\n        return this.props.isOptionSelected(option, selectValue);\n      }\n\n      var candidate = this.getOptionValue(option);\n      return selectValue.some(function (i) {\n        return _this3.getOptionValue(i) === candidate;\n      });\n    }\n  }, {\n    key: \"filterOption\",\n    value: function filterOption(option, inputValue) {\n      return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n    }\n  }, {\n    key: \"formatOptionLabel\",\n    value: function formatOptionLabel(data, context) {\n      if (typeof this.props.formatOptionLabel === 'function') {\n        var inputValue = this.props.inputValue;\n        var selectValue = this.state.selectValue;\n        return this.props.formatOptionLabel(data, {\n          context: context,\n          inputValue: inputValue,\n          selectValue: selectValue\n        });\n      } else {\n        return this.getOptionLabel(data);\n      }\n    }\n  }, {\n    key: \"formatGroupLabel\",\n    value: function formatGroupLabel(data) {\n      return this.props.formatGroupLabel(data);\n    } // ==============================\n    // Mouse Handlers\n    // ==============================\n\n  }, {\n    key: \"startListeningComposition\",\n    // ==============================\n    // Composition Handlers\n    // ==============================\n    value: function startListeningComposition() {\n      if (document && document.addEventListener) {\n        document.addEventListener('compositionstart', this.onCompositionStart, false);\n        document.addEventListener('compositionend', this.onCompositionEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningComposition\",\n    value: function stopListeningComposition() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('compositionstart', this.onCompositionStart);\n        document.removeEventListener('compositionend', this.onCompositionEnd);\n      }\n    }\n  }, {\n    key: \"startListeningToTouch\",\n    // ==============================\n    // Touch Handlers\n    // ==============================\n    value: function startListeningToTouch() {\n      if (document && document.addEventListener) {\n        document.addEventListener('touchstart', this.onTouchStart, false);\n        document.addEventListener('touchmove', this.onTouchMove, false);\n        document.addEventListener('touchend', this.onTouchEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningToTouch\",\n    value: function stopListeningToTouch() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('touchstart', this.onTouchStart);\n        document.removeEventListener('touchmove', this.onTouchMove);\n        document.removeEventListener('touchend', this.onTouchEnd);\n      }\n    }\n  }, {\n    key: \"constructAriaLiveMessage\",\n    // ==============================\n    // Renderers\n    // ==============================\n    value: function constructAriaLiveMessage() {\n      var _this$state7 = this.state,\n          ariaLiveContext = _this$state7.ariaLiveContext,\n          selectValue = _this$state7.selectValue,\n          focusedValue = _this$state7.focusedValue,\n          focusedOption = _this$state7.focusedOption;\n      var _this$props15 = this.props,\n          options = _this$props15.options,\n          menuIsOpen = _this$props15.menuIsOpen,\n          inputValue = _this$props15.inputValue,\n          screenReaderStatus = _this$props15.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n      var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n        focusedValue: focusedValue,\n        getOptionLabel: this.getOptionLabel,\n        selectValue: selectValue\n      }) : ''; // An aria live message representing the currently focused option in the select.\n\n      var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n        focusedOption: focusedOption,\n        getOptionLabel: this.getOptionLabel,\n        options: options\n      }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n      var resultsMsg = resultsAriaMessage({\n        inputValue: inputValue,\n        screenReaderMessage: screenReaderStatus({\n          count: this.countOptions()\n        })\n      });\n      return \"\".concat(focusedValueMsg, \" \").concat(focusedOptionMsg, \" \").concat(resultsMsg, \" \").concat(ariaLiveContext);\n    }\n  }, {\n    key: \"renderInput\",\n    value: function renderInput() {\n      var _this$props16 = this.props,\n          isDisabled = _this$props16.isDisabled,\n          isSearchable = _this$props16.isSearchable,\n          inputId = _this$props16.inputId,\n          inputValue = _this$props16.inputValue,\n          tabIndex = _this$props16.tabIndex,\n          form = _this$props16.form;\n      var Input = this.components.Input;\n      var inputIsHidden = this.state.inputIsHidden;\n      var id = inputId || this.getElementId('input'); // aria attributes makes the JSX \"noisy\", separated for clarity\n\n      var ariaAttributes = {\n        'aria-autocomplete': 'list',\n        'aria-label': this.props['aria-label'],\n        'aria-labelledby': this.props['aria-labelledby']\n      };\n\n      if (!isSearchable) {\n        // use a dummy input to maintain focus/blur functionality\n        return /*#__PURE__*/React.createElement(DummyInput, _extends({\n          id: id,\n          innerRef: this.getInputRef,\n          onBlur: this.onInputBlur,\n          onChange: noop,\n          onFocus: this.onInputFocus,\n          readOnly: true,\n          disabled: isDisabled,\n          tabIndex: tabIndex,\n          form: form,\n          value: \"\"\n        }, ariaAttributes));\n      }\n\n      var _this$commonProps = this.commonProps,\n          cx = _this$commonProps.cx,\n          theme = _this$commonProps.theme,\n          selectProps = _this$commonProps.selectProps;\n      return /*#__PURE__*/React.createElement(Input, _extends({\n        autoCapitalize: \"none\",\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        cx: cx,\n        getStyles: this.getStyles,\n        id: id,\n        innerRef: this.getInputRef,\n        isDisabled: isDisabled,\n        isHidden: inputIsHidden,\n        onBlur: this.onInputBlur,\n        onChange: this.handleInputChange,\n        onFocus: this.onInputFocus,\n        selectProps: selectProps,\n        spellCheck: \"false\",\n        tabIndex: tabIndex,\n        form: form,\n        theme: theme,\n        type: \"text\",\n        value: inputValue\n      }, ariaAttributes));\n    }\n  }, {\n    key: \"renderPlaceholderOrValue\",\n    value: function renderPlaceholderOrValue() {\n      var _this4 = this;\n\n      var _this$components = this.components,\n          MultiValue = _this$components.MultiValue,\n          MultiValueContainer = _this$components.MultiValueContainer,\n          MultiValueLabel = _this$components.MultiValueLabel,\n          MultiValueRemove = _this$components.MultiValueRemove,\n          SingleValue = _this$components.SingleValue,\n          Placeholder = _this$components.Placeholder;\n      var commonProps = this.commonProps;\n      var _this$props17 = this.props,\n          controlShouldRenderValue = _this$props17.controlShouldRenderValue,\n          isDisabled = _this$props17.isDisabled,\n          isMulti = _this$props17.isMulti,\n          inputValue = _this$props17.inputValue,\n          placeholder = _this$props17.placeholder;\n      var _this$state8 = this.state,\n          selectValue = _this$state8.selectValue,\n          focusedValue = _this$state8.focusedValue,\n          isFocused = _this$state8.isFocused;\n\n      if (!this.hasValue() || !controlShouldRenderValue) {\n        return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n          key: \"placeholder\",\n          isDisabled: isDisabled,\n          isFocused: isFocused\n        }), placeholder);\n      }\n\n      if (isMulti) {\n        var selectValues = selectValue.map(function (opt, index) {\n          var isOptionFocused = opt === focusedValue;\n          return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n            components: {\n              Container: MultiValueContainer,\n              Label: MultiValueLabel,\n              Remove: MultiValueRemove\n            },\n            isFocused: isOptionFocused,\n            isDisabled: isDisabled,\n            key: \"\".concat(_this4.getOptionValue(opt)).concat(index),\n            index: index,\n            removeProps: {\n              onClick: function onClick() {\n                return _this4.removeValue(opt);\n              },\n              onTouchEnd: function onTouchEnd() {\n                return _this4.removeValue(opt);\n              },\n              onMouseDown: function onMouseDown(e) {\n                e.preventDefault();\n                e.stopPropagation();\n              }\n            },\n            data: opt\n          }), _this4.formatOptionLabel(opt, 'value'));\n        });\n        return selectValues;\n      }\n\n      if (inputValue) {\n        return null;\n      }\n\n      var singleValue = selectValue[0];\n      return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n        data: singleValue,\n        isDisabled: isDisabled\n      }), this.formatOptionLabel(singleValue, 'value'));\n    }\n  }, {\n    key: \"renderClearIndicator\",\n    value: function renderClearIndicator() {\n      var ClearIndicator = this.components.ClearIndicator;\n      var commonProps = this.commonProps;\n      var _this$props18 = this.props,\n          isDisabled = _this$props18.isDisabled,\n          isLoading = _this$props18.isLoading;\n      var isFocused = this.state.isFocused;\n\n      if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n        return null;\n      }\n\n      var innerProps = {\n        onMouseDown: this.onClearIndicatorMouseDown,\n        onTouchEnd: this.onClearIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderLoadingIndicator\",\n    value: function renderLoadingIndicator() {\n      var LoadingIndicator = this.components.LoadingIndicator;\n      var commonProps = this.commonProps;\n      var _this$props19 = this.props,\n          isDisabled = _this$props19.isDisabled,\n          isLoading = _this$props19.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!LoadingIndicator || !isLoading) return null;\n      var innerProps = {\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderIndicatorSeparator\",\n    value: function renderIndicatorSeparator() {\n      var _this$components2 = this.components,\n          DropdownIndicator = _this$components2.DropdownIndicator,\n          IndicatorSeparator = _this$components2.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n      if (!DropdownIndicator || !IndicatorSeparator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderDropdownIndicator\",\n    value: function renderDropdownIndicator() {\n      var DropdownIndicator = this.components.DropdownIndicator;\n      if (!DropdownIndicator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      var innerProps = {\n        onMouseDown: this.onDropdownIndicatorMouseDown,\n        onTouchEnd: this.onDropdownIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderMenu\",\n    value: function renderMenu() {\n      var _this5 = this;\n\n      var _this$components3 = this.components,\n          Group = _this$components3.Group,\n          GroupHeading = _this$components3.GroupHeading,\n          Menu = _this$components3.Menu,\n          MenuList = _this$components3.MenuList,\n          MenuPortal = _this$components3.MenuPortal,\n          LoadingMessage = _this$components3.LoadingMessage,\n          NoOptionsMessage = _this$components3.NoOptionsMessage,\n          Option = _this$components3.Option;\n      var commonProps = this.commonProps;\n      var _this$state9 = this.state,\n          focusedOption = _this$state9.focusedOption,\n          menuOptions = _this$state9.menuOptions;\n      var _this$props20 = this.props,\n          captureMenuScroll = _this$props20.captureMenuScroll,\n          inputValue = _this$props20.inputValue,\n          isLoading = _this$props20.isLoading,\n          loadingMessage = _this$props20.loadingMessage,\n          minMenuHeight = _this$props20.minMenuHeight,\n          maxMenuHeight = _this$props20.maxMenuHeight,\n          menuIsOpen = _this$props20.menuIsOpen,\n          menuPlacement = _this$props20.menuPlacement,\n          menuPosition = _this$props20.menuPosition,\n          menuPortalTarget = _this$props20.menuPortalTarget,\n          menuShouldBlockScroll = _this$props20.menuShouldBlockScroll,\n          menuShouldScrollIntoView = _this$props20.menuShouldScrollIntoView,\n          noOptionsMessage = _this$props20.noOptionsMessage,\n          onMenuScrollToTop = _this$props20.onMenuScrollToTop,\n          onMenuScrollToBottom = _this$props20.onMenuScrollToBottom;\n      if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n      var render = function render(props) {\n        // for performance, the menu options in state aren't changed when the\n        // focused option changes so we calculate additional props based on that\n        var isFocused = focusedOption === props.data;\n        props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n        return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, props, {\n          isFocused: isFocused\n        }), _this5.formatOptionLabel(props.data, 'menu'));\n      };\n\n      var menuUI;\n\n      if (this.hasOptions()) {\n        menuUI = menuOptions.render.map(function (item) {\n          if (item.type === 'group') {\n            var type = item.type,\n                group = _objectWithoutProperties(item, [\"type\"]);\n\n            var headingId = \"\".concat(item.key, \"-heading\");\n            return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, group, {\n              Heading: GroupHeading,\n              headingProps: {\n                id: headingId,\n                data: item.data\n              },\n              label: _this5.formatGroupLabel(item.data)\n            }), item.options.map(function (option) {\n              return render(option);\n            }));\n          } else if (item.type === 'option') {\n            return render(item);\n          }\n        });\n      } else if (isLoading) {\n        var message = loadingMessage({\n          inputValue: inputValue\n        });\n        if (message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n      } else {\n        var _message = noOptionsMessage({\n          inputValue: inputValue\n        });\n\n        if (_message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n      }\n\n      var menuPlacementProps = {\n        minMenuHeight: minMenuHeight,\n        maxMenuHeight: maxMenuHeight,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition,\n        menuShouldScrollIntoView: menuShouldScrollIntoView\n      };\n      var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref10) {\n        var ref = _ref10.ref,\n            _ref10$placerProps = _ref10.placerProps,\n            placement = _ref10$placerProps.placement,\n            maxHeight = _ref10$placerProps.maxHeight;\n        return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n          innerRef: ref,\n          innerProps: {\n            onMouseDown: _this5.onMenuMouseDown,\n            onMouseMove: _this5.onMenuMouseMove\n          },\n          isLoading: isLoading,\n          placement: placement\n        }), /*#__PURE__*/React.createElement(ScrollCaptorSwitch, {\n          isEnabled: captureMenuScroll,\n          onTopArrive: onMenuScrollToTop,\n          onBottomArrive: onMenuScrollToBottom\n        }, /*#__PURE__*/React.createElement(ScrollBlock, {\n          isEnabled: menuShouldBlockScroll\n        }, /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n          innerRef: _this5.getMenuListRef,\n          isLoading: isLoading,\n          maxHeight: maxHeight\n        }), menuUI))));\n      }); // positioning behaviour is almost identical for portalled and fixed,\n      // so we use the same component. the actual portalling logic is forked\n      // within the component based on `menuPosition`\n\n      return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n        appendTo: menuPortalTarget,\n        controlElement: this.controlRef,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition\n      }), menuElement) : menuElement;\n    }\n  }, {\n    key: \"renderFormField\",\n    value: function renderFormField() {\n      var _this6 = this;\n\n      var _this$props21 = this.props,\n          delimiter = _this$props21.delimiter,\n          isDisabled = _this$props21.isDisabled,\n          isMulti = _this$props21.isMulti,\n          name = _this$props21.name;\n      var selectValue = this.state.selectValue;\n      if (!name || isDisabled) return;\n\n      if (isMulti) {\n        if (delimiter) {\n          var value = selectValue.map(function (opt) {\n            return _this6.getOptionValue(opt);\n          }).join(delimiter);\n          return /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: value\n          });\n        } else {\n          var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n            return /*#__PURE__*/React.createElement(\"input\", {\n              key: \"i-\".concat(i),\n              name: name,\n              type: \"hidden\",\n              value: _this6.getOptionValue(opt)\n            });\n          }) : /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\"\n          });\n          return /*#__PURE__*/React.createElement(\"div\", null, input);\n        }\n      } else {\n        var _value2 = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n        return /*#__PURE__*/React.createElement(\"input\", {\n          name: name,\n          type: \"hidden\",\n          value: _value2\n        });\n      }\n    }\n  }, {\n    key: \"renderLiveRegion\",\n    value: function renderLiveRegion() {\n      if (!this.state.isFocused) return null;\n      return /*#__PURE__*/React.createElement(A11yText, {\n        \"aria-live\": \"polite\"\n      }, /*#__PURE__*/React.createElement(\"span\", {\n        id: \"aria-selection-event\"\n      }, \"\\xA0\", this.state.ariaLiveSelection), /*#__PURE__*/React.createElement(\"span\", {\n        id: \"aria-context\"\n      }, \"\\xA0\", this.constructAriaLiveMessage()));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$components4 = this.components,\n          Control = _this$components4.Control,\n          IndicatorsContainer = _this$components4.IndicatorsContainer,\n          SelectContainer = _this$components4.SelectContainer,\n          ValueContainer = _this$components4.ValueContainer;\n      var _this$props22 = this.props,\n          className = _this$props22.className,\n          id = _this$props22.id,\n          isDisabled = _this$props22.isDisabled,\n          menuIsOpen = _this$props22.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      var commonProps = this.commonProps = this.getCommonProps();\n      return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n        className: className,\n        innerProps: {\n          id: id,\n          onKeyDown: this.onKeyDown\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n        innerRef: this.getControlRef,\n        innerProps: {\n          onMouseDown: this.onControlMouseDown,\n          onTouchEnd: this.onControlTouchEnd\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused,\n        menuIsOpen: menuIsOpen\n      }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n    }\n  }]);\n\n  return Select;\n}(Component);\n\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, defaultTheme as a, createFilter as c, defaultProps as d, mergeStyles as m };\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport React, { Component } from 'react';\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nvar defaultProps = {\n  defaultInputValue: '',\n  defaultMenuIsOpen: false,\n  defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class = /*#__PURE__*/function (_Component) {\n    _inherits(StateManager, _Component);\n\n    var _super = _createSuper(StateManager);\n\n    function StateManager() {\n      var _this;\n\n      _classCallCheck(this, StateManager);\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      _this = _super.call.apply(_super, [this].concat(args));\n      _this.select = void 0;\n      _this.state = {\n        inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n        menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n        value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n      };\n\n      _this.onChange = function (value, actionMeta) {\n        _this.callProp('onChange', value, actionMeta);\n\n        _this.setState({\n          value: value\n        });\n      };\n\n      _this.onInputChange = function (value, actionMeta) {\n        // TODO: for backwards compatibility, we allow the prop to return a new\n        // value, but now inputValue is a controllable prop we probably shouldn't\n        var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n        _this.setState({\n          inputValue: newValue !== undefined ? newValue : value\n        });\n      };\n\n      _this.onMenuOpen = function () {\n        _this.callProp('onMenuOpen');\n\n        _this.setState({\n          menuIsOpen: true\n        });\n      };\n\n      _this.onMenuClose = function () {\n        _this.callProp('onMenuClose');\n\n        _this.setState({\n          menuIsOpen: false\n        });\n      };\n\n      return _this;\n    }\n\n    _createClass(StateManager, [{\n      key: \"focus\",\n      value: function focus() {\n        this.select.focus();\n      }\n    }, {\n      key: \"blur\",\n      value: function blur() {\n        this.select.blur();\n      } // FIXME: untyped flow code, return any\n\n    }, {\n      key: \"getProp\",\n      value: function getProp(key) {\n        return this.props[key] !== undefined ? this.props[key] : this.state[key];\n      } // FIXME: untyped flow code, return any\n\n    }, {\n      key: \"callProp\",\n      value: function callProp(name) {\n        if (typeof this.props[name] === 'function') {\n          var _this$props;\n\n          for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n            args[_key2 - 1] = arguments[_key2];\n          }\n\n          return (_this$props = this.props)[name].apply(_this$props, args);\n        }\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n\n        var _this$props2 = this.props,\n            defaultInputValue = _this$props2.defaultInputValue,\n            defaultMenuIsOpen = _this$props2.defaultMenuIsOpen,\n            defaultValue = _this$props2.defaultValue,\n            props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n        return /*#__PURE__*/React.createElement(SelectComponent, _extends({}, props, {\n          ref: function ref(_ref) {\n            _this2.select = _ref;\n          },\n          inputValue: this.getProp('inputValue'),\n          menuIsOpen: this.getProp('menuIsOpen'),\n          onChange: this.onChange,\n          onInputChange: this.onInputChange,\n          onMenuClose: this.onMenuClose,\n          onMenuOpen: this.onMenuOpen,\n          value: this.getProp('value')\n        }));\n      }\n    }]);\n\n    return StateManager;\n  }(Component), _class.defaultProps = defaultProps, _temp;\n};\n\nexport { manageState as m };\n","import '@babel/runtime/helpers/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport '@babel/runtime/helpers/slicedToArray';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport '@babel/runtime/helpers/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport React, { Component } from 'react';\nimport 'memoize-one';\nimport '@emotion/core';\nimport 'react-dom';\nimport '@babel/runtime/helpers/typeof';\nimport { C as cleanValue } from '../../dist/index-75b02bac.browser.esm.js';\nimport { S as Select } from '../../dist/Select-e1cf49ae.browser.esm.js';\nimport '@emotion/css';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport 'react-input-autosize';\nimport { m as manageState } from '../../dist/stateManager-2f2b6f5b.browser.esm.js';\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar compareOption = function compareOption() {\n  var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var option = arguments.length > 1 ? arguments[1] : undefined;\n  var candidate = String(inputValue).toLowerCase();\n  var optionValue = String(option.value).toLowerCase();\n  var optionLabel = String(option.label).toLowerCase();\n  return optionValue === candidate || optionLabel === candidate;\n};\n\nvar builtins = {\n  formatCreateLabel: function formatCreateLabel(inputValue) {\n    return \"Create \\\"\".concat(inputValue, \"\\\"\");\n  },\n  isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions) {\n    return !(!inputValue || selectValue.some(function (option) {\n      return compareOption(inputValue, option);\n    }) || selectOptions.some(function (option) {\n      return compareOption(inputValue, option);\n    }));\n  },\n  getNewOptionData: function getNewOptionData(inputValue, optionLabel) {\n    return {\n      label: optionLabel,\n      value: inputValue,\n      __isNew__: true\n    };\n  }\n};\nvar defaultProps = _objectSpread({\n  allowCreateWhileLoading: false,\n  createOptionPosition: 'last'\n}, builtins);\nvar makeCreatableSelect = function makeCreatableSelect(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class = /*#__PURE__*/function (_Component) {\n    _inherits(Creatable, _Component);\n\n    var _super = _createSuper(Creatable);\n\n    function Creatable(props) {\n      var _this;\n\n      _classCallCheck(this, Creatable);\n\n      _this = _super.call(this, props);\n      _this.select = void 0;\n\n      _this.onChange = function (newValue, actionMeta) {\n        var _this$props = _this.props,\n            getNewOptionData = _this$props.getNewOptionData,\n            inputValue = _this$props.inputValue,\n            isMulti = _this$props.isMulti,\n            onChange = _this$props.onChange,\n            onCreateOption = _this$props.onCreateOption,\n            value = _this$props.value,\n            name = _this$props.name;\n\n        if (actionMeta.action !== 'select-option') {\n          return onChange(newValue, actionMeta);\n        }\n\n        var newOption = _this.state.newOption;\n        var valueArray = Array.isArray(newValue) ? newValue : [newValue];\n\n        if (valueArray[valueArray.length - 1] === newOption) {\n          if (onCreateOption) onCreateOption(inputValue);else {\n            var newOptionData = getNewOptionData(inputValue, inputValue);\n            var newActionMeta = {\n              action: 'create-option',\n              name: name\n            };\n\n            if (isMulti) {\n              onChange([].concat(_toConsumableArray(cleanValue(value)), [newOptionData]), newActionMeta);\n            } else {\n              onChange(newOptionData, newActionMeta);\n            }\n          }\n          return;\n        }\n\n        onChange(newValue, actionMeta);\n      };\n\n      var options = props.options || [];\n      _this.state = {\n        newOption: undefined,\n        options: options\n      };\n      return _this;\n    }\n\n    _createClass(Creatable, [{\n      key: \"UNSAFE_componentWillReceiveProps\",\n      value: function UNSAFE_componentWillReceiveProps(nextProps) {\n        var allowCreateWhileLoading = nextProps.allowCreateWhileLoading,\n            createOptionPosition = nextProps.createOptionPosition,\n            formatCreateLabel = nextProps.formatCreateLabel,\n            getNewOptionData = nextProps.getNewOptionData,\n            inputValue = nextProps.inputValue,\n            isLoading = nextProps.isLoading,\n            isValidNewOption = nextProps.isValidNewOption,\n            value = nextProps.value;\n        var options = nextProps.options || [];\n        var newOption = this.state.newOption;\n\n        if (isValidNewOption(inputValue, cleanValue(value), options)) {\n          newOption = getNewOptionData(inputValue, formatCreateLabel(inputValue));\n        } else {\n          newOption = undefined;\n        }\n\n        this.setState({\n          newOption: newOption,\n          options: (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat(_toConsumableArray(options)) : [].concat(_toConsumableArray(options), [newOption]) : options\n        });\n      }\n    }, {\n      key: \"focus\",\n      value: function focus() {\n        this.select.focus();\n      }\n    }, {\n      key: \"blur\",\n      value: function blur() {\n        this.select.blur();\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n\n        var options = this.state.options;\n        return /*#__PURE__*/React.createElement(SelectComponent, _extends({}, this.props, {\n          ref: function ref(_ref) {\n            _this2.select = _ref;\n          },\n          options: options,\n          onChange: this.onChange\n        }));\n      }\n    }]);\n\n    return Creatable;\n  }(Component), _class.defaultProps = defaultProps, _temp;\n}; // TODO: do this in package entrypoint\n\nvar SelectCreatable = makeCreatableSelect(Select);\nvar Creatable = manageState(SelectCreatable);\n\nexport default Creatable;\nexport { defaultProps, makeCreatableSelect };\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport CreatableSelect from 'react-select/creatable';\n\nimport './CreatableDropdown.scss'\n\nconst CreatableDropdown = ({\n  onChange,\n  onInputChange,\n  options,\n  onCreateOption,\n  textPlaceholder,\n  value,\n  isClearable,\n  isValid,\n  messageText,\n}) => {\n  const { t } = useTranslation();\n\n  const customStyles = {\n    control: (provided, state) => {\n      return {\n        ...provided,\n        borderColor: state.selectProps.isValid ? 'hsl(0, 0%, 80%)' : 'hsl(28, 80%, 52%)',\n        boxShadow: state.selectProps.isValid ? null : '0 0 0 2px rgba(230, 126, 34, 0.4)',\n        '&:hover': {\n          borderColor: state.selectProps.isValid ? 'hsl(0, 0%, 70%)' : 'hsl(28, 80%, 52%)',\n        }\n      }\n    }\n  };\n\n  return (\n    <div>\n      <CreatableSelect\n        isClearable={isClearable}\n        onChange={onChange}\n        onInputChange={onInputChange}\n        options={options}\n        onCreateOption={onCreateOption}\n        placeholder={textPlaceholder}\n        formatCreateLabel={(value) => `${t('action.create')} ${value}`}\n        value={value}\n        styles={customStyles}\n        isValid={isValid}\n      />\n      {messageText ? <div className=\"messageText\">{messageText}</div> : undefined}\n    </div>\n  );\n}\n\nexport default CreatableDropdown","import CreatableDropdown from './CreatableDropdown'\n\nexport default CreatableDropdown;","import { useContext } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { DndContext } from '../core';\n/**\n * A hook to retrieve the DragDropManager from Context\n */\n\nexport function useDragDropManager() {\n  var _useContext = useContext(DndContext),\n      dragDropManager = _useContext.dragDropManager;\n\n  invariant(dragDropManager != null, 'Expected drag drop context');\n  return dragDropManager;\n}","import { useLayoutEffect, useEffect } from 'react'; // suppress the useLayoutEffect warning on server side.\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var DropTargetImpl = /*#__PURE__*/function () {\n  function DropTargetImpl(spec, monitor) {\n    _classCallCheck(this, DropTargetImpl);\n\n    _defineProperty(this, \"spec\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    this.spec = spec;\n    this.monitor = monitor;\n  }\n\n  _createClass(DropTargetImpl, [{\n    key: \"canDrop\",\n    value: function canDrop() {\n      var spec = this.spec;\n      var monitor = this.monitor;\n      return spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true;\n    }\n  }, {\n    key: \"hover\",\n    value: function hover() {\n      var spec = this.spec;\n      var monitor = this.monitor;\n\n      if (spec.hover) {\n        spec.hover(monitor.getItem(), monitor);\n      }\n    }\n  }, {\n    key: \"drop\",\n    value: function drop() {\n      var spec = this.spec;\n      var monitor = this.monitor;\n\n      if (spec.drop) {\n        return spec.drop(monitor.getItem(), monitor);\n      }\n    }\n  }]);\n\n  return DropTargetImpl;\n}();","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { registerTarget } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\nimport { useAccept } from './useAccept';\nimport { useDropTarget } from './useDropTarget';\nexport function useRegisteredDropTarget(spec, monitor, connector) {\n  var manager = useDragDropManager();\n  var dropTarget = useDropTarget(spec, monitor);\n  var accept = useAccept(spec);\n  useIsomorphicLayoutEffect(function registerDropTarget() {\n    var _registerTarget = registerTarget(accept, dropTarget, manager),\n        _registerTarget2 = _slicedToArray(_registerTarget, 2),\n        handlerId = _registerTarget2[0],\n        unregister = _registerTarget2[1];\n\n    monitor.receiveHandlerId(handlerId);\n    connector.receiveHandlerId(handlerId);\n    return unregister;\n  }, [manager, monitor, dropTarget, connector, accept.map(function (a) {\n    return a.toString();\n  }).join('|')]);\n}","import { useEffect, useMemo } from 'react';\nimport { DropTargetImpl } from './DropTargetImpl';\nexport function useDropTarget(spec, monitor) {\n  var dropTarget = useMemo(function () {\n    return new DropTargetImpl(spec, monitor);\n  }, [monitor]);\n  useEffect(function () {\n    dropTarget.spec = spec;\n  }, [spec]);\n  return dropTarget;\n}","import { invariant } from '@react-dnd/invariant';\nimport { useMemo } from 'react';\n/**\n * Internal utility hook to get an array-version of spec.accept.\n * The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.\n * @param spec\n */\n\nexport function useAccept(spec) {\n  var accept = spec.accept;\n  return useMemo(function () {\n    invariant(spec.accept != null, 'accept must be defined');\n    return Array.isArray(accept) ? accept : [accept];\n  }, [accept]);\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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\nimport { useMemo } from 'react';\nexport function useOptionalFactory(arg, deps) {\n  var memoDeps = _toConsumableArray(deps || []);\n\n  if (deps == null && typeof arg !== 'function') {\n    memoDeps.push(arg);\n  }\n\n  return useMemo(function () {\n    return typeof arg === 'function' ? arg() : arg;\n  }, memoDeps);\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport equal from 'fast-deep-equal';\nimport { useState, useCallback } from 'react';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\n\nexport function useCollector(monitor, collect, onUpdate) {\n  var _useState = useState(function () {\n    return collect(monitor);\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      collected = _useState2[0],\n      setCollected = _useState2[1];\n\n  var updateCollected = useCallback(function () {\n    var nextValue = collect(monitor); // This needs to be a deep-equality check because some monitor-collected values\n    // include XYCoord objects that may be equivalent, but do not have instance equality.\n\n    if (!equal(collected, nextValue)) {\n      setCollected(nextValue);\n\n      if (onUpdate) {\n        onUpdate();\n      }\n    }\n  }, [collected, monitor, onUpdate]); // update the collected properties after react renders.\n  // Note that the \"Dustbin Stress Test\" fails if this is not\n  // done when the component updates\n\n  useIsomorphicLayoutEffect(updateCollected);\n  return [collected, updateCollected];\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useCollector } from './useCollector';\nexport function useMonitorOutput(monitor, collect, onCollect) {\n  var _useCollector = useCollector(monitor, collect, onCollect),\n      _useCollector2 = _slicedToArray(_useCollector, 2),\n      collected = _useCollector2[0],\n      updateCollected = _useCollector2[1];\n\n  useIsomorphicLayoutEffect(function subscribeToMonitorStateChange() {\n    var handlerId = monitor.getHandlerId();\n\n    if (handlerId == null) {\n      return;\n    }\n\n    return monitor.subscribeToStateChange(updateCollected, {\n      handlerIds: [handlerId]\n    });\n  }, [monitor, updateCollected]);\n  return collected;\n}","import { useMonitorOutput } from './useMonitorOutput';\nexport function useCollectedProps(collector, monitor, connector) {\n  return useMonitorOutput(monitor, collector || function () {\n    return {};\n  }, function () {\n    return connector.reconnect();\n  });\n}","import { useMemo } from 'react';\nexport function useConnectDropTarget(connector) {\n  return useMemo(function () {\n    return connector.hooks.dropTarget();\n  }, [connector]);\n}","import { useRegisteredDropTarget } from './useRegisteredDropTarget';\nimport { useOptionalFactory } from '../useOptionalFactory';\nimport { useDropTargetMonitor } from './useDropTargetMonitor';\nimport { useDropTargetConnector } from './useDropTargetConnector';\nimport { useCollectedProps } from '../useCollectedProps';\nimport { useConnectDropTarget } from './connectors';\n/**\n * useDropTarget Hook\n * @param spec The drop target specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\n\nexport function useDrop(specArg, deps) {\n  var spec = useOptionalFactory(specArg, deps);\n  var monitor = useDropTargetMonitor();\n  var connector = useDropTargetConnector(spec.options);\n  useRegisteredDropTarget(spec, monitor, connector);\n  return [useCollectedProps(spec.collect, monitor, connector), useConnectDropTarget(connector)];\n}","import { useMemo } from 'react';\nimport { DropTargetMonitorImpl } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nexport function useDropTargetMonitor() {\n  var manager = useDragDropManager();\n  return useMemo(function () {\n    return new DropTargetMonitorImpl(manager);\n  }, [manager]);\n}","import { useMemo } from 'react';\nimport { TargetConnector } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\nexport function useDropTargetConnector(options) {\n  var manager = useDragDropManager();\n  var connector = useMemo(function () {\n    return new TargetConnector(manager.getBackend());\n  }, [manager]);\n  useIsomorphicLayoutEffect(function () {\n    connector.dropTargetOptions = options || null;\n    connector.reconnect();\n    return function () {\n      return connector.disconnectDropTarget();\n    };\n  }, [options]);\n  return connector;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var DragSourceImpl = /*#__PURE__*/function () {\n  function DragSourceImpl(spec, monitor, connector) {\n    _classCallCheck(this, DragSourceImpl);\n\n    _defineProperty(this, \"spec\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"connector\", void 0);\n\n    this.spec = spec;\n    this.monitor = monitor;\n    this.connector = connector;\n  }\n\n  _createClass(DragSourceImpl, [{\n    key: \"beginDrag\",\n    value: function beginDrag() {\n      var _result;\n\n      var spec = this.spec;\n      var monitor = this.monitor;\n      var result = null;\n\n      if (_typeof(spec.item) === 'object') {\n        result = spec.item;\n      } else if (typeof spec.item === 'function') {\n        result = spec.item(monitor);\n      } else {\n        result = {};\n      }\n\n      return (_result = result) !== null && _result !== void 0 ? _result : null;\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      var spec = this.spec;\n      var monitor = this.monitor;\n\n      if (typeof spec.canDrag === 'boolean') {\n        return spec.canDrag;\n      } else if (typeof spec.canDrag === 'function') {\n        return spec.canDrag(monitor);\n      } else {\n        return true;\n      }\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging(globalMonitor, target) {\n      var spec = this.spec;\n      var monitor = this.monitor;\n      var isDragging = spec.isDragging;\n      return isDragging ? isDragging(monitor) : target === globalMonitor.getSourceId();\n    }\n  }, {\n    key: \"endDrag\",\n    value: function endDrag() {\n      var spec = this.spec;\n      var monitor = this.monitor;\n      var connector = this.connector;\n      var end = spec.end;\n\n      if (end) {\n        end(monitor.getItem(), monitor);\n      }\n\n      connector.reconnect();\n    }\n  }]);\n\n  return DragSourceImpl;\n}();","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { registerSource } from '../../internals';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\nimport { useDragSource } from './useDragSource';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { useDragType } from './useDragType';\nexport function useRegisteredDragSource(spec, monitor, connector) {\n  var manager = useDragDropManager();\n  var handler = useDragSource(spec, monitor, connector);\n  var itemType = useDragType(spec);\n  useIsomorphicLayoutEffect(function registerDragSource() {\n    if (itemType != null) {\n      var _registerSource = registerSource(itemType, handler, manager),\n          _registerSource2 = _slicedToArray(_registerSource, 2),\n          handlerId = _registerSource2[0],\n          unregister = _registerSource2[1];\n\n      monitor.receiveHandlerId(handlerId);\n      connector.receiveHandlerId(handlerId);\n      return unregister;\n    }\n  }, [manager, monitor, connector, handler, itemType]);\n}","import { useEffect, useMemo } from 'react';\nimport { DragSourceImpl } from './DragSourceImpl';\nexport function useDragSource(spec, monitor, connector) {\n  var handler = useMemo(function () {\n    return new DragSourceImpl(spec, monitor, connector);\n  }, [monitor, connector]);\n  useEffect(function () {\n    handler.spec = spec;\n  }, [spec]);\n  return handler;\n}","import { invariant } from '@react-dnd/invariant';\nimport { useMemo } from 'react';\nexport function useDragType(spec) {\n  return useMemo(function () {\n    var result = spec.type;\n    invariant(result != null, 'spec.type must be defined');\n    return result;\n  }, [spec]);\n}","import { useMemo } from 'react';\nexport function useConnectDragSource(connector) {\n  return useMemo(function () {\n    return connector.hooks.dragSource();\n  }, [connector]);\n}\nexport function useConnectDragPreview(connector) {\n  return useMemo(function () {\n    return connector.hooks.dragPreview();\n  }, [connector]);\n}","import { useRegisteredDragSource } from './useRegisteredDragSource';\nimport { useOptionalFactory } from '../useOptionalFactory';\nimport { useDragSourceMonitor } from './useDragSourceMonitor';\nimport { useDragSourceConnector } from './useDragSourceConnector';\nimport { useCollectedProps } from '../useCollectedProps';\nimport { useConnectDragPreview, useConnectDragSource } from './connectors';\nimport { invariant } from '@react-dnd/invariant';\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\n\nexport function useDrag(specArg, deps) {\n  var spec = useOptionalFactory(specArg, deps);\n  invariant(!spec.begin, \"useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)\");\n  var monitor = useDragSourceMonitor();\n  var connector = useDragSourceConnector(spec.options, spec.previewOptions);\n  useRegisteredDragSource(spec, monitor, connector);\n  return [useCollectedProps(spec.collect, monitor, connector), useConnectDragSource(connector), useConnectDragPreview(connector)];\n}","import { useMemo } from 'react';\nimport { DragSourceMonitorImpl } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nexport function useDragSourceMonitor() {\n  var manager = useDragDropManager();\n  return useMemo(function () {\n    return new DragSourceMonitorImpl(manager);\n  }, [manager]);\n}","import { useMemo } from 'react';\nimport { SourceConnector } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\nexport function useDragSourceConnector(dragSourceOptions, dragPreviewOptions) {\n  var manager = useDragDropManager();\n  var connector = useMemo(function () {\n    return new SourceConnector(manager.getBackend());\n  }, [manager]);\n  useIsomorphicLayoutEffect(function () {\n    connector.dragSourceOptions = dragSourceOptions || null;\n    connector.reconnect();\n    return function () {\n      return connector.disconnectDragSource();\n    };\n  }, [connector, dragSourceOptions]);\n  useIsomorphicLayoutEffect(function () {\n    connector.dragPreviewOptions = dragPreviewOptions || null;\n    connector.reconnect();\n    return function () {\n      return connector.disconnectDragPreview();\n    };\n  }, [connector, dragPreviewOptions]);\n  return connector;\n}","import React, { useRef, useCallback } from 'react';\nimport Button from '../Button';\nimport { useDrag, useDrop } from 'react-dnd'\nimport Icon from 'components/Icon';\n\nimport './CreatableList.scss';\n\nconst CreatableListItem = ({\n  option,\n  index,\n  onChange,\n  onDeleteItem,\n  moveListItem,\n  id,\n  addItem,\n}) => {\n\n  const ItemTypes = {\n    ITEM: 'item'\n  };\n\n  const ref = useRef(null);\n\n  const [, drop] = useDrop({\n    accept: ItemTypes.ITEM,\n    hover(item, monitor) {\n      if (!ref.current) {\n        return\n      }\n      const dragIndex = item.index\n      const hoverIndex = index\n\n      // Don't replace items with themselves\n      if (dragIndex === hoverIndex) {\n        return\n      }\n\n      // Determine rectangle on screen\n      const hoverBoundingRect = ref.current?.getBoundingClientRect();\n\n      // Get vertical middle\n      const hoverMiddleY =\n        (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n\n      // Determine mouse position\n      const clientOffset = monitor.getClientOffset();\n\n      // Get pixels to the top\n      const hoverClientY = (clientOffset).y - hoverBoundingRect.top;\n\n      // Only perform the move when the mouse has crossed half of the items height\n      // When dragging downwards, only move when the cursor is below 50%\n      // When dragging upwards, only move when the cursor is above 50%\n\n      // Dragging downwards\n      if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n        return;\n      }\n\n      // Dragging upwards\n      if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n        return;\n      }\n\n      // Time to actually perform the action\n      moveListItem(dragIndex, hoverIndex);\n\n      // Note: we're mutating the monitor item here!\n      // Generally it's better to avoid mutations,\n      // but it's good here for the sake of performance\n      // to avoid expensive index searches.\n      item.index = hoverIndex;\n    },\n  })\n\n  const [{ isDragging }, drag] = useDrag({\n    type: ItemTypes.ITEM,\n    item: { type: ItemTypes.ITEM, id, index },\n    collect: (monitor) => ({\n      isDragging: monitor.isDragging(),\n    }),\n  });\n\n  const onChangeHandler = useCallback((event) => {\n    onChange(event.target.value);\n  }, [onChange])\n\n  const addNewItemOnEnterKey = useCallback((event) => {\n    if (event.key === 'Enter') {\n      addItem();\n    }\n  }, [addItem])\n\n  drag(drop(ref));\n\n  const opacity = isDragging ? 0 : 1;\n\n  return (\n    <div ref={ref} style={{ opacity }} className=\"creatable-list-item\">\n      <div className=\"icon-handle\">\n        <Icon\n          glyph=\"icon-drag-handle\"\n        />\n      </div>\n      <input\n        type=\"text\"\n        onChange={onChangeHandler}\n        value={option.displayValue}\n        onKeyPress={addNewItemOnEnterKey}\n        autoFocus\n      />\n      <Button\n        title=\"action.delete\"\n        img=\"icon-delete-line\"\n        onClick={onDeleteItem}\n      />\n    </div>\n  )\n}\n\nexport default CreatableListItem;","import React, { useEffect, useState, useCallback } from 'react';\nimport Button from '../Button';\nimport { useTranslation } from 'react-i18next';\nimport CreatableListItem from './CreatableListItem'\n\nimport './CreatableList.scss';\n\nconst CreatableListContainer = ({\n  options,\n  onOptionsUpdated,\n}) => {\n  const { t } = useTranslation();\n\n  // In order to be draggable, each item needs a unique Id\n  // These are managed internally in this component and not exposed to the user\n  const draggableItems = options.map((option, index) => {\n    return {\n      id: index,\n      displayValue: option.displayValue,\n      value: option.value,\n    }\n  });\n  const [items, setItems] = useState(draggableItems);\n  const [nextId, setNextId] = useState(draggableItems.length);\n\n\n  useEffect(() => {\n    const sanitizedOptions = items.map(item => ({ value: item.value, displayValue: item.displayValue }));\n    onOptionsUpdated(sanitizedOptions);\n  }, [items, onOptionsUpdated]);\n\n  const onAddItem = useCallback(() => {\n    const id = nextId;\n    setNextId(nextId + 1);\n    setItems([...items, { id, value: '', displayValue: '' }]);\n  }, [nextId, items]);\n\n  const handleDeleteItem = id => () => {\n    const updatedItems = items.filter(item => {\n      return id !== item.id;\n    });\n\n    setItems(updatedItems);\n  };\n\n  const handleItemValueChange = id => value => {\n    const updatedItems = items.map(item => {\n      if (item.id !== id) {\n        return item;\n      } else {\n        return { ...item, value: value, displayValue: value };\n      }\n    });\n\n    setItems(updatedItems);\n  };\n\n  // We add this helper function that doesn't mutate the original array\n  // This way we dont need to add a package like immutability-helper as this is the only use case\n  function addItemAtIndex(array, index, value) {\n    const result = array.slice(0);\n    result.splice(index, 0, value);\n    return result;\n  }\n\n  const moveListItem = useCallback(\n    (dragIndex, hoverIndex) => {\n      const dragItem = items[dragIndex];\n\n      // Update items array without mutating original items array for perf reasons\n      // First we remove the element being dragged\n      const itemsWithoutDraggedElement = items.filter((_item, index) => index !== dragIndex);\n      // Now we add the dragged element at the index it's currently hovering\n      const itemsWithDraggedElementAtNewPosition = addItemAtIndex(itemsWithoutDraggedElement, hoverIndex, dragItem);\n\n      setItems(itemsWithDraggedElementAtNewPosition);\n    },\n    [items],\n  );\n\n  return (\n    <div>\n      <div className=\"creatable-list\">\n        {items.map((item, index) => (\n          <CreatableListItem\n            key={item.id}\n            index={index}\n            id={item.id}\n            option={item}\n            onChange={handleItemValueChange(item.id)}\n            onDeleteItem={handleDeleteItem(item.id)}\n            moveListItem={moveListItem}\n            addItem={onAddItem}\n          />\n        ))}\n      </div>\n      <Button\n        title={t('action.addOption')}\n        className=\"add-item-button\"\n        label={t('action.addOption')}\n        img=\"icon-plus-sign\"\n        onClick={onAddItem} />\n    </div>\n  )\n}\n\nexport default CreatableListContainer;","import CreatableList from './CreatableListContainer'\n\nexport default CreatableList;","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport Button from '../Button';\nimport { useTranslation } from 'react-i18next';\nimport { Choice, Input } from '@pdftron/webviewer-react-toolkit';\nimport CreatableDropdown from '../CreatableDropdown';\n\n\nimport './FormFieldEditPopup.scss';\nimport CreatableList from '../CreatableList';\n\nconst FormFieldEditPopup = ({\n  fields,\n  flags,\n  closeFormFieldEditPopup,\n  isValid,\n  validationMessage,\n  radioButtonGroups,\n  options,\n  onOptionsChange,\n  annotation,\n  selectedRadioGroup,\n  getPageHeight,\n  getPageWidth,\n  redrawAnnotation,\n}) => {\n  const { t } = useTranslation();\n  const className = classNames({\n    Popup: true,\n    FormFieldEditPopup: true,\n  });\n\n  const [width, setWidth] = useState((annotation.Width).toFixed(0));\n  const [height, setHeight] = useState((annotation.Height).toFixed(0));\n\n  const [initialWidth] = useState((annotation.Width).toFixed(0));\n  const [initialHeight] = useState((annotation.Height).toFixed(0));\n\n  // If no radio group is yet set, set this as null as the select input will then show the correct prompt\n  const [radioButtonGroup, setRadioButtonGroup] = useState(selectedRadioGroup === '' ? null : { value: selectedRadioGroup, label: selectedRadioGroup });\n\n  useEffect(() => {\n    // When we open up the popup the async call to set the right radio group may not be finished\n    // we deal with this timing issue by updating state when the prop is refreshed\n    if (selectedRadioGroup !== '') {\n      setRadioButtonGroup({ value: selectedRadioGroup, label: selectedRadioGroup })\n    } else {\n      setRadioButtonGroup(null)\n    }\n  }, [selectedRadioGroup])\n\n  function onSelectInputChange(field, input) {\n    if (input === null) {\n      field.onChange('');\n      setRadioButtonGroup(null);\n\n    } else {\n      field.onChange(input.value);\n      setRadioButtonGroup({ value: input.value, label: input.value })\n    }\n  };\n\n  function onWidthChange(width) {\n    const validatedWidth = validateWidth(width);\n    annotation.setWidth(validatedWidth);\n    setWidth(validatedWidth);\n    redrawAnnotation(annotation);\n  };\n\n  function onHeightChange(height) {\n    const validatedHeight = validateHeight(height);\n    annotation.setHeight(validatedHeight);\n    setHeight(validatedHeight);\n    redrawAnnotation(annotation);\n  };\n\n  function validateWidth(width) {\n    const documentWidth = getPageWidth();\n    const maxWidth = documentWidth - annotation.X;\n    if (width > maxWidth) {\n      return maxWidth;\n    } else {\n      return width;\n    }\n  };\n\n  function validateHeight(height) {\n    const documentHeight = getPageHeight();\n    const maxHeight = documentHeight - annotation.Y;\n    if (height > maxHeight) {\n      return maxHeight;\n    } else {\n      return height;\n    }\n  };\n\n  function onCancel() {\n    // If width/height changed return to original values\n    if (width !== initialWidth || height !== initialHeight) {\n      annotation.setWidth(initialWidth);\n      annotation.setHeight(initialHeight);\n    }\n    redrawAnnotation(annotation);\n    closeFormFieldEditPopup();\n  };\n\n  function renderInput(field) {\n    if (field.type === 'text') {\n      return renderTextInput(field);\n    } else if (field.type === 'select') {\n      return renderSelectInput(field);\n    }\n  };\n\n  function renderTextInput(field) {\n    return (\n      <Input\n        type=\"text\"\n        onChange={event => field.onChange(event.target.value)}\n        value={field.value}\n        fillWidth=\"false\"\n        messageText={field.required && !isValid ? t(validationMessage) : ''}\n        message={field.required && !isValid ? 'warning' : 'default'}\n        autoFocus={field.focus}\n      />\n    )\n  };\n\n  function renderSelectInput(field) {\n    const displayRadioGroups = radioButtonGroups.map(group => ({ value: group, label: group }));\n    return (\n      <>\n        <CreatableDropdown\n          textPlaceholder={t('formField.formFieldPopup.fieldName')}\n          options={displayRadioGroups}\n          onChange={(inputValue) => onSelectInputChange(field, inputValue)}\n          value={radioButtonGroup}\n          isValid={isValid}\n          messageText={t(validationMessage)}\n        />\n        <div className='radio-group-label'>{t('formField.formFieldPopup.radioGroups')}</div>\n      </>)\n  };\n\n  function renderListOptions() {\n    return (\n      <div className=\"field-options-container\">\n        {t('formField.formFieldPopup.options')}\n        <CreatableList\n          options={options}\n          onOptionsUpdated={onOptionsChange}\n        />\n      </div>\n    )\n  };\n\n  return (\n    <div className={className}>\n      <div className=\"fields-container\">\n        {fields.map(field => (\n          <div className=\"field-input\" key={field.label}>\n            <label>\n              {t(field.label)}{field.required ? '*' : ''}:\n            </label>\n            {renderInput(field)}\n          </div>\n        ))}\n      </div>\n      {options && renderListOptions()}\n      <div className=\"field-flags-container\">\n        <span className=\"field-flags-title\">{t('formField.formFieldPopup.flags')}</span>\n        {flags.map(flag => (\n          <Choice\n            key={flag.label}\n            checked={flag.isChecked}\n            onChange={event => flag.onChange(event.target.checked)}\n            label={t(flag.label)} />\n        ))}\n      </div>\n      <DimensionsInput\n        width={width}\n        height={height}\n        onWidthChange={onWidthChange}\n        onHeightChange={onHeightChange}\n      />\n      <div className=\"form-buttons-container\">\n        <Button\n          className=\"cancel-form-field-button\"\n          onClick={onCancel}\n          dataElement=\"formFieldCancel\"\n          label={t('formField.formFieldPopup.cancel')}\n        />\n        <Button\n          className=\"ok-form-field-button\"\n          onClick={closeFormFieldEditPopup}\n          dataElement=\"formFieldOK\"\n          label={t('action.ok')}\n          disabled={!isValid}\n        />\n      </div>\n    </div>\n  );\n};\n\nconst DimensionsInput = ({ width, height, onWidthChange, onHeightChange }) => {\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"form-dimension\">\n      <div>{t(\"formField.formFieldPopup.size\")}:</div>\n      <div className=\"form-dimension-input\">\n        <input\n          id='form-field-width'\n          type=\"number\"\n          min={0}\n          value={width}\n          onChange={(e) => onWidthChange(e.target.value)}\n        /> {t(\"formField.formFieldPopup.width\")}\n      </div>\n      <div className=\"form-dimension-input\">\n        <input\n          id=\"form-field-height\"\n          type=\"number\"\n          min={0}\n          value={height}\n          onChange={(e) => onHeightChange(e.target.value)}\n        /> {t(\"formField.formFieldPopup.height\")}\n      </div>\n    </div>\n  );\n};\nexport default FormFieldEditPopup;\n","import useOnFormFieldAnnotationAddedOrSelected from './useOnFormFieldAnnotationAddedOrSelected';\n\nexport default useOnFormFieldAnnotationAddedOrSelected;","import { useEffect, useState } from 'react'\nimport core from 'core';\n\nexport default function useOnFormFieldAnnotationAddedOrSelected(openFormFieldPopup) {\n  const [annotation, setAnnotation] = useState(null);\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'add' && annotation.isFormFieldPlaceholder() && annotation.getCustomData('trn-editing-widget-id') === '') {\n        setAnnotation(annotations[0]);\n        openFormFieldPopup();\n      }\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      if (action === 'selected' && annotations.length && annotations[0].isFormFieldPlaceholder()) {\n        setAnnotation(annotations[0]);\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n\n  return annotation;\n}","import React, { useEffect, useState, useRef, useLayoutEffect, useCallback } from 'react';\nimport Draggable from 'react-draggable';\nimport core from 'core';\nimport FormFieldEditPopup from './FormFieldEditPopup';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport classNames from 'classnames';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport { getAnnotationPopupPositionBasedOn } from 'helpers/getPopupPosition';\nimport useOnFormFieldAnnotationAddedOrSelected from '../../hooks/useOnFormFieldAnnotationAddedOrSelected';\nimport DataElementWrapper from '../DataElementWrapper';\nimport useMedia from '../../hooks/useMedia';\nimport './FormFieldEditPopup.scss';\n\nfunction FormFieldEditPopupContainer() {\n  const formFieldCreationManager = core.getFormFieldCreationManager();\n  const fieldLabels = formFieldCreationManager.getFieldLabels();\n  const [fieldName, setFieldName] = useState('');\n  const [fieldValue, setFieldValue] = useState('');\n  const [isReadOnly, setReadOnly] = useState(false);\n  const [isMultiLine, setMultiLine] = useState(false);\n  const [isRequired, setIsRequired] = useState(false);\n  const [isMultiSelect, setIsMultiSelect] = useState(false);\n  const [isValid, setIsValid] = useState(true);\n  const [radioButtonGroups, setRadioButtonGroups] = useState([]);\n  const [position, setPosition] = useState({ left: 0, top: 0 });\n  const [validationMessage, setValidationMessage] = useState('')\n  const popupRef = useRef();\n\n  const [isOpen] = useSelector(state => [selectors.isElementOpen(state, 'formFieldEditPopup')], shallowEqual);\n  const dispatch = useDispatch();\n\n  useOnClickOutside(popupRef, e => {\n    closeAndReset();\n  });\n\n  function closeAndReset() {\n    dispatch(actions.closeElement('formFieldEditPopup'));\n    setFieldName('');\n    setFieldValue('');\n    setReadOnly(false);\n    setMultiLine(false);\n    setIsRequired(false);\n    setIsMultiSelect(false);\n    setIsValid(true);\n  }\n\n  const formFieldAnnotation = useOnFormFieldAnnotationAddedOrSelected(openFormFieldPopup);\n\n  function openFormFieldPopup() {\n    dispatch(actions.openElement('formFieldEditPopup'));\n  }\n\n  useEffect(() => {\n    const onFormFieldCreationModeStarted = () => {\n      // Do some cleanup of radio button groups,\n      // gets rid of groups that may have been added but never actually placed as fields\n      // or that were created but unlinked from a widget\n      setRadioButtonGroups(formFieldCreationManager.getRadioButtonGroups())\n    };\n\n    core.addEventListener('formFieldCreationModeStarted', onFormFieldCreationModeStarted);\n\n    return () => {\n      core.removeEventListener('formFieldCreationModeStarted', onFormFieldCreationModeStarted);\n    };\n  }, []);\n\n  // We use layout effect to avoid a flickering as the popup is repositioned\n  // The flow is open popup -> update position. \n  // So we first open with an old position and then re-render to the new position. By using layoutEffect\n  // we let the hook run and update the position, and then the browser updates\n  useLayoutEffect(() => {\n    const setPopupPosition = () => {\n      if (popupRef.current) {\n        setPosition(getAnnotationPopupPositionBasedOn(formFieldAnnotation, popupRef));\n      }\n    };\n\n    if (isOpen) {\n      setPopupPosition();\n      setFieldName(formFieldCreationManager.getFieldName(formFieldAnnotation));\n      setFieldValue(formFieldCreationManager.getFieldValue(formFieldAnnotation));\n      setReadOnly(formFieldCreationManager.getFieldFlag(formFieldAnnotation, fieldLabels.READ_ONLY));\n      setMultiLine(formFieldCreationManager.getFieldFlag(formFieldAnnotation, fieldLabels.MULTI_LINE));\n      setIsRequired(formFieldCreationManager.getFieldFlag(formFieldAnnotation, fieldLabels.REQUIRED));\n      setIsMultiSelect(formFieldCreationManager.getFieldFlag(formFieldAnnotation, fieldLabels.MULTI_SELECT));\n      const dedupedRadioGroups = [...(new Set([...radioButtonGroups, ...formFieldCreationManager.getRadioButtonGroups()]))]\n      setRadioButtonGroups(dedupedRadioGroups);\n      // Field name is required, so if this is an empty string\n      // the field is not valid and should not be converted to a real field\n      setIsValid(!!formFieldCreationManager.getFieldName(formFieldAnnotation));\n      setValidationMessage('')\n    }\n  }, [isOpen]);\n\n  const onFieldNameChange = useCallback(name => {\n    const validatedResponse = formFieldCreationManager.setFieldName(formFieldAnnotation, name);\n    setIsValid(validatedResponse.isValid);\n    mapValidationResponseToTranslation(validatedResponse);\n    setFieldName(name);\n  }, [formFieldAnnotation]);\n\n  const mapValidationResponseToTranslation = (validationResponse) => {\n    const { errorType } = validationResponse;\n    let translationKey = ''\n\n    switch (errorType) {\n      case 'empty':\n        translationKey = 'formField.formFieldPopup.invalidField.empty';\n        break;\n      case 'duplicate':\n        translationKey = 'formField.formFieldPopup.invalidField.duplicate';\n        break;\n    }\n\n    setValidationMessage(translationKey);\n  }\n\n  const onFieldValueChange = useCallback(value => {\n    setFieldValue(value);\n    formFieldCreationManager.setFieldValue(formFieldAnnotation, value);\n  }, [formFieldAnnotation]);\n\n  const onReadOnlyChange = useCallback(isReadOnly => {\n    setReadOnly(isReadOnly);\n    formFieldCreationManager.setFieldFlag(formFieldAnnotation, fieldLabels.READ_ONLY, isReadOnly);\n  }, [formFieldAnnotation]);\n\n  const onMultiLineChange = useCallback(isMultiLine => {\n    setMultiLine(isMultiLine);\n    formFieldCreationManager.setFieldFlag(formFieldAnnotation, fieldLabels.MULTI_LINE, isMultiLine);\n  }, [formFieldAnnotation]);\n\n  const onRequiredChange = useCallback(isRequired => {\n    setIsRequired(isRequired);\n    formFieldCreationManager.setFieldFlag(formFieldAnnotation, fieldLabels.REQUIRED, isRequired);\n  }, [formFieldAnnotation]);\n\n  const onMultiSelectChange = useCallback(isMultiSelect => {\n    setIsMultiSelect(isMultiSelect)\n    formFieldCreationManager.setFieldFlag(formFieldAnnotation, fieldLabels.MULTI_SELECT, isMultiSelect);\n  }, [formFieldAnnotation]);\n\n  const onFieldOptionsChange = useCallback(options => {\n    formFieldCreationManager.setFieldOptions(formFieldAnnotation, options);\n  }, [formFieldAnnotation]);\n\n  const closeFormFieldEditPopup = useCallback(() => {\n    closeAndReset();\n  }, []);\n\n  const onCloseRadioButtonPopup = useCallback(() => {\n    // Add new radio group (if any) to existing radio groups and we were in a valid state\n    if (isValid && radioButtonGroups.indexOf(fieldName) === -1 && fieldName !== '') {\n      setRadioButtonGroups([fieldName, ...radioButtonGroups])\n    }\n    closeAndReset();\n  }, [fieldName, radioButtonGroups]);\n\n  const redrawAnnotation = useCallback((annotation) => {\n    core.getAnnotationManager().drawAnnotationsFromList([annotation]);\n  }, []);\n\n  const getPageHeight = useCallback(() => {\n    return core.getPageHeight(core.getCurrentPage());\n  }, []);\n\n  const getPageWidth = useCallback(() => {\n    return core.getPageWidth(core.getCurrentPage());\n  }, []);\n\n  const fields = {\n    NAME: {\n      label: 'formField.formFieldPopup.fieldName',\n      onChange: onFieldNameChange,\n      value: fieldName,\n      required: true,\n      type: 'text',\n      focus: true,\n    },\n    VALUE: {\n      label: 'formField.formFieldPopup.fieldValue',\n      onChange: onFieldValueChange,\n      value: fieldValue,\n      type: 'text'\n    },\n    RADIO_GROUP: {\n      label: 'formField.formFieldPopup.fieldName',\n      onChange: onFieldNameChange,\n      value: fieldName,\n      required: true,\n      type: 'select'\n    }\n  };\n\n  const textFields = [\n    fields['NAME'],\n    fields['VALUE'],\n  ];\n\n  const defaultFields = [\n    fields['NAME'],\n  ];\n\n  const radioButtonFields = [\n    fields['RADIO_GROUP']\n  ];\n\n  const listBoxFields = [\n    fields['NAME']\n  ];\n\n  const comboBoxFields = [\n    fields['NAME']\n  ];\n\n  const isMobile = useMedia(['(max-width: 640px)'], [true], false);\n\n  const flags = {\n    READ_ONLY: {\n      label: 'formField.formFieldPopup.readOnly',\n      onChange: onReadOnlyChange,\n      isChecked: isReadOnly,\n    },\n    MULTI_LINE: {\n      label: 'formField.formFieldPopup.multiLine',\n      onChange: onMultiLineChange,\n      isChecked: isMultiLine,\n    },\n    REQUIRED: {\n      label: 'formField.formFieldPopup.required',\n      onChange: onRequiredChange,\n      isChecked: isRequired,\n    },\n    MULTI_SELECT: {\n      label: 'formField.formFieldPopup.multiSelect',\n      onChange: onMultiSelectChange,\n      isChecked: isMultiSelect,\n    }\n  }\n\n  const textFieldFlags = [\n    flags['READ_ONLY'],\n    flags['MULTI_LINE'],\n    flags['REQUIRED'],\n  ];\n\n  const signatureFlags = [\n    flags['REQUIRED'],\n    flags['READ_ONLY'],\n  ];\n\n  const checkBoxFlags = [\n    flags['READ_ONLY'],\n    flags['REQUIRED'],\n  ];\n\n  const radioButtonFlags = [\n    flags['READ_ONLY'],\n    flags['REQUIRED'],\n  ];\n\n  const listBoxFlags = [\n    flags['MULTI_SELECT'],\n    flags['READ_ONLY'],\n    flags['REQUIRED'],\n  ];\n\n  const comboBoxFlags = [\n    flags['READ_ONLY'],\n    flags['REQUIRED'],\n  ];\n\n  const renderTextFormFieldEditPopup = () => (\n    <FormFieldEditPopup\n      fields={textFields}\n      flags={textFieldFlags}\n      closeFormFieldEditPopup={closeFormFieldEditPopup}\n      isValid={isValid}\n      validationMessage={validationMessage}\n      annotation={formFieldAnnotation}\n      redrawAnnotation={redrawAnnotation}\n      getPageHeight={getPageHeight}\n      getPageWidth={getPageWidth}\n    />\n  );\n\n  const renderSignatureFormFieldEditPopup = () => (\n    <FormFieldEditPopup\n      fields={defaultFields}\n      flags={signatureFlags}\n      closeFormFieldEditPopup={closeFormFieldEditPopup}\n      isValid={isValid}\n      validationMessage={validationMessage}\n      annotation={formFieldAnnotation}\n      redrawAnnotation={redrawAnnotation}\n      getPageHeight={getPageHeight}\n      getPageWidth={getPageWidth}\n    />\n  );\n\n  const renderCheckboxFormFieldEditPopup = () => (\n    <FormFieldEditPopup\n      fields={defaultFields}\n      flags={checkBoxFlags}\n      closeFormFieldEditPopup={closeFormFieldEditPopup}\n      isValid={isValid}\n      validationMessage={validationMessage}\n      annotation={formFieldAnnotation}\n      redrawAnnotation={redrawAnnotation}\n      getPageHeight={getPageHeight}\n      getPageWidth={getPageWidth}\n    />\n  );\n\n  const renderRadioButtonFormFieldEditPopup = () => (\n    <FormFieldEditPopup\n      fields={radioButtonFields}\n      flags={radioButtonFlags}\n      closeFormFieldEditPopup={onCloseRadioButtonPopup}\n      isValid={isValid}\n      validationMessage={validationMessage}\n      radioButtonGroups={radioButtonGroups}\n      annotation={formFieldAnnotation}\n      selectedRadioGroup={fieldName}\n      redrawAnnotation={redrawAnnotation}\n      getPageHeight={getPageHeight}\n      getPageWidth={getPageWidth}\n    />\n  );\n\n  const renderListBoxFormFieldEditPopup = () => {\n    const fieldOptions = formFieldCreationManager.getFieldOptions(formFieldAnnotation);\n\n    return (\n      <FormFieldEditPopup\n        fields={listBoxFields}\n        flags={listBoxFlags}\n        options={fieldOptions}\n        onOptionsChange={onFieldOptionsChange}\n        closeFormFieldEditPopup={closeFormFieldEditPopup}\n        isValid={isValid}\n        validationMessage={validationMessage}\n        annotation={formFieldAnnotation}\n        redrawAnnotation={redrawAnnotation}\n        getPageHeight={getPageHeight}\n        getPageWidth={getPageWidth}\n      />\n    )\n  };\n\n  const renderComboBoxFormFieldEditPopup = () => {\n    const fieldOptions = formFieldCreationManager.getFieldOptions(formFieldAnnotation);\n\n    return (\n      <FormFieldEditPopup\n        fields={comboBoxFields}\n        flags={comboBoxFlags}\n        options={fieldOptions}\n        onOptionsChange={onFieldOptionsChange}\n        closeFormFieldEditPopup={closeFormFieldEditPopup}\n        isValid={isValid}\n        validationMessage={validationMessage}\n        annotation={formFieldAnnotation}\n        redrawAnnotation={redrawAnnotation}\n        getPageHeight={getPageHeight}\n        getPageWidth={getPageWidth}\n      />\n    )\n  };\n\n  const renderPopUp = () => {\n    const intent = formFieldAnnotation.getFormFieldPlaceHolderType();\n    if (intent === 'TextFormField') {\n      return renderTextFormFieldEditPopup();\n    } else if (intent === 'SignatureFormField') {\n      return renderSignatureFormFieldEditPopup();\n    } else if (intent === 'CheckBoxFormField') {\n      return renderCheckboxFormFieldEditPopup();\n    } else if (intent === 'RadioButtonFormField') {\n      return renderRadioButtonFormFieldEditPopup();\n    } else if (intent === 'ListBoxFormField') {\n      return renderListBoxFormFieldEditPopup();\n    } else if (intent === 'ComboBoxFormField') {\n      return renderComboBoxFormFieldEditPopup();\n    }\n  };\n\n  const renderFormFieldEditPopup = () => (\n    <DataElementWrapper\n      className={classNames({\n        Popup: true,\n        FormFieldEditPopupContainer: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      data-element=\"formFieldEditPopup\"\n      style={{ ...position }}\n      ref={popupRef}\n    >\n      {isOpen && renderPopUp()}\n    </DataElementWrapper>\n  );\n\n  if (!isMobile) {\n    //disable draggable on mobile devices\n    return (\n      <Draggable\n        cancel=\".Button, .cell, .sliders-container svg, .creatable-list, .ui__input__input, .form-dimension-input, .ui__choice__input\">\n        {renderFormFieldEditPopup()}\n      </Draggable>);\n  } else {\n    return renderFormFieldEditPopup();\n  }\n}\n\nexport default FormFieldEditPopupContainer;\n","import FormFieldEditPopup from './FormFieldEditPopupContainer';\n\nexport default FormFieldEditPopup;","export var calculateChange = function calculateChange(e, hsl, direction, initialA, container) {\n  var containerWidth = container.clientWidth;\n  var containerHeight = container.clientHeight;\n  var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n  var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n  var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n  var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n  if (direction === 'vertical') {\n    var a = void 0;\n    if (top < 0) {\n      a = 0;\n    } else if (top > containerHeight) {\n      a = 1;\n    } else {\n      a = Math.round(top * 100 / containerHeight) / 100;\n    }\n\n    if (hsl.a !== a) {\n      return {\n        h: hsl.h,\n        s: hsl.s,\n        l: hsl.l,\n        a: a,\n        source: 'rgb'\n      };\n    }\n  } else {\n    var _a = void 0;\n    if (left < 0) {\n      _a = 0;\n    } else if (left > containerWidth) {\n      _a = 1;\n    } else {\n      _a = Math.round(left * 100 / containerWidth) / 100;\n    }\n\n    if (initialA !== _a) {\n      return {\n        h: hsl.h,\n        s: hsl.s,\n        l: hsl.l,\n        a: _a,\n        source: 'rgb'\n      };\n    }\n  }\n  return null;\n};","var checkboardCache = {};\n\nexport var render = function render(c1, c2, size, serverCanvas) {\n  if (typeof document === 'undefined' && !serverCanvas) {\n    return null;\n  }\n  var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas');\n  canvas.width = size * 2;\n  canvas.height = size * 2;\n  var ctx = canvas.getContext('2d');\n  if (!ctx) {\n    return null;\n  } // If no context can be found, return early.\n  ctx.fillStyle = c1;\n  ctx.fillRect(0, 0, canvas.width, canvas.height);\n  ctx.fillStyle = c2;\n  ctx.fillRect(0, 0, size, size);\n  ctx.translate(size, size);\n  ctx.fillRect(0, 0, size, size);\n  return canvas.toDataURL();\n};\n\nexport var get = function get(c1, c2, size, serverCanvas) {\n  var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : '');\n\n  if (checkboardCache[key]) {\n    return checkboardCache[key];\n  }\n\n  var checkboard = render(c1, c2, size, serverCanvas);\n  checkboardCache[key] = checkboard;\n  return checkboard;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React, { isValidElement } from 'react';\nimport reactCSS from 'reactcss';\nimport * as checkboard from '../../helpers/checkboard';\n\nexport var Checkboard = function Checkboard(_ref) {\n  var white = _ref.white,\n      grey = _ref.grey,\n      size = _ref.size,\n      renderers = _ref.renderers,\n      borderRadius = _ref.borderRadius,\n      boxShadow = _ref.boxShadow,\n      children = _ref.children;\n\n  var styles = reactCSS({\n    'default': {\n      grid: {\n        borderRadius: borderRadius,\n        boxShadow: boxShadow,\n        absolute: '0px 0px 0px 0px',\n        background: 'url(' + checkboard.get(white, grey, size, renderers.canvas) + ') center left'\n      }\n    }\n  });\n  return isValidElement(children) ? React.cloneElement(children, _extends({}, children.props, { style: _extends({}, children.props.style, styles.grid) })) : React.createElement('div', { style: styles.grid });\n};\n\nCheckboard.defaultProps = {\n  size: 8,\n  white: 'transparent',\n  grey: 'rgba(0,0,0,.08)',\n  renderers: {}\n};\n\nexport default Checkboard;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport * as alpha from '../../helpers/alpha';\n\nimport Checkboard from './Checkboard';\n\nexport var Alpha = function (_ref) {\n  _inherits(Alpha, _ref);\n\n  function Alpha() {\n    var _ref2;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Alpha);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n      var change = alpha.calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container);\n      change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n    }, _this.handleMouseDown = function (e) {\n      _this.handleChange(e);\n      window.addEventListener('mousemove', _this.handleChange);\n      window.addEventListener('mouseup', _this.handleMouseUp);\n    }, _this.handleMouseUp = function () {\n      _this.unbindEventListeners();\n    }, _this.unbindEventListeners = function () {\n      window.removeEventListener('mousemove', _this.handleChange);\n      window.removeEventListener('mouseup', _this.handleMouseUp);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Alpha, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.unbindEventListeners();\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var rgb = this.props.rgb;\n      var styles = reactCSS({\n        'default': {\n          alpha: {\n            absolute: '0px 0px 0px 0px',\n            borderRadius: this.props.radius\n          },\n          checkboard: {\n            absolute: '0px 0px 0px 0px',\n            overflow: 'hidden',\n            borderRadius: this.props.radius\n          },\n          gradient: {\n            absolute: '0px 0px 0px 0px',\n            background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n           rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)',\n            boxShadow: this.props.shadow,\n            borderRadius: this.props.radius\n          },\n          container: {\n            position: 'relative',\n            height: '100%',\n            margin: '0 3px'\n          },\n          pointer: {\n            position: 'absolute',\n            left: rgb.a * 100 + '%'\n          },\n          slider: {\n            width: '4px',\n            borderRadius: '1px',\n            height: '8px',\n            boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n            background: '#fff',\n            marginTop: '1px',\n            transform: 'translateX(-2px)'\n          }\n        },\n        'vertical': {\n          gradient: {\n            background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n           rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)'\n          },\n          pointer: {\n            left: 0,\n            top: rgb.a * 100 + '%'\n          }\n        },\n        'overwrite': _extends({}, this.props.style)\n      }, {\n        vertical: this.props.direction === 'vertical',\n        overwrite: true\n      });\n\n      return React.createElement(\n        'div',\n        { style: styles.alpha },\n        React.createElement(\n          'div',\n          { style: styles.checkboard },\n          React.createElement(Checkboard, { renderers: this.props.renderers })\n        ),\n        React.createElement('div', { style: styles.gradient }),\n        React.createElement(\n          'div',\n          {\n            style: styles.container,\n            ref: function ref(container) {\n              return _this2.container = container;\n            },\n            onMouseDown: this.handleMouseDown,\n            onTouchMove: this.handleChange,\n            onTouchStart: this.handleChange\n          },\n          React.createElement(\n            'div',\n            { style: styles.pointer },\n            this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.slider })\n          )\n        )\n      );\n    }\n  }]);\n\n  return Alpha;\n}(PureComponent || Component);\n\nexport default Alpha;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\n\nvar DEFAULT_ARROW_OFFSET = 1;\n\nvar UP_KEY_CODE = 38;\nvar DOWN_KEY_CODE = 40;\nvar VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE];\nvar isValidKeyCode = function isValidKeyCode(keyCode) {\n  return VALID_KEY_CODES.indexOf(keyCode) > -1;\n};\nvar getNumberValue = function getNumberValue(value) {\n  return Number(String(value).replace(/%/g, ''));\n};\n\nvar idCounter = 1;\n\nexport var EditableInput = function (_ref) {\n  _inherits(EditableInput, _ref);\n\n  function EditableInput(props) {\n    _classCallCheck(this, EditableInput);\n\n    var _this = _possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this));\n\n    _this.handleBlur = function () {\n      if (_this.state.blurValue) {\n        _this.setState({ value: _this.state.blurValue, blurValue: null });\n      }\n    };\n\n    _this.handleChange = function (e) {\n      _this.setUpdatedValue(e.target.value, e);\n    };\n\n    _this.handleKeyDown = function (e) {\n      // In case `e.target.value` is a percentage remove the `%` character\n      // and update accordingly with a percentage\n      // https://github.com/casesandberg/react-color/issues/383\n      var value = getNumberValue(e.target.value);\n      if (!isNaN(value) && isValidKeyCode(e.keyCode)) {\n        var offset = _this.getArrowOffset();\n        var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset;\n\n        _this.setUpdatedValue(updatedValue, e);\n      }\n    };\n\n    _this.handleDrag = function (e) {\n      if (_this.props.dragLabel) {\n        var newValue = Math.round(_this.props.value + e.movementX);\n        if (newValue >= 0 && newValue <= _this.props.dragMax) {\n          _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e);\n        }\n      }\n    };\n\n    _this.handleMouseDown = function (e) {\n      if (_this.props.dragLabel) {\n        e.preventDefault();\n        _this.handleDrag(e);\n        window.addEventListener('mousemove', _this.handleDrag);\n        window.addEventListener('mouseup', _this.handleMouseUp);\n      }\n    };\n\n    _this.handleMouseUp = function () {\n      _this.unbindEventListeners();\n    };\n\n    _this.unbindEventListeners = function () {\n      window.removeEventListener('mousemove', _this.handleDrag);\n      window.removeEventListener('mouseup', _this.handleMouseUp);\n    };\n\n    _this.state = {\n      value: String(props.value).toUpperCase(),\n      blurValue: String(props.value).toUpperCase()\n    };\n\n    _this.inputId = 'rc-editable-input-' + idCounter++;\n    return _this;\n  }\n\n  _createClass(EditableInput, [{\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps, prevState) {\n      if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) {\n        if (this.input === document.activeElement) {\n          this.setState({ blurValue: String(this.props.value).toUpperCase() });\n        } else {\n          this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() });\n        }\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.unbindEventListeners();\n    }\n  }, {\n    key: 'getValueObjectWithLabel',\n    value: function getValueObjectWithLabel(value) {\n      return _defineProperty({}, this.props.label, value);\n    }\n  }, {\n    key: 'getArrowOffset',\n    value: function getArrowOffset() {\n      return this.props.arrowOffset || DEFAULT_ARROW_OFFSET;\n    }\n  }, {\n    key: 'setUpdatedValue',\n    value: function setUpdatedValue(value, e) {\n      var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value;\n      this.props.onChange && this.props.onChange(onChangeValue, e);\n\n      this.setState({ value: value });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var styles = reactCSS({\n        'default': {\n          wrap: {\n            position: 'relative'\n          }\n        },\n        'user-override': {\n          wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {},\n          input: this.props.style && this.props.style.input ? this.props.style.input : {},\n          label: this.props.style && this.props.style.label ? this.props.style.label : {}\n        },\n        'dragLabel-true': {\n          label: {\n            cursor: 'ew-resize'\n          }\n        }\n      }, {\n        'user-override': true\n      }, this.props);\n\n      return React.createElement(\n        'div',\n        { style: styles.wrap },\n        React.createElement('input', {\n          id: this.inputId,\n          style: styles.input,\n          ref: function ref(input) {\n            return _this2.input = input;\n          },\n          value: this.state.value,\n          onKeyDown: this.handleKeyDown,\n          onChange: this.handleChange,\n          onBlur: this.handleBlur,\n          placeholder: this.props.placeholder,\n          spellCheck: 'false'\n        }),\n        this.props.label && !this.props.hideLabel ? React.createElement(\n          'label',\n          {\n            htmlFor: this.inputId,\n            style: styles.label,\n            onMouseDown: this.handleMouseDown\n          },\n          this.props.label\n        ) : null\n      );\n    }\n  }]);\n\n  return EditableInput;\n}(PureComponent || Component);\n\nexport default EditableInput;","export var calculateChange = function calculateChange(e, direction, hsl, container) {\n  var containerWidth = container.clientWidth;\n  var containerHeight = container.clientHeight;\n  var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n  var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n  var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n  var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n  if (direction === 'vertical') {\n    var h = void 0;\n    if (top < 0) {\n      h = 359;\n    } else if (top > containerHeight) {\n      h = 0;\n    } else {\n      var percent = -(top * 100 / containerHeight) + 100;\n      h = 360 * percent / 100;\n    }\n\n    if (hsl.h !== h) {\n      return {\n        h: h,\n        s: hsl.s,\n        l: hsl.l,\n        a: hsl.a,\n        source: 'hsl'\n      };\n    }\n  } else {\n    var _h = void 0;\n    if (left < 0) {\n      _h = 0;\n    } else if (left > containerWidth) {\n      _h = 359;\n    } else {\n      var _percent = left * 100 / containerWidth;\n      _h = 360 * _percent / 100;\n    }\n\n    if (hsl.h !== _h) {\n      return {\n        h: _h,\n        s: hsl.s,\n        l: hsl.l,\n        a: hsl.a,\n        source: 'hsl'\n      };\n    }\n  }\n  return null;\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport * as hue from '../../helpers/hue';\n\nexport var Hue = function (_ref) {\n  _inherits(Hue, _ref);\n\n  function Hue() {\n    var _ref2;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Hue);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n      var change = hue.calculateChange(e, _this.props.direction, _this.props.hsl, _this.container);\n      change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n    }, _this.handleMouseDown = function (e) {\n      _this.handleChange(e);\n      window.addEventListener('mousemove', _this.handleChange);\n      window.addEventListener('mouseup', _this.handleMouseUp);\n    }, _this.handleMouseUp = function () {\n      _this.unbindEventListeners();\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Hue, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.unbindEventListeners();\n    }\n  }, {\n    key: 'unbindEventListeners',\n    value: function unbindEventListeners() {\n      window.removeEventListener('mousemove', this.handleChange);\n      window.removeEventListener('mouseup', this.handleMouseUp);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props$direction = this.props.direction,\n          direction = _props$direction === undefined ? 'horizontal' : _props$direction;\n\n\n      var styles = reactCSS({\n        'default': {\n          hue: {\n            absolute: '0px 0px 0px 0px',\n            borderRadius: this.props.radius,\n            boxShadow: this.props.shadow\n          },\n          container: {\n            padding: '0 2px',\n            position: 'relative',\n            height: '100%',\n            borderRadius: this.props.radius\n          },\n          pointer: {\n            position: 'absolute',\n            left: this.props.hsl.h * 100 / 360 + '%'\n          },\n          slider: {\n            marginTop: '1px',\n            width: '4px',\n            borderRadius: '1px',\n            height: '8px',\n            boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n            background: '#fff',\n            transform: 'translateX(-2px)'\n          }\n        },\n        'vertical': {\n          pointer: {\n            left: '0px',\n            top: -(this.props.hsl.h * 100 / 360) + 100 + '%'\n          }\n        }\n      }, { vertical: direction === 'vertical' });\n\n      return React.createElement(\n        'div',\n        { style: styles.hue },\n        React.createElement(\n          'div',\n          {\n            className: 'hue-' + direction,\n            style: styles.container,\n            ref: function ref(container) {\n              return _this2.container = container;\n            },\n            onMouseDown: this.handleMouseDown,\n            onTouchMove: this.handleChange,\n            onTouchStart: this.handleChange\n          },\n          React.createElement(\n            'style',\n            null,\n            '\\n            .hue-horizontal {\\n              background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\\n                33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n              background: -webkit-linear-gradient(to right, #f00 0%, #ff0\\n                17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n            }\\n\\n            .hue-vertical {\\n              background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\\n                #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n              background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\\n                #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n            }\\n          '\n          ),\n          React.createElement(\n            'div',\n            { style: styles.pointer },\n            this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.slider })\n          )\n        )\n      );\n    }\n  }]);\n\n  return Hue;\n}(PureComponent || Component);\n\nexport default Hue;","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignMergeValue;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nexport default initCloneObject;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nexport default safeGet;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nexport default baseMerge;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nexport default createAssigner;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nexport var Raised = function Raised(_ref) {\n  var zDepth = _ref.zDepth,\n      radius = _ref.radius,\n      background = _ref.background,\n      children = _ref.children,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles;\n\n  var styles = reactCSS(merge({\n    'default': {\n      wrap: {\n        position: 'relative',\n        display: 'inline-block'\n      },\n      content: {\n        position: 'relative'\n      },\n      bg: {\n        absolute: '0px 0px 0px 0px',\n        boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)',\n        borderRadius: radius,\n        background: background\n      }\n    },\n    'zDepth-0': {\n      bg: {\n        boxShadow: 'none'\n      }\n    },\n\n    'zDepth-1': {\n      bg: {\n        boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)'\n      }\n    },\n    'zDepth-2': {\n      bg: {\n        boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)'\n      }\n    },\n    'zDepth-3': {\n      bg: {\n        boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)'\n      }\n    },\n    'zDepth-4': {\n      bg: {\n        boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)'\n      }\n    },\n    'zDepth-5': {\n      bg: {\n        boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)'\n      }\n    },\n    'square': {\n      bg: {\n        borderRadius: '0'\n      }\n    },\n    'circle': {\n      bg: {\n        borderRadius: '50%'\n      }\n    }\n  }, passedStyles), { 'zDepth-1': zDepth === 1 });\n\n  return React.createElement(\n    'div',\n    { style: styles.wrap },\n    React.createElement('div', { style: styles.bg }),\n    React.createElement(\n      'div',\n      { style: styles.content },\n      children\n    )\n  );\n};\n\nRaised.propTypes = {\n  background: PropTypes.string,\n  zDepth: PropTypes.oneOf([0, 1, 2, 3, 4, 5]),\n  radius: PropTypes.number,\n  styles: PropTypes.object\n};\n\nRaised.defaultProps = {\n  background: '#fff',\n  zDepth: 1,\n  radius: 2,\n  styles: {}\n};\n\nexport default Raised;","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nexport default now;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nexport default debounce;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nexport default throttle;\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport throttle from 'lodash-es/throttle';\nimport * as saturation from '../../helpers/saturation';\n\nexport var Saturation = function (_ref) {\n  _inherits(Saturation, _ref);\n\n  function Saturation(props) {\n    _classCallCheck(this, Saturation);\n\n    var _this = _possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props));\n\n    _this.handleChange = function (e) {\n      typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation.calculateChange(e, _this.props.hsl, _this.container), e);\n    };\n\n    _this.handleMouseDown = function (e) {\n      _this.handleChange(e);\n      var renderWindow = _this.getContainerRenderWindow();\n      renderWindow.addEventListener('mousemove', _this.handleChange);\n      renderWindow.addEventListener('mouseup', _this.handleMouseUp);\n    };\n\n    _this.handleMouseUp = function () {\n      _this.unbindEventListeners();\n    };\n\n    _this.throttle = throttle(function (fn, data, e) {\n      fn(data, e);\n    }, 50);\n    return _this;\n  }\n\n  _createClass(Saturation, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.throttle.cancel();\n      this.unbindEventListeners();\n    }\n  }, {\n    key: 'getContainerRenderWindow',\n    value: function getContainerRenderWindow() {\n      var container = this.container;\n\n      var renderWindow = window;\n      while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) {\n        renderWindow = renderWindow.parent;\n      }\n      return renderWindow;\n    }\n  }, {\n    key: 'unbindEventListeners',\n    value: function unbindEventListeners() {\n      var renderWindow = this.getContainerRenderWindow();\n      renderWindow.removeEventListener('mousemove', this.handleChange);\n      renderWindow.removeEventListener('mouseup', this.handleMouseUp);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _ref2 = this.props.style || {},\n          color = _ref2.color,\n          white = _ref2.white,\n          black = _ref2.black,\n          pointer = _ref2.pointer,\n          circle = _ref2.circle;\n\n      var styles = reactCSS({\n        'default': {\n          color: {\n            absolute: '0px 0px 0px 0px',\n            background: 'hsl(' + this.props.hsl.h + ',100%, 50%)',\n            borderRadius: this.props.radius\n          },\n          white: {\n            absolute: '0px 0px 0px 0px',\n            borderRadius: this.props.radius\n          },\n          black: {\n            absolute: '0px 0px 0px 0px',\n            boxShadow: this.props.shadow,\n            borderRadius: this.props.radius\n          },\n          pointer: {\n            position: 'absolute',\n            top: -(this.props.hsv.v * 100) + 100 + '%',\n            left: this.props.hsv.s * 100 + '%',\n            cursor: 'default'\n          },\n          circle: {\n            width: '4px',\n            height: '4px',\n            boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\\n            0 0 1px 2px rgba(0,0,0,.4)',\n            borderRadius: '50%',\n            cursor: 'hand',\n            transform: 'translate(-2px, -2px)'\n          }\n        },\n        'custom': {\n          color: color,\n          white: white,\n          black: black,\n          pointer: pointer,\n          circle: circle\n        }\n      }, { 'custom': !!this.props.style });\n\n      return React.createElement(\n        'div',\n        {\n          style: styles.color,\n          ref: function ref(container) {\n            return _this2.container = container;\n          },\n          onMouseDown: this.handleMouseDown,\n          onTouchMove: this.handleChange,\n          onTouchStart: this.handleChange\n        },\n        React.createElement(\n          'style',\n          null,\n          '\\n          .saturation-white {\\n            background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\\n            background: linear-gradient(to right, #fff, rgba(255,255,255,0));\\n          }\\n          .saturation-black {\\n            background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\\n            background: linear-gradient(to top, #000, rgba(0,0,0,0));\\n          }\\n        '\n        ),\n        React.createElement(\n          'div',\n          { style: styles.white, className: 'saturation-white' },\n          React.createElement('div', { style: styles.black, className: 'saturation-black' }),\n          React.createElement(\n            'div',\n            { style: styles.pointer },\n            this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.circle })\n          )\n        )\n      );\n    }\n  }]);\n\n  return Saturation;\n}(PureComponent || Component);\n\nexport default Saturation;","export var calculateChange = function calculateChange(e, hsl, container) {\n  var _container$getBoundin = container.getBoundingClientRect(),\n      containerWidth = _container$getBoundin.width,\n      containerHeight = _container$getBoundin.height;\n\n  var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n  var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n  var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n  var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n  if (left < 0) {\n    left = 0;\n  } else if (left > containerWidth) {\n    left = containerWidth;\n  }\n\n  if (top < 0) {\n    top = 0;\n  } else if (top > containerHeight) {\n    top = containerHeight;\n  }\n\n  var saturation = left / containerWidth;\n  var bright = 1 - top / containerHeight;\n\n  return {\n    h: hsl.h,\n    s: saturation,\n    v: bright,\n    a: hsl.a,\n    source: 'hsv'\n  };\n};","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEach;\n","import each from 'lodash-es/each';\nimport tinycolor from 'tinycolor2';\n\nexport var simpleCheckForValidColor = function simpleCheckForValidColor(data) {\n  var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v'];\n  var checked = 0;\n  var passed = 0;\n  each(keysToCheck, function (letter) {\n    if (data[letter]) {\n      checked += 1;\n      if (!isNaN(data[letter])) {\n        passed += 1;\n      }\n      if (letter === 's' || letter === 'l') {\n        var percentPatt = /^\\d+%$/;\n        if (percentPatt.test(data[letter])) {\n          passed += 1;\n        }\n      }\n    }\n  });\n  return checked === passed ? data : false;\n};\n\nexport var toState = function toState(data, oldHue) {\n  var color = data.hex ? tinycolor(data.hex) : tinycolor(data);\n  var hsl = color.toHsl();\n  var hsv = color.toHsv();\n  var rgb = color.toRgb();\n  var hex = color.toHex();\n  if (hsl.s === 0) {\n    hsl.h = oldHue || 0;\n    hsv.h = oldHue || 0;\n  }\n  var transparent = hex === '000000' && rgb.a === 0;\n\n  return {\n    hsl: hsl,\n    hex: transparent ? 'transparent' : '#' + hex,\n    rgb: rgb,\n    hsv: hsv,\n    oldHue: data.h || oldHue || hsl.h,\n    source: data.source\n  };\n};\n\nexport var isValidHex = function isValidHex(hex) {\n  if (hex === 'transparent') {\n    return true;\n  }\n  // disable hex4 and hex8\n  var lh = String(hex).charAt(0) === '#' ? 1 : 0;\n  return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor(hex).isValid();\n};\n\nexport var getContrastingColor = function getContrastingColor(data) {\n  if (!data) {\n    return '#fff';\n  }\n  var col = toState(data);\n  if (col.hex === 'transparent') {\n    return 'rgba(0,0,0,0.4)';\n  }\n  var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000;\n  return yiq >= 128 ? '#000' : '#fff';\n};\n\nexport var red = {\n  hsl: { a: 1, h: 0, l: 0.5, s: 1 },\n  hex: '#ff0000',\n  rgb: { r: 255, g: 0, b: 0, a: 1 },\n  hsv: { h: 0, s: 1, v: 1, a: 1 }\n};\n\nexport var isvalidColorString = function isvalidColorString(string, type) {\n  var stringWithoutDegree = string.replace('°', '');\n  return tinycolor(type + ' (' + stringWithoutDegree + ')')._ok;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport debounce from 'lodash-es/debounce';\nimport * as color from '../../helpers/color';\n\nexport var ColorWrap = function ColorWrap(Picker) {\n  var ColorPicker = function (_ref) {\n    _inherits(ColorPicker, _ref);\n\n    function ColorPicker(props) {\n      _classCallCheck(this, ColorPicker);\n\n      var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this));\n\n      _this.handleChange = function (data, event) {\n        var isValidColor = color.simpleCheckForValidColor(data);\n        if (isValidColor) {\n          var colors = color.toState(data, data.h || _this.state.oldHue);\n          _this.setState(colors);\n          _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event);\n          _this.props.onChange && _this.props.onChange(colors, event);\n        }\n      };\n\n      _this.handleSwatchHover = function (data, event) {\n        var isValidColor = color.simpleCheckForValidColor(data);\n        if (isValidColor) {\n          var colors = color.toState(data, data.h || _this.state.oldHue);\n          _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event);\n        }\n      };\n\n      _this.state = _extends({}, color.toState(props.color, 0));\n\n      _this.debounce = debounce(function (fn, data, event) {\n        fn(data, event);\n      }, 100);\n      return _this;\n    }\n\n    _createClass(ColorPicker, [{\n      key: 'render',\n      value: function render() {\n        var optionalEvents = {};\n        if (this.props.onSwatchHover) {\n          optionalEvents.onSwatchHover = this.handleSwatchHover;\n        }\n\n        return React.createElement(Picker, _extends({}, this.props, this.state, {\n          onChange: this.handleChange\n        }, optionalEvents));\n      }\n    }], [{\n      key: 'getDerivedStateFromProps',\n      value: function getDerivedStateFromProps(nextProps, state) {\n        return _extends({}, color.toState(nextProps.color, state.oldHue));\n      }\n    }]);\n\n    return ColorPicker;\n  }(PureComponent || Component);\n\n  ColorPicker.propTypes = _extends({}, Picker.propTypes);\n\n  ColorPicker.defaultProps = _extends({}, Picker.defaultProps, {\n    color: {\n      h: 250,\n      s: 0.50,\n      l: 0.20,\n      a: 1\n    }\n  });\n\n  return ColorPicker;\n};\n\nexport default ColorWrap;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable no-invalid-this */\nimport React from 'react';\n\nexport var handleFocus = function handleFocus(Component) {\n  var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n  return function (_React$Component) {\n    _inherits(Focus, _React$Component);\n\n    function Focus() {\n      var _ref;\n\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Focus);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () {\n        return _this.setState({ focus: true });\n      }, _this.handleBlur = function () {\n        return _this.setState({ focus: false });\n      }, _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    _createClass(Focus, [{\n      key: 'render',\n      value: function render() {\n        return React.createElement(\n          Span,\n          { onFocus: this.handleFocus, onBlur: this.handleBlur },\n          React.createElement(Component, _extends({}, this.props, this.state))\n        );\n      }\n    }]);\n\n    return Focus;\n  }(React.Component);\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport { handleFocus } from '../../helpers/interaction';\n\nimport Checkboard from './Checkboard';\n\nvar ENTER = 13;\n\nexport var Swatch = function Swatch(_ref) {\n  var color = _ref.color,\n      style = _ref.style,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      onHover = _ref.onHover,\n      _ref$title = _ref.title,\n      title = _ref$title === undefined ? color : _ref$title,\n      children = _ref.children,\n      focus = _ref.focus,\n      _ref$focusStyle = _ref.focusStyle,\n      focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle;\n\n  var transparent = color === 'transparent';\n  var styles = reactCSS({\n    default: {\n      swatch: _extends({\n        background: color,\n        height: '100%',\n        width: '100%',\n        cursor: 'pointer',\n        position: 'relative',\n        outline: 'none'\n      }, style, focus ? focusStyle : {})\n    }\n  });\n\n  var handleClick = function handleClick(e) {\n    return onClick(color, e);\n  };\n  var handleKeyDown = function handleKeyDown(e) {\n    return e.keyCode === ENTER && onClick(color, e);\n  };\n  var handleHover = function handleHover(e) {\n    return onHover(color, e);\n  };\n\n  var optionalEvents = {};\n  if (onHover) {\n    optionalEvents.onMouseOver = handleHover;\n  }\n\n  return React.createElement(\n    'div',\n    _extends({\n      style: styles.swatch,\n      onClick: handleClick,\n      title: title,\n      tabIndex: 0,\n      onKeyDown: handleKeyDown\n    }, optionalEvents),\n    children,\n    transparent && React.createElement(Checkboard, {\n      borderRadius: styles.swatch.borderRadius,\n      boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)'\n    })\n  );\n};\n\nexport default handleFocus(Swatch);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var AlphaPointer = function AlphaPointer(_ref) {\n  var direction = _ref.direction;\n\n  var styles = reactCSS({\n    'default': {\n      picker: {\n        width: '18px',\n        height: '18px',\n        borderRadius: '50%',\n        transform: 'translate(-9px, -1px)',\n        backgroundColor: 'rgb(248, 248, 248)',\n        boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n      }\n    },\n    'vertical': {\n      picker: {\n        transform: 'translate(-3px, -9px)'\n      }\n    }\n  }, { vertical: direction === 'vertical' });\n\n  return React.createElement('div', { style: styles.picker });\n};\n\nexport default AlphaPointer;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\n\nimport { ColorWrap, Alpha } from '../common';\nimport AlphaPointer from './AlphaPointer';\n\nexport var AlphaPicker = function AlphaPicker(_ref) {\n  var rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      width = _ref.width,\n      height = _ref.height,\n      onChange = _ref.onChange,\n      direction = _ref.direction,\n      style = _ref.style,\n      renderers = _ref.renderers,\n      pointer = _ref.pointer,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS({\n    'default': {\n      picker: {\n        position: 'relative',\n        width: width,\n        height: height\n      },\n      alpha: {\n        radius: '2px',\n        style: style\n      }\n    }\n  });\n\n  return React.createElement(\n    'div',\n    { style: styles.picker, className: 'alpha-picker ' + className },\n    React.createElement(Alpha, _extends({}, styles.alpha, {\n      rgb: rgb,\n      hsl: hsl,\n      pointer: pointer,\n      renderers: renderers,\n      onChange: onChange,\n      direction: direction\n    }))\n  );\n};\n\nAlphaPicker.defaultProps = {\n  width: '316px',\n  height: '16px',\n  direction: 'horizontal',\n  pointer: AlphaPointer\n};\n\nexport default ColorWrap(AlphaPicker);","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","import React from 'react';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\n\nimport { Swatch } from '../common';\n\nexport var BlockSwatches = function BlockSwatches(_ref) {\n  var colors = _ref.colors,\n      onClick = _ref.onClick,\n      onSwatchHover = _ref.onSwatchHover;\n\n  var styles = reactCSS({\n    'default': {\n      swatches: {\n        marginRight: '-10px'\n      },\n      swatch: {\n        width: '22px',\n        height: '22px',\n        float: 'left',\n        marginRight: '10px',\n        marginBottom: '10px',\n        borderRadius: '4px'\n      },\n      clear: {\n        clear: 'both'\n      }\n    }\n  });\n\n  return React.createElement(\n    'div',\n    { style: styles.swatches },\n    map(colors, function (c) {\n      return React.createElement(Swatch, {\n        key: c,\n        color: c,\n        style: styles.swatch,\n        onClick: onClick,\n        onHover: onSwatchHover,\n        focusStyle: {\n          boxShadow: '0 0 4px ' + c\n        }\n      });\n    }),\n    React.createElement('div', { style: styles.clear })\n  );\n};\n\nexport default BlockSwatches;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Checkboard } from '../common';\nimport BlockSwatches from './BlockSwatches';\n\nexport var Block = function Block(_ref) {\n  var onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      hex = _ref.hex,\n      colors = _ref.colors,\n      width = _ref.width,\n      triangle = _ref.triangle,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var transparent = hex === 'transparent';\n  var handleChange = function handleChange(hexCode, e) {\n    color.isValidHex(hexCode) && onChange({\n      hex: hexCode,\n      source: 'hex'\n    }, e);\n  };\n\n  var styles = reactCSS(merge({\n    'default': {\n      card: {\n        width: width,\n        background: '#fff',\n        boxShadow: '0 1px rgba(0,0,0,.1)',\n        borderRadius: '6px',\n        position: 'relative'\n      },\n      head: {\n        height: '110px',\n        background: hex,\n        borderRadius: '6px 6px 0 0',\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'center',\n        position: 'relative'\n      },\n      body: {\n        padding: '10px'\n      },\n      label: {\n        fontSize: '18px',\n        color: color.getContrastingColor(hex),\n        position: 'relative'\n      },\n      triangle: {\n        width: '0px',\n        height: '0px',\n        borderStyle: 'solid',\n        borderWidth: '0 10px 10px 10px',\n        borderColor: 'transparent transparent ' + hex + ' transparent',\n        position: 'absolute',\n        top: '-10px',\n        left: '50%',\n        marginLeft: '-10px'\n      },\n      input: {\n        width: '100%',\n        fontSize: '12px',\n        color: '#666',\n        border: '0px',\n        outline: 'none',\n        height: '22px',\n        boxShadow: 'inset 0 0 0 1px #ddd',\n        borderRadius: '4px',\n        padding: '0 7px',\n        boxSizing: 'border-box'\n      }\n    },\n    'hide-triangle': {\n      triangle: {\n        display: 'none'\n      }\n    }\n  }, passedStyles), { 'hide-triangle': triangle === 'hide' });\n\n  return React.createElement(\n    'div',\n    { style: styles.card, className: 'block-picker ' + className },\n    React.createElement('div', { style: styles.triangle }),\n    React.createElement(\n      'div',\n      { style: styles.head },\n      transparent && React.createElement(Checkboard, { borderRadius: '6px 6px 0 0' }),\n      React.createElement(\n        'div',\n        { style: styles.label },\n        hex\n      )\n    ),\n    React.createElement(\n      'div',\n      { style: styles.body },\n      React.createElement(BlockSwatches, { colors: colors, onClick: handleChange, onSwatchHover: onSwatchHover }),\n      React.createElement(EditableInput, {\n        style: { input: styles.input },\n        value: hex,\n        onChange: handleChange\n      })\n    )\n  );\n};\n\nBlock.propTypes = {\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  colors: PropTypes.arrayOf(PropTypes.string),\n  triangle: PropTypes.oneOf(['top', 'hide']),\n  styles: PropTypes.object\n};\n\nBlock.defaultProps = {\n  width: 170,\n  colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'],\n  triangle: 'top',\n  styles: {}\n};\n\nexport default ColorWrap(Block);","export var red = {\"50\":\"#ffebee\",\"100\":\"#ffcdd2\",\"200\":\"#ef9a9a\",\"300\":\"#e57373\",\"400\":\"#ef5350\",\"500\":\"#f44336\",\"600\":\"#e53935\",\"700\":\"#d32f2f\",\"800\":\"#c62828\",\"900\":\"#b71c1c\",\"a100\":\"#ff8a80\",\"a200\":\"#ff5252\",\"a400\":\"#ff1744\",\"a700\":\"#d50000\"};\nexport var pink = {\"50\":\"#fce4ec\",\"100\":\"#f8bbd0\",\"200\":\"#f48fb1\",\"300\":\"#f06292\",\"400\":\"#ec407a\",\"500\":\"#e91e63\",\"600\":\"#d81b60\",\"700\":\"#c2185b\",\"800\":\"#ad1457\",\"900\":\"#880e4f\",\"a100\":\"#ff80ab\",\"a200\":\"#ff4081\",\"a400\":\"#f50057\",\"a700\":\"#c51162\"};\nexport var purple = {\"50\":\"#f3e5f5\",\"100\":\"#e1bee7\",\"200\":\"#ce93d8\",\"300\":\"#ba68c8\",\"400\":\"#ab47bc\",\"500\":\"#9c27b0\",\"600\":\"#8e24aa\",\"700\":\"#7b1fa2\",\"800\":\"#6a1b9a\",\"900\":\"#4a148c\",\"a100\":\"#ea80fc\",\"a200\":\"#e040fb\",\"a400\":\"#d500f9\",\"a700\":\"#aa00ff\"};\nexport var deepPurple = {\"50\":\"#ede7f6\",\"100\":\"#d1c4e9\",\"200\":\"#b39ddb\",\"300\":\"#9575cd\",\"400\":\"#7e57c2\",\"500\":\"#673ab7\",\"600\":\"#5e35b1\",\"700\":\"#512da8\",\"800\":\"#4527a0\",\"900\":\"#311b92\",\"a100\":\"#b388ff\",\"a200\":\"#7c4dff\",\"a400\":\"#651fff\",\"a700\":\"#6200ea\"};\nexport var indigo = {\"50\":\"#e8eaf6\",\"100\":\"#c5cae9\",\"200\":\"#9fa8da\",\"300\":\"#7986cb\",\"400\":\"#5c6bc0\",\"500\":\"#3f51b5\",\"600\":\"#3949ab\",\"700\":\"#303f9f\",\"800\":\"#283593\",\"900\":\"#1a237e\",\"a100\":\"#8c9eff\",\"a200\":\"#536dfe\",\"a400\":\"#3d5afe\",\"a700\":\"#304ffe\"};\nexport var blue = {\"50\":\"#e3f2fd\",\"100\":\"#bbdefb\",\"200\":\"#90caf9\",\"300\":\"#64b5f6\",\"400\":\"#42a5f5\",\"500\":\"#2196f3\",\"600\":\"#1e88e5\",\"700\":\"#1976d2\",\"800\":\"#1565c0\",\"900\":\"#0d47a1\",\"a100\":\"#82b1ff\",\"a200\":\"#448aff\",\"a400\":\"#2979ff\",\"a700\":\"#2962ff\"};\nexport var lightBlue = {\"50\":\"#e1f5fe\",\"100\":\"#b3e5fc\",\"200\":\"#81d4fa\",\"300\":\"#4fc3f7\",\"400\":\"#29b6f6\",\"500\":\"#03a9f4\",\"600\":\"#039be5\",\"700\":\"#0288d1\",\"800\":\"#0277bd\",\"900\":\"#01579b\",\"a100\":\"#80d8ff\",\"a200\":\"#40c4ff\",\"a400\":\"#00b0ff\",\"a700\":\"#0091ea\"};\nexport var cyan = {\"50\":\"#e0f7fa\",\"100\":\"#b2ebf2\",\"200\":\"#80deea\",\"300\":\"#4dd0e1\",\"400\":\"#26c6da\",\"500\":\"#00bcd4\",\"600\":\"#00acc1\",\"700\":\"#0097a7\",\"800\":\"#00838f\",\"900\":\"#006064\",\"a100\":\"#84ffff\",\"a200\":\"#18ffff\",\"a400\":\"#00e5ff\",\"a700\":\"#00b8d4\"};\nexport var teal = {\"50\":\"#e0f2f1\",\"100\":\"#b2dfdb\",\"200\":\"#80cbc4\",\"300\":\"#4db6ac\",\"400\":\"#26a69a\",\"500\":\"#009688\",\"600\":\"#00897b\",\"700\":\"#00796b\",\"800\":\"#00695c\",\"900\":\"#004d40\",\"a100\":\"#a7ffeb\",\"a200\":\"#64ffda\",\"a400\":\"#1de9b6\",\"a700\":\"#00bfa5\"};\nexport var green = {\"50\":\"#e8f5e9\",\"100\":\"#c8e6c9\",\"200\":\"#a5d6a7\",\"300\":\"#81c784\",\"400\":\"#66bb6a\",\"500\":\"#4caf50\",\"600\":\"#43a047\",\"700\":\"#388e3c\",\"800\":\"#2e7d32\",\"900\":\"#1b5e20\",\"a100\":\"#b9f6ca\",\"a200\":\"#69f0ae\",\"a400\":\"#00e676\",\"a700\":\"#00c853\"};\nexport var lightGreen = {\"50\":\"#f1f8e9\",\"100\":\"#dcedc8\",\"200\":\"#c5e1a5\",\"300\":\"#aed581\",\"400\":\"#9ccc65\",\"500\":\"#8bc34a\",\"600\":\"#7cb342\",\"700\":\"#689f38\",\"800\":\"#558b2f\",\"900\":\"#33691e\",\"a100\":\"#ccff90\",\"a200\":\"#b2ff59\",\"a400\":\"#76ff03\",\"a700\":\"#64dd17\"};\nexport var lime = {\"50\":\"#f9fbe7\",\"100\":\"#f0f4c3\",\"200\":\"#e6ee9c\",\"300\":\"#dce775\",\"400\":\"#d4e157\",\"500\":\"#cddc39\",\"600\":\"#c0ca33\",\"700\":\"#afb42b\",\"800\":\"#9e9d24\",\"900\":\"#827717\",\"a100\":\"#f4ff81\",\"a200\":\"#eeff41\",\"a400\":\"#c6ff00\",\"a700\":\"#aeea00\"};\nexport var yellow = {\"50\":\"#fffde7\",\"100\":\"#fff9c4\",\"200\":\"#fff59d\",\"300\":\"#fff176\",\"400\":\"#ffee58\",\"500\":\"#ffeb3b\",\"600\":\"#fdd835\",\"700\":\"#fbc02d\",\"800\":\"#f9a825\",\"900\":\"#f57f17\",\"a100\":\"#ffff8d\",\"a200\":\"#ffff00\",\"a400\":\"#ffea00\",\"a700\":\"#ffd600\"};\nexport var amber = {\"50\":\"#fff8e1\",\"100\":\"#ffecb3\",\"200\":\"#ffe082\",\"300\":\"#ffd54f\",\"400\":\"#ffca28\",\"500\":\"#ffc107\",\"600\":\"#ffb300\",\"700\":\"#ffa000\",\"800\":\"#ff8f00\",\"900\":\"#ff6f00\",\"a100\":\"#ffe57f\",\"a200\":\"#ffd740\",\"a400\":\"#ffc400\",\"a700\":\"#ffab00\"};\nexport var orange = {\"50\":\"#fff3e0\",\"100\":\"#ffe0b2\",\"200\":\"#ffcc80\",\"300\":\"#ffb74d\",\"400\":\"#ffa726\",\"500\":\"#ff9800\",\"600\":\"#fb8c00\",\"700\":\"#f57c00\",\"800\":\"#ef6c00\",\"900\":\"#e65100\",\"a100\":\"#ffd180\",\"a200\":\"#ffab40\",\"a400\":\"#ff9100\",\"a700\":\"#ff6d00\"};\nexport var deepOrange = {\"50\":\"#fbe9e7\",\"100\":\"#ffccbc\",\"200\":\"#ffab91\",\"300\":\"#ff8a65\",\"400\":\"#ff7043\",\"500\":\"#ff5722\",\"600\":\"#f4511e\",\"700\":\"#e64a19\",\"800\":\"#d84315\",\"900\":\"#bf360c\",\"a100\":\"#ff9e80\",\"a200\":\"#ff6e40\",\"a400\":\"#ff3d00\",\"a700\":\"#dd2c00\"};\nexport var brown = {\"50\":\"#efebe9\",\"100\":\"#d7ccc8\",\"200\":\"#bcaaa4\",\"300\":\"#a1887f\",\"400\":\"#8d6e63\",\"500\":\"#795548\",\"600\":\"#6d4c41\",\"700\":\"#5d4037\",\"800\":\"#4e342e\",\"900\":\"#3e2723\"};\nexport var grey = {\"50\":\"#fafafa\",\"100\":\"#f5f5f5\",\"200\":\"#eeeeee\",\"300\":\"#e0e0e0\",\"400\":\"#bdbdbd\",\"500\":\"#9e9e9e\",\"600\":\"#757575\",\"700\":\"#616161\",\"800\":\"#424242\",\"900\":\"#212121\"};\nexport var blueGrey = {\"50\":\"#eceff1\",\"100\":\"#cfd8dc\",\"200\":\"#b0bec5\",\"300\":\"#90a4ae\",\"400\":\"#78909c\",\"500\":\"#607d8b\",\"600\":\"#546e7a\",\"700\":\"#455a64\",\"800\":\"#37474f\",\"900\":\"#263238\"};\nexport var darkText = {\"primary\":\"rgba(0, 0, 0, 0.87)\",\"secondary\":\"rgba(0, 0, 0, 0.54)\",\"disabled\":\"rgba(0, 0, 0, 0.38)\",\"dividers\":\"rgba(0, 0, 0, 0.12)\"};\nexport var lightText = {\"primary\":\"rgba(255, 255, 255, 1)\",\"secondary\":\"rgba(255, 255, 255, 0.7)\",\"disabled\":\"rgba(255, 255, 255, 0.5)\",\"dividers\":\"rgba(255, 255, 255, 0.12)\"};\nexport var darkIcons = {\"active\":\"rgba(0, 0, 0, 0.54)\",\"inactive\":\"rgba(0, 0, 0, 0.38)\"};\nexport var lightIcons = {\"active\":\"rgba(255, 255, 255, 1)\",\"inactive\":\"rgba(255, 255, 255, 0.5)\"};\nexport var white = \"#ffffff\";\nexport var black = \"#000000\";\n\nexport default {\n  red: red,\n  pink: pink,\n  purple: purple,\n  deepPurple: deepPurple,\n  indigo: indigo,\n  blue: blue,\n  lightBlue: lightBlue,\n  cyan: cyan,\n  teal: teal,\n  green: green,\n  lightGreen: lightGreen,\n  lime: lime,\n  yellow: yellow,\n  amber: amber,\n  orange: orange,\n  deepOrange: deepOrange,\n  brown: brown,\n  grey: grey,\n  blueGrey: blueGrey,\n  darkText: darkText,\n  lightText: lightText,\n  darkIcons: darkIcons,\n  lightIcons: lightIcons,\n  white: white,\n  black: black\n};\n","import React from 'react';\nimport reactCSS, { handleHover } from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var CircleSwatch = function CircleSwatch(_ref) {\n  var color = _ref.color,\n      onClick = _ref.onClick,\n      onSwatchHover = _ref.onSwatchHover,\n      hover = _ref.hover,\n      active = _ref.active,\n      circleSize = _ref.circleSize,\n      circleSpacing = _ref.circleSpacing;\n\n  var styles = reactCSS({\n    'default': {\n      swatch: {\n        width: circleSize,\n        height: circleSize,\n        marginRight: circleSpacing,\n        marginBottom: circleSpacing,\n        transform: 'scale(1)',\n        transition: '100ms transform ease'\n      },\n      Swatch: {\n        borderRadius: '50%',\n        background: 'transparent',\n        boxShadow: 'inset 0 0 0 ' + (circleSize / 2 + 1) + 'px ' + color,\n        transition: '100ms box-shadow ease'\n      }\n    },\n    'hover': {\n      swatch: {\n        transform: 'scale(1.2)'\n      }\n    },\n    'active': {\n      Swatch: {\n        boxShadow: 'inset 0 0 0 3px ' + color\n      }\n    }\n  }, { hover: hover, active: active });\n\n  return React.createElement(\n    'div',\n    { style: styles.swatch },\n    React.createElement(Swatch, {\n      style: styles.Swatch,\n      color: color,\n      onClick: onClick,\n      onHover: onSwatchHover,\n      focusStyle: { boxShadow: styles.Swatch.boxShadow + ', 0 0 5px ' + color }\n    })\n  );\n};\n\nCircleSwatch.defaultProps = {\n  circleSize: 28,\n  circleSpacing: 14\n};\n\nexport default handleHover(CircleSwatch);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as material from 'material-colors';\n\nimport { ColorWrap } from '../common';\nimport CircleSwatch from './CircleSwatch';\n\nexport var Circle = function Circle(_ref) {\n  var width = _ref.width,\n      onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      colors = _ref.colors,\n      hex = _ref.hex,\n      circleSize = _ref.circleSize,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      circleSpacing = _ref.circleSpacing,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': {\n      card: {\n        width: width,\n        display: 'flex',\n        flexWrap: 'wrap',\n        marginRight: -circleSpacing,\n        marginBottom: -circleSpacing\n      }\n    }\n  }, passedStyles));\n\n  var handleChange = function handleChange(hexCode, e) {\n    return onChange({ hex: hexCode, source: 'hex' }, e);\n  };\n\n  return React.createElement(\n    'div',\n    { style: styles.card, className: 'circle-picker ' + className },\n    map(colors, function (c) {\n      return React.createElement(CircleSwatch, {\n        key: c,\n        color: c,\n        onClick: handleChange,\n        onSwatchHover: onSwatchHover,\n        active: hex === c.toLowerCase(),\n        circleSize: circleSize,\n        circleSpacing: circleSpacing\n      });\n    })\n  );\n};\n\nCircle.propTypes = {\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  circleSize: PropTypes.number,\n  circleSpacing: PropTypes.number,\n  styles: PropTypes.object\n};\n\nCircle.defaultProps = {\n  width: 252,\n  circleSize: 28,\n  circleSpacing: 14,\n  colors: [material.red['500'], material.pink['500'], material.purple['500'], material.deepPurple['500'], material.indigo['500'], material.blue['500'], material.lightBlue['500'], material.cyan['500'], material.teal['500'], material.green['500'], material.lightGreen['500'], material.lime['500'], material.yellow['500'], material.amber['500'], material.orange['500'], material.deepOrange['500'], material.brown['500'], material.blueGrey['500']],\n  styles: {}\n};\n\nexport default ColorWrap(Circle);","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nexport default isUndefined;\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable react/no-did-mount-set-state, no-param-reassign */\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\nimport isUndefined from 'lodash-es/isUndefined';\n\nimport { EditableInput } from '../common';\nimport UnfoldMoreHorizontalIcon from '@icons/material/UnfoldMoreHorizontalIcon';\n\nexport var ChromeFields = function (_React$Component) {\n  _inherits(ChromeFields, _React$Component);\n\n  function ChromeFields(props) {\n    _classCallCheck(this, ChromeFields);\n\n    var _this = _possibleConstructorReturn(this, (ChromeFields.__proto__ || Object.getPrototypeOf(ChromeFields)).call(this));\n\n    _this.toggleViews = function () {\n      if (_this.state.view === 'hex') {\n        _this.setState({ view: 'rgb' });\n      } else if (_this.state.view === 'rgb') {\n        _this.setState({ view: 'hsl' });\n      } else if (_this.state.view === 'hsl') {\n        if (_this.props.hsl.a === 1) {\n          _this.setState({ view: 'hex' });\n        } else {\n          _this.setState({ view: 'rgb' });\n        }\n      }\n    };\n\n    _this.handleChange = function (data, e) {\n      if (data.hex) {\n        color.isValidHex(data.hex) && _this.props.onChange({\n          hex: data.hex,\n          source: 'hex'\n        }, e);\n      } else if (data.r || data.g || data.b) {\n        _this.props.onChange({\n          r: data.r || _this.props.rgb.r,\n          g: data.g || _this.props.rgb.g,\n          b: data.b || _this.props.rgb.b,\n          source: 'rgb'\n        }, e);\n      } else if (data.a) {\n        if (data.a < 0) {\n          data.a = 0;\n        } else if (data.a > 1) {\n          data.a = 1;\n        }\n\n        _this.props.onChange({\n          h: _this.props.hsl.h,\n          s: _this.props.hsl.s,\n          l: _this.props.hsl.l,\n          a: Math.round(data.a * 100) / 100,\n          source: 'rgb'\n        }, e);\n      } else if (data.h || data.s || data.l) {\n        // Remove any occurances of '%'.\n        if (typeof data.s === 'string' && data.s.includes('%')) {\n          data.s = data.s.replace('%', '');\n        }\n        if (typeof data.l === 'string' && data.l.includes('%')) {\n          data.l = data.l.replace('%', '');\n        }\n\n        // We store HSL as a unit interval so we need to override the 1 input to 0.01\n        if (data.s == 1) {\n          data.s = 0.01;\n        } else if (data.l == 1) {\n          data.l = 0.01;\n        }\n\n        _this.props.onChange({\n          h: data.h || _this.props.hsl.h,\n          s: Number(!isUndefined(data.s) ? data.s : _this.props.hsl.s),\n          l: Number(!isUndefined(data.l) ? data.l : _this.props.hsl.l),\n          source: 'hsl'\n        }, e);\n      }\n    };\n\n    _this.showHighlight = function (e) {\n      e.currentTarget.style.background = '#eee';\n    };\n\n    _this.hideHighlight = function (e) {\n      e.currentTarget.style.background = 'transparent';\n    };\n\n    if (props.hsl.a !== 1 && props.view === \"hex\") {\n      _this.state = {\n        view: \"rgb\"\n      };\n    } else {\n      _this.state = {\n        view: props.view\n      };\n    }\n    return _this;\n  }\n\n  _createClass(ChromeFields, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var styles = reactCSS({\n        'default': {\n          wrap: {\n            paddingTop: '16px',\n            display: 'flex'\n          },\n          fields: {\n            flex: '1',\n            display: 'flex',\n            marginLeft: '-6px'\n          },\n          field: {\n            paddingLeft: '6px',\n            width: '100%'\n          },\n          alpha: {\n            paddingLeft: '6px',\n            width: '100%'\n          },\n          toggle: {\n            width: '32px',\n            textAlign: 'right',\n            position: 'relative'\n          },\n          icon: {\n            marginRight: '-4px',\n            marginTop: '12px',\n            cursor: 'pointer',\n            position: 'relative'\n          },\n          iconHighlight: {\n            position: 'absolute',\n            width: '24px',\n            height: '28px',\n            background: '#eee',\n            borderRadius: '4px',\n            top: '10px',\n            left: '12px',\n            display: 'none'\n          },\n          input: {\n            fontSize: '11px',\n            color: '#333',\n            width: '100%',\n            borderRadius: '2px',\n            border: 'none',\n            boxShadow: 'inset 0 0 0 1px #dadada',\n            height: '21px',\n            textAlign: 'center'\n          },\n          label: {\n            textTransform: 'uppercase',\n            fontSize: '11px',\n            lineHeight: '11px',\n            color: '#969696',\n            textAlign: 'center',\n            display: 'block',\n            marginTop: '12px'\n          },\n          svg: {\n            fill: '#333',\n            width: '24px',\n            height: '24px',\n            border: '1px transparent solid',\n            borderRadius: '5px'\n          }\n        },\n        'disableAlpha': {\n          alpha: {\n            display: 'none'\n          }\n        }\n      }, this.props, this.state);\n\n      var fields = void 0;\n      if (this.state.view === 'hex') {\n        fields = React.createElement(\n          'div',\n          { style: styles.fields, className: 'flexbox-fix' },\n          React.createElement(\n            'div',\n            { style: styles.field },\n            React.createElement(EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'hex', value: this.props.hex,\n              onChange: this.handleChange\n            })\n          )\n        );\n      } else if (this.state.view === 'rgb') {\n        fields = React.createElement(\n          'div',\n          { style: styles.fields, className: 'flexbox-fix' },\n          React.createElement(\n            'div',\n            { style: styles.field },\n            React.createElement(EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'r',\n              value: this.props.rgb.r,\n              onChange: this.handleChange\n            })\n          ),\n          React.createElement(\n            'div',\n            { style: styles.field },\n            React.createElement(EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'g',\n              value: this.props.rgb.g,\n              onChange: this.handleChange\n            })\n          ),\n          React.createElement(\n            'div',\n            { style: styles.field },\n            React.createElement(EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'b',\n              value: this.props.rgb.b,\n              onChange: this.handleChange\n            })\n          ),\n          React.createElement(\n            'div',\n            { style: styles.alpha },\n            React.createElement(EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'a',\n              value: this.props.rgb.a,\n              arrowOffset: 0.01,\n              onChange: this.handleChange\n            })\n          )\n        );\n      } else if (this.state.view === 'hsl') {\n        fields = React.createElement(\n          'div',\n          { style: styles.fields, className: 'flexbox-fix' },\n          React.createElement(\n            'div',\n            { style: styles.field },\n            React.createElement(EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'h',\n              value: Math.round(this.props.hsl.h),\n              onChange: this.handleChange\n            })\n          ),\n          React.createElement(\n            'div',\n            { style: styles.field },\n            React.createElement(EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 's',\n              value: Math.round(this.props.hsl.s * 100) + '%',\n              onChange: this.handleChange\n            })\n          ),\n          React.createElement(\n            'div',\n            { style: styles.field },\n            React.createElement(EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'l',\n              value: Math.round(this.props.hsl.l * 100) + '%',\n              onChange: this.handleChange\n            })\n          ),\n          React.createElement(\n            'div',\n            { style: styles.alpha },\n            React.createElement(EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'a',\n              value: this.props.hsl.a,\n              arrowOffset: 0.01,\n              onChange: this.handleChange\n            })\n          )\n        );\n      }\n\n      return React.createElement(\n        'div',\n        { style: styles.wrap, className: 'flexbox-fix' },\n        fields,\n        React.createElement(\n          'div',\n          { style: styles.toggle },\n          React.createElement(\n            'div',\n            { style: styles.icon, onClick: this.toggleViews, ref: function ref(icon) {\n                return _this2.icon = icon;\n              } },\n            React.createElement(UnfoldMoreHorizontalIcon, {\n              style: styles.svg,\n              onMouseOver: this.showHighlight,\n              onMouseEnter: this.showHighlight,\n              onMouseOut: this.hideHighlight\n            })\n          )\n        )\n      );\n    }\n  }], [{\n    key: 'getDerivedStateFromProps',\n    value: function getDerivedStateFromProps(nextProps, state) {\n      if (nextProps.hsl.a !== 1 && state.view === 'hex') {\n        return { view: 'rgb' };\n      }\n      return null;\n    }\n  }]);\n\n  return ChromeFields;\n}(React.Component);\n\nChromeFields.defaultProps = {\n  view: \"hex\"\n};\n\nexport default ChromeFields;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var ChromePointer = function ChromePointer() {\n  var styles = reactCSS({\n    'default': {\n      picker: {\n        width: '12px',\n        height: '12px',\n        borderRadius: '6px',\n        transform: 'translate(-6px, -1px)',\n        backgroundColor: 'rgb(248, 248, 248)',\n        boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n      }\n    }\n  });\n\n  return React.createElement('div', { style: styles.picker });\n};\n\nexport default ChromePointer;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var ChromePointerCircle = function ChromePointerCircle() {\n  var styles = reactCSS({\n    'default': {\n      picker: {\n        width: '12px',\n        height: '12px',\n        borderRadius: '6px',\n        boxShadow: 'inset 0 0 0 1px #fff',\n        transform: 'translate(-6px, -6px)'\n      }\n    }\n  });\n\n  return React.createElement('div', { style: styles.picker });\n};\n\nexport default ChromePointerCircle;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue, Alpha, Checkboard } from '../common';\nimport ChromeFields from './ChromeFields';\nimport ChromePointer from './ChromePointer';\nimport ChromePointerCircle from './ChromePointerCircle';\n\nexport var Chrome = function Chrome(_ref) {\n  var width = _ref.width,\n      onChange = _ref.onChange,\n      disableAlpha = _ref.disableAlpha,\n      rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      hsv = _ref.hsv,\n      hex = _ref.hex,\n      renderers = _ref.renderers,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className,\n      defaultView = _ref.defaultView;\n\n  var styles = reactCSS(merge({\n    'default': {\n      picker: {\n        width: width,\n        background: '#fff',\n        borderRadius: '2px',\n        boxShadow: '0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)',\n        boxSizing: 'initial',\n        fontFamily: 'Menlo'\n      },\n      saturation: {\n        width: '100%',\n        paddingBottom: '55%',\n        position: 'relative',\n        borderRadius: '2px 2px 0 0',\n        overflow: 'hidden'\n      },\n      Saturation: {\n        radius: '2px 2px 0 0'\n      },\n      body: {\n        padding: '16px 16px 12px'\n      },\n      controls: {\n        display: 'flex'\n      },\n      color: {\n        width: '32px'\n      },\n      swatch: {\n        marginTop: '6px',\n        width: '16px',\n        height: '16px',\n        borderRadius: '8px',\n        position: 'relative',\n        overflow: 'hidden'\n      },\n      active: {\n        absolute: '0px 0px 0px 0px',\n        borderRadius: '8px',\n        boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)',\n        background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + rgb.a + ')',\n        zIndex: '2'\n      },\n      toggles: {\n        flex: '1'\n      },\n      hue: {\n        height: '10px',\n        position: 'relative',\n        marginBottom: '8px'\n      },\n      Hue: {\n        radius: '2px'\n      },\n      alpha: {\n        height: '10px',\n        position: 'relative'\n      },\n      Alpha: {\n        radius: '2px'\n      }\n    },\n    'disableAlpha': {\n      color: {\n        width: '22px'\n      },\n      alpha: {\n        display: 'none'\n      },\n      hue: {\n        marginBottom: '0px'\n      },\n      swatch: {\n        width: '10px',\n        height: '10px',\n        marginTop: '0px'\n      }\n    }\n  }, passedStyles), { disableAlpha: disableAlpha });\n\n  return React.createElement(\n    'div',\n    { style: styles.picker, className: 'chrome-picker ' + className },\n    React.createElement(\n      'div',\n      { style: styles.saturation },\n      React.createElement(Saturation, {\n        style: styles.Saturation,\n        hsl: hsl,\n        hsv: hsv,\n        pointer: ChromePointerCircle,\n        onChange: onChange\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.body },\n      React.createElement(\n        'div',\n        { style: styles.controls, className: 'flexbox-fix' },\n        React.createElement(\n          'div',\n          { style: styles.color },\n          React.createElement(\n            'div',\n            { style: styles.swatch },\n            React.createElement('div', { style: styles.active }),\n            React.createElement(Checkboard, { renderers: renderers })\n          )\n        ),\n        React.createElement(\n          'div',\n          { style: styles.toggles },\n          React.createElement(\n            'div',\n            { style: styles.hue },\n            React.createElement(Hue, {\n              style: styles.Hue,\n              hsl: hsl,\n              pointer: ChromePointer,\n              onChange: onChange\n            })\n          ),\n          React.createElement(\n            'div',\n            { style: styles.alpha },\n            React.createElement(Alpha, {\n              style: styles.Alpha,\n              rgb: rgb,\n              hsl: hsl,\n              pointer: ChromePointer,\n              renderers: renderers,\n              onChange: onChange\n            })\n          )\n        )\n      ),\n      React.createElement(ChromeFields, {\n        rgb: rgb,\n        hsl: hsl,\n        hex: hex,\n        view: defaultView,\n        onChange: onChange,\n        disableAlpha: disableAlpha\n      })\n    )\n  );\n};\n\nChrome.propTypes = {\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  disableAlpha: PropTypes.bool,\n  styles: PropTypes.object,\n  defaultView: PropTypes.oneOf([\"hex\", \"rgb\", \"hsl\"])\n};\n\nChrome.defaultProps = {\n  width: 225,\n  disableAlpha: false,\n  styles: {}\n};\n\nexport default ColorWrap(Chrome);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as colorUtils from '../../helpers/color';\n\nimport { Swatch } from '../common';\n\nexport var CompactColor = function CompactColor(_ref) {\n  var color = _ref.color,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      onSwatchHover = _ref.onSwatchHover,\n      active = _ref.active;\n\n  var styles = reactCSS({\n    'default': {\n      color: {\n        background: color,\n        width: '15px',\n        height: '15px',\n        float: 'left',\n        marginRight: '5px',\n        marginBottom: '5px',\n        position: 'relative',\n        cursor: 'pointer'\n      },\n      dot: {\n        absolute: '5px 5px 5px 5px',\n        background: colorUtils.getContrastingColor(color),\n        borderRadius: '50%',\n        opacity: '0'\n      }\n    },\n    'active': {\n      dot: {\n        opacity: '1'\n      }\n    },\n    'color-#FFFFFF': {\n      color: {\n        boxShadow: 'inset 0 0 0 1px #ddd'\n      },\n      dot: {\n        background: '#000'\n      }\n    },\n    'transparent': {\n      dot: {\n        background: '#000'\n      }\n    }\n  }, { active: active, 'color-#FFFFFF': color === '#FFFFFF', 'transparent': color === 'transparent' });\n\n  return React.createElement(\n    Swatch,\n    {\n      style: styles.color,\n      color: color,\n      onClick: onClick,\n      onHover: onSwatchHover,\n      focusStyle: { boxShadow: '0 0 4px ' + color }\n    },\n    React.createElement('div', { style: styles.dot })\n  );\n};\n\nexport default CompactColor;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nimport { EditableInput } from '../common';\n\nexport var CompactFields = function CompactFields(_ref) {\n  var hex = _ref.hex,\n      rgb = _ref.rgb,\n      onChange = _ref.onChange;\n\n  var styles = reactCSS({\n    'default': {\n      fields: {\n        display: 'flex',\n        paddingBottom: '6px',\n        paddingRight: '5px',\n        position: 'relative'\n      },\n      active: {\n        position: 'absolute',\n        top: '6px',\n        left: '5px',\n        height: '9px',\n        width: '9px',\n        background: hex\n      },\n      HEXwrap: {\n        flex: '6',\n        position: 'relative'\n      },\n      HEXinput: {\n        width: '80%',\n        padding: '0px',\n        paddingLeft: '20%',\n        border: 'none',\n        outline: 'none',\n        background: 'none',\n        fontSize: '12px',\n        color: '#333',\n        height: '16px'\n      },\n      HEXlabel: {\n        display: 'none'\n      },\n      RGBwrap: {\n        flex: '3',\n        position: 'relative'\n      },\n      RGBinput: {\n        width: '70%',\n        padding: '0px',\n        paddingLeft: '30%',\n        border: 'none',\n        outline: 'none',\n        background: 'none',\n        fontSize: '12px',\n        color: '#333',\n        height: '16px'\n      },\n      RGBlabel: {\n        position: 'absolute',\n        top: '3px',\n        left: '0px',\n        lineHeight: '16px',\n        textTransform: 'uppercase',\n        fontSize: '12px',\n        color: '#999'\n      }\n    }\n  });\n\n  var handleChange = function handleChange(data, e) {\n    if (data.r || data.g || data.b) {\n      onChange({\n        r: data.r || rgb.r,\n        g: data.g || rgb.g,\n        b: data.b || rgb.b,\n        source: 'rgb'\n      }, e);\n    } else {\n      onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    }\n  };\n\n  return React.createElement(\n    'div',\n    { style: styles.fields, className: 'flexbox-fix' },\n    React.createElement('div', { style: styles.active }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n      label: 'hex',\n      value: hex,\n      onChange: handleChange\n    }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'r',\n      value: rgb.r,\n      onChange: handleChange\n    }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'g',\n      value: rgb.g,\n      onChange: handleChange\n    }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'b',\n      value: rgb.b,\n      onChange: handleChange\n    })\n  );\n};\n\nexport default CompactFields;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, Raised } from '../common';\nimport CompactColor from './CompactColor';\nimport CompactFields from './CompactFields';\n\nexport var Compact = function Compact(_ref) {\n  var onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      colors = _ref.colors,\n      hex = _ref.hex,\n      rgb = _ref.rgb,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': {\n      Compact: {\n        background: '#f6f6f6',\n        radius: '4px'\n      },\n      compact: {\n        paddingTop: '5px',\n        paddingLeft: '5px',\n        boxSizing: 'initial',\n        width: '240px'\n      },\n      clear: {\n        clear: 'both'\n      }\n    }\n  }, passedStyles));\n\n  var handleChange = function handleChange(data, e) {\n    if (data.hex) {\n      color.isValidHex(data.hex) && onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    } else {\n      onChange(data, e);\n    }\n  };\n\n  return React.createElement(\n    Raised,\n    { style: styles.Compact, styles: passedStyles },\n    React.createElement(\n      'div',\n      { style: styles.compact, className: 'compact-picker ' + className },\n      React.createElement(\n        'div',\n        null,\n        map(colors, function (c) {\n          return React.createElement(CompactColor, {\n            key: c,\n            color: c,\n            active: c.toLowerCase() === hex,\n            onClick: handleChange,\n            onSwatchHover: onSwatchHover\n          });\n        }),\n        React.createElement('div', { style: styles.clear })\n      ),\n      React.createElement(CompactFields, { hex: hex, rgb: rgb, onChange: handleChange })\n    )\n  );\n};\n\nCompact.propTypes = {\n  colors: PropTypes.arrayOf(PropTypes.string),\n  styles: PropTypes.object\n};\n\nCompact.defaultProps = {\n  colors: ['#4D4D4D', '#999999', '#FFFFFF', '#F44E3B', '#FE9200', '#FCDC00', '#DBDF00', '#A4DD00', '#68CCCA', '#73D8FF', '#AEA1FF', '#FDA1FF', '#333333', '#808080', '#cccccc', '#D33115', '#E27300', '#FCC400', '#B0BC00', '#68BC00', '#16A5A5', '#009CE0', '#7B64FF', '#FA28FF', '#000000', '#666666', '#B3B3B3', '#9F0500', '#C45100', '#FB9E00', '#808900', '#194D33', '#0C797D', '#0062B1', '#653294', '#AB149E'],\n  styles: {}\n};\n\nexport default ColorWrap(Compact);","import React from 'react';\nimport reactCSS, { handleHover } from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var GithubSwatch = function GithubSwatch(_ref) {\n  var hover = _ref.hover,\n      color = _ref.color,\n      onClick = _ref.onClick,\n      onSwatchHover = _ref.onSwatchHover;\n\n  var hoverSwatch = {\n    position: 'relative',\n    zIndex: '2',\n    outline: '2px solid #fff',\n    boxShadow: '0 0 5px 2px rgba(0,0,0,0.25)'\n  };\n\n  var styles = reactCSS({\n    'default': {\n      swatch: {\n        width: '25px',\n        height: '25px',\n        fontSize: '0'\n      }\n    },\n    'hover': {\n      swatch: hoverSwatch\n    }\n  }, { hover: hover });\n\n  return React.createElement(\n    'div',\n    { style: styles.swatch },\n    React.createElement(Swatch, {\n      color: color,\n      onClick: onClick,\n      onHover: onSwatchHover,\n      focusStyle: hoverSwatch\n    })\n  );\n};\n\nexport default handleHover(GithubSwatch);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap } from '../common';\nimport GithubSwatch from './GithubSwatch';\n\nexport var Github = function Github(_ref) {\n  var width = _ref.width,\n      colors = _ref.colors,\n      onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      triangle = _ref.triangle,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': {\n      card: {\n        width: width,\n        background: '#fff',\n        border: '1px solid rgba(0,0,0,0.2)',\n        boxShadow: '0 3px 12px rgba(0,0,0,0.15)',\n        borderRadius: '4px',\n        position: 'relative',\n        padding: '5px',\n        display: 'flex',\n        flexWrap: 'wrap'\n      },\n      triangle: {\n        position: 'absolute',\n        border: '7px solid transparent',\n        borderBottomColor: '#fff'\n      },\n      triangleShadow: {\n        position: 'absolute',\n        border: '8px solid transparent',\n        borderBottomColor: 'rgba(0,0,0,0.15)'\n      }\n    },\n    'hide-triangle': {\n      triangle: {\n        display: 'none'\n      },\n      triangleShadow: {\n        display: 'none'\n      }\n    },\n    'top-left-triangle': {\n      triangle: {\n        top: '-14px',\n        left: '10px'\n      },\n      triangleShadow: {\n        top: '-16px',\n        left: '9px'\n      }\n    },\n    'top-right-triangle': {\n      triangle: {\n        top: '-14px',\n        right: '10px'\n      },\n      triangleShadow: {\n        top: '-16px',\n        right: '9px'\n      }\n    },\n    'bottom-left-triangle': {\n      triangle: {\n        top: '35px',\n        left: '10px',\n        transform: 'rotate(180deg)'\n      },\n      triangleShadow: {\n        top: '37px',\n        left: '9px',\n        transform: 'rotate(180deg)'\n      }\n    },\n    'bottom-right-triangle': {\n      triangle: {\n        top: '35px',\n        right: '10px',\n        transform: 'rotate(180deg)'\n      },\n      triangleShadow: {\n        top: '37px',\n        right: '9px',\n        transform: 'rotate(180deg)'\n      }\n    }\n  }, passedStyles), {\n    'hide-triangle': triangle === 'hide',\n    'top-left-triangle': triangle === 'top-left',\n    'top-right-triangle': triangle === 'top-right',\n    'bottom-left-triangle': triangle === 'bottom-left',\n    'bottom-right-triangle': triangle === 'bottom-right'\n  });\n\n  var handleChange = function handleChange(hex, e) {\n    return onChange({ hex: hex, source: 'hex' }, e);\n  };\n\n  return React.createElement(\n    'div',\n    { style: styles.card, className: 'github-picker ' + className },\n    React.createElement('div', { style: styles.triangleShadow }),\n    React.createElement('div', { style: styles.triangle }),\n    map(colors, function (c) {\n      return React.createElement(GithubSwatch, {\n        color: c,\n        key: c,\n        onClick: handleChange,\n        onSwatchHover: onSwatchHover\n      });\n    })\n  );\n};\n\nGithub.propTypes = {\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  colors: PropTypes.arrayOf(PropTypes.string),\n  triangle: PropTypes.oneOf(['hide', 'top-left', 'top-right', 'bottom-left', 'bottom-right']),\n  styles: PropTypes.object\n};\n\nGithub.defaultProps = {\n  width: 200,\n  colors: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'],\n  triangle: 'top-left',\n  styles: {}\n};\n\nexport default ColorWrap(Github);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderPointer = function SliderPointer(_ref) {\n  var direction = _ref.direction;\n\n  var styles = reactCSS({\n    'default': {\n      picker: {\n        width: '18px',\n        height: '18px',\n        borderRadius: '50%',\n        transform: 'translate(-9px, -1px)',\n        backgroundColor: 'rgb(248, 248, 248)',\n        boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n      }\n    },\n    'vertical': {\n      picker: {\n        transform: 'translate(-3px, -9px)'\n      }\n    }\n  }, { vertical: direction === 'vertical' });\n\n  return React.createElement('div', { style: styles.picker });\n};\n\nexport default SliderPointer;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Hue } from '../common';\nimport HuePointer from './HuePointer';\n\nexport var HuePicker = function HuePicker(_ref) {\n  var width = _ref.width,\n      height = _ref.height,\n      onChange = _ref.onChange,\n      hsl = _ref.hsl,\n      direction = _ref.direction,\n      pointer = _ref.pointer,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': {\n      picker: {\n        position: 'relative',\n        width: width,\n        height: height\n      },\n      hue: {\n        radius: '2px'\n      }\n    }\n  }, passedStyles));\n\n  // Overwrite to provide pure hue color\n  var handleChange = function handleChange(data) {\n    return onChange({ a: 1, h: data.h, l: 0.5, s: 1 });\n  };\n\n  return React.createElement(\n    'div',\n    { style: styles.picker, className: 'hue-picker ' + className },\n    React.createElement(Hue, _extends({}, styles.hue, {\n      hsl: hsl,\n      pointer: pointer,\n      onChange: handleChange,\n      direction: direction\n    }))\n  );\n};\n\nHuePicker.propTypes = {\n  styles: PropTypes.object\n};\nHuePicker.defaultProps = {\n  width: '316px',\n  height: '16px',\n  direction: 'horizontal',\n  pointer: HuePointer,\n  styles: {}\n};\n\nexport default ColorWrap(HuePicker);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Raised } from '../common';\n\nexport var Material = function Material(_ref) {\n  var onChange = _ref.onChange,\n      hex = _ref.hex,\n      rgb = _ref.rgb,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': {\n      material: {\n        width: '98px',\n        height: '98px',\n        padding: '16px',\n        fontFamily: 'Roboto'\n      },\n      HEXwrap: {\n        position: 'relative'\n      },\n      HEXinput: {\n        width: '100%',\n        marginTop: '12px',\n        fontSize: '15px',\n        color: '#333',\n        padding: '0px',\n        border: '0px',\n        borderBottom: '2px solid ' + hex,\n        outline: 'none',\n        height: '30px'\n      },\n      HEXlabel: {\n        position: 'absolute',\n        top: '0px',\n        left: '0px',\n        fontSize: '11px',\n        color: '#999999',\n        textTransform: 'capitalize'\n      },\n      Hex: {\n        style: {}\n      },\n      RGBwrap: {\n        position: 'relative'\n      },\n      RGBinput: {\n        width: '100%',\n        marginTop: '12px',\n        fontSize: '15px',\n        color: '#333',\n        padding: '0px',\n        border: '0px',\n        borderBottom: '1px solid #eee',\n        outline: 'none',\n        height: '30px'\n      },\n      RGBlabel: {\n        position: 'absolute',\n        top: '0px',\n        left: '0px',\n        fontSize: '11px',\n        color: '#999999',\n        textTransform: 'capitalize'\n      },\n      split: {\n        display: 'flex',\n        marginRight: '-10px',\n        paddingTop: '11px'\n      },\n      third: {\n        flex: '1',\n        paddingRight: '10px'\n      }\n    }\n  }, passedStyles));\n\n  var handleChange = function handleChange(data, e) {\n    if (data.hex) {\n      color.isValidHex(data.hex) && onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    } else if (data.r || data.g || data.b) {\n      onChange({\n        r: data.r || rgb.r,\n        g: data.g || rgb.g,\n        b: data.b || rgb.b,\n        source: 'rgb'\n      }, e);\n    }\n  };\n\n  return React.createElement(\n    Raised,\n    { styles: passedStyles },\n    React.createElement(\n      'div',\n      { style: styles.material, className: 'material-picker ' + className },\n      React.createElement(EditableInput, {\n        style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n        label: 'hex',\n        value: hex,\n        onChange: handleChange\n      }),\n      React.createElement(\n        'div',\n        { style: styles.split, className: 'flexbox-fix' },\n        React.createElement(\n          'div',\n          { style: styles.third },\n          React.createElement(EditableInput, {\n            style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n            label: 'r', value: rgb.r,\n            onChange: handleChange\n          })\n        ),\n        React.createElement(\n          'div',\n          { style: styles.third },\n          React.createElement(EditableInput, {\n            style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n            label: 'g',\n            value: rgb.g,\n            onChange: handleChange\n          })\n        ),\n        React.createElement(\n          'div',\n          { style: styles.third },\n          React.createElement(EditableInput, {\n            style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n            label: 'b',\n            value: rgb.b,\n            onChange: handleChange\n          })\n        )\n      )\n    )\n  );\n};\n\nexport default ColorWrap(Material);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\n\nimport { EditableInput } from '../common';\n\nexport var PhotoshopPicker = function PhotoshopPicker(_ref) {\n  var onChange = _ref.onChange,\n      rgb = _ref.rgb,\n      hsv = _ref.hsv,\n      hex = _ref.hex;\n\n  var styles = reactCSS({\n    'default': {\n      fields: {\n        paddingTop: '5px',\n        paddingBottom: '9px',\n        width: '80px',\n        position: 'relative'\n      },\n      divider: {\n        height: '5px'\n      },\n      RGBwrap: {\n        position: 'relative'\n      },\n      RGBinput: {\n        marginLeft: '40%',\n        width: '40%',\n        height: '18px',\n        border: '1px solid #888888',\n        boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n        marginBottom: '5px',\n        fontSize: '13px',\n        paddingLeft: '3px',\n        marginRight: '10px'\n      },\n      RGBlabel: {\n        left: '0px',\n        top: '0px',\n        width: '34px',\n        textTransform: 'uppercase',\n        fontSize: '13px',\n        height: '18px',\n        lineHeight: '22px',\n        position: 'absolute'\n      },\n      HEXwrap: {\n        position: 'relative'\n      },\n      HEXinput: {\n        marginLeft: '20%',\n        width: '80%',\n        height: '18px',\n        border: '1px solid #888888',\n        boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n        marginBottom: '6px',\n        fontSize: '13px',\n        paddingLeft: '3px'\n      },\n      HEXlabel: {\n        position: 'absolute',\n        top: '0px',\n        left: '0px',\n        width: '14px',\n        textTransform: 'uppercase',\n        fontSize: '13px',\n        height: '18px',\n        lineHeight: '22px'\n      },\n      fieldSymbols: {\n        position: 'absolute',\n        top: '5px',\n        right: '-7px',\n        fontSize: '13px'\n      },\n      symbol: {\n        height: '20px',\n        lineHeight: '22px',\n        paddingBottom: '7px'\n      }\n    }\n  });\n\n  var handleChange = function handleChange(data, e) {\n    if (data['#']) {\n      color.isValidHex(data['#']) && onChange({\n        hex: data['#'],\n        source: 'hex'\n      }, e);\n    } else if (data.r || data.g || data.b) {\n      onChange({\n        r: data.r || rgb.r,\n        g: data.g || rgb.g,\n        b: data.b || rgb.b,\n        source: 'rgb'\n      }, e);\n    } else if (data.h || data.s || data.v) {\n      onChange({\n        h: data.h || hsv.h,\n        s: data.s || hsv.s,\n        v: data.v || hsv.v,\n        source: 'hsv'\n      }, e);\n    }\n  };\n\n  return React.createElement(\n    'div',\n    { style: styles.fields },\n    React.createElement(EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'h',\n      value: Math.round(hsv.h),\n      onChange: handleChange\n    }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 's',\n      value: Math.round(hsv.s * 100),\n      onChange: handleChange\n    }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'v',\n      value: Math.round(hsv.v * 100),\n      onChange: handleChange\n    }),\n    React.createElement('div', { style: styles.divider }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'r',\n      value: rgb.r,\n      onChange: handleChange\n    }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'g',\n      value: rgb.g,\n      onChange: handleChange\n    }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'b',\n      value: rgb.b,\n      onChange: handleChange\n    }),\n    React.createElement('div', { style: styles.divider }),\n    React.createElement(EditableInput, {\n      style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n      label: '#',\n      value: hex.replace('#', ''),\n      onChange: handleChange\n    }),\n    React.createElement(\n      'div',\n      { style: styles.fieldSymbols },\n      React.createElement(\n        'div',\n        { style: styles.symbol },\n        '\\xB0'\n      ),\n      React.createElement(\n        'div',\n        { style: styles.symbol },\n        '%'\n      ),\n      React.createElement(\n        'div',\n        { style: styles.symbol },\n        '%'\n      )\n    )\n  );\n};\n\nexport default PhotoshopPicker;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPointerCircle = function PhotoshopPointerCircle(_ref) {\n  var hsl = _ref.hsl;\n\n  var styles = reactCSS({\n    'default': {\n      picker: {\n        width: '12px',\n        height: '12px',\n        borderRadius: '6px',\n        boxShadow: 'inset 0 0 0 1px #fff',\n        transform: 'translate(-6px, -6px)'\n      }\n    },\n    'black-outline': {\n      picker: {\n        boxShadow: 'inset 0 0 0 1px #000'\n      }\n    }\n  }, { 'black-outline': hsl.l > 0.5 });\n\n  return React.createElement('div', { style: styles.picker });\n};\n\nexport default PhotoshopPointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPointerCircle = function PhotoshopPointerCircle() {\n  var styles = reactCSS({\n    'default': {\n      triangle: {\n        width: 0,\n        height: 0,\n        borderStyle: 'solid',\n        borderWidth: '4px 0 4px 6px',\n        borderColor: 'transparent transparent transparent #fff',\n        position: 'absolute',\n        top: '1px',\n        left: '1px'\n      },\n      triangleBorder: {\n        width: 0,\n        height: 0,\n        borderStyle: 'solid',\n        borderWidth: '5px 0 5px 8px',\n        borderColor: 'transparent transparent transparent #555'\n      },\n\n      left: {\n        Extend: 'triangleBorder',\n        transform: 'translate(-13px, -4px)'\n      },\n      leftInside: {\n        Extend: 'triangle',\n        transform: 'translate(-8px, -5px)'\n      },\n\n      right: {\n        Extend: 'triangleBorder',\n        transform: 'translate(20px, -14px) rotate(180deg)'\n      },\n      rightInside: {\n        Extend: 'triangle',\n        transform: 'translate(-8px, -5px)'\n      }\n    }\n  });\n\n  return React.createElement(\n    'div',\n    { style: styles.pointer },\n    React.createElement(\n      'div',\n      { style: styles.left },\n      React.createElement('div', { style: styles.leftInside })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.right },\n      React.createElement('div', { style: styles.rightInside })\n    )\n  );\n};\n\nexport default PhotoshopPointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopButton = function PhotoshopButton(_ref) {\n  var onClick = _ref.onClick,\n      label = _ref.label,\n      children = _ref.children,\n      active = _ref.active;\n\n  var styles = reactCSS({\n    'default': {\n      button: {\n        backgroundImage: 'linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)',\n        border: '1px solid #878787',\n        borderRadius: '2px',\n        height: '20px',\n        boxShadow: '0 1px 0 0 #EAEAEA',\n        fontSize: '14px',\n        color: '#000',\n        lineHeight: '20px',\n        textAlign: 'center',\n        marginBottom: '10px',\n        cursor: 'pointer'\n      }\n    },\n    'active': {\n      button: {\n        boxShadow: '0 0 0 1px #878787'\n      }\n    }\n  }, { active: active });\n\n  return React.createElement(\n    'div',\n    { style: styles.button, onClick: onClick },\n    label || children\n  );\n};\n\nexport default PhotoshopButton;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPreviews = function PhotoshopPreviews(_ref) {\n  var rgb = _ref.rgb,\n      currentColor = _ref.currentColor;\n\n  var styles = reactCSS({\n    'default': {\n      swatches: {\n        border: '1px solid #B3B3B3',\n        borderBottom: '1px solid #F0F0F0',\n        marginBottom: '2px',\n        marginTop: '1px'\n      },\n      new: {\n        height: '34px',\n        background: 'rgb(' + rgb.r + ',' + rgb.g + ', ' + rgb.b + ')',\n        boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000'\n      },\n      current: {\n        height: '34px',\n        background: currentColor,\n        boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000'\n      },\n      label: {\n        fontSize: '14px',\n        color: '#000',\n        textAlign: 'center'\n      }\n    }\n  });\n\n  return React.createElement(\n    'div',\n    null,\n    React.createElement(\n      'div',\n      { style: styles.label },\n      'new'\n    ),\n    React.createElement(\n      'div',\n      { style: styles.swatches },\n      React.createElement('div', { style: styles.new }),\n      React.createElement('div', { style: styles.current })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.label },\n      'current'\n    )\n  );\n};\n\nexport default PhotoshopPreviews;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue } from '../common';\nimport PhotoshopFields from './PhotoshopFields';\nimport PhotoshopPointerCircle from './PhotoshopPointerCircle';\nimport PhotoshopPointer from './PhotoshopPointer';\nimport PhotoshopButton from './PhotoshopButton';\nimport PhotoshopPreviews from './PhotoshopPreviews';\n\nexport var Photoshop = function (_React$Component) {\n  _inherits(Photoshop, _React$Component);\n\n  function Photoshop(props) {\n    _classCallCheck(this, Photoshop);\n\n    var _this = _possibleConstructorReturn(this, (Photoshop.__proto__ || Object.getPrototypeOf(Photoshop)).call(this));\n\n    _this.state = {\n      currentColor: props.hex\n    };\n    return _this;\n  }\n\n  _createClass(Photoshop, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          _props$styles = _props.styles,\n          passedStyles = _props$styles === undefined ? {} : _props$styles,\n          _props$className = _props.className,\n          className = _props$className === undefined ? '' : _props$className;\n\n      var styles = reactCSS(merge({\n        'default': {\n          picker: {\n            background: '#DCDCDC',\n            borderRadius: '4px',\n            boxShadow: '0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)',\n            boxSizing: 'initial',\n            width: '513px'\n          },\n          head: {\n            backgroundImage: 'linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)',\n            borderBottom: '1px solid #B1B1B1',\n            boxShadow: 'inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)',\n            height: '23px',\n            lineHeight: '24px',\n            borderRadius: '4px 4px 0 0',\n            fontSize: '13px',\n            color: '#4D4D4D',\n            textAlign: 'center'\n          },\n          body: {\n            padding: '15px 15px 0',\n            display: 'flex'\n          },\n          saturation: {\n            width: '256px',\n            height: '256px',\n            position: 'relative',\n            border: '2px solid #B3B3B3',\n            borderBottom: '2px solid #F0F0F0',\n            overflow: 'hidden'\n          },\n          hue: {\n            position: 'relative',\n            height: '256px',\n            width: '19px',\n            marginLeft: '10px',\n            border: '2px solid #B3B3B3',\n            borderBottom: '2px solid #F0F0F0'\n          },\n          controls: {\n            width: '180px',\n            marginLeft: '10px'\n          },\n          top: {\n            display: 'flex'\n          },\n          previews: {\n            width: '60px'\n          },\n          actions: {\n            flex: '1',\n            marginLeft: '20px'\n          }\n        }\n      }, passedStyles));\n\n      return React.createElement(\n        'div',\n        { style: styles.picker, className: 'photoshop-picker ' + className },\n        React.createElement(\n          'div',\n          { style: styles.head },\n          this.props.header\n        ),\n        React.createElement(\n          'div',\n          { style: styles.body, className: 'flexbox-fix' },\n          React.createElement(\n            'div',\n            { style: styles.saturation },\n            React.createElement(Saturation, {\n              hsl: this.props.hsl,\n              hsv: this.props.hsv,\n              pointer: PhotoshopPointerCircle,\n              onChange: this.props.onChange\n            })\n          ),\n          React.createElement(\n            'div',\n            { style: styles.hue },\n            React.createElement(Hue, {\n              direction: 'vertical',\n              hsl: this.props.hsl,\n              pointer: PhotoshopPointer,\n              onChange: this.props.onChange\n            })\n          ),\n          React.createElement(\n            'div',\n            { style: styles.controls },\n            React.createElement(\n              'div',\n              { style: styles.top, className: 'flexbox-fix' },\n              React.createElement(\n                'div',\n                { style: styles.previews },\n                React.createElement(PhotoshopPreviews, {\n                  rgb: this.props.rgb,\n                  currentColor: this.state.currentColor\n                })\n              ),\n              React.createElement(\n                'div',\n                { style: styles.actions },\n                React.createElement(PhotoshopButton, { label: 'OK', onClick: this.props.onAccept, active: true }),\n                React.createElement(PhotoshopButton, { label: 'Cancel', onClick: this.props.onCancel }),\n                React.createElement(PhotoshopFields, {\n                  onChange: this.props.onChange,\n                  rgb: this.props.rgb,\n                  hsv: this.props.hsv,\n                  hex: this.props.hex\n                })\n              )\n            )\n          )\n        )\n      );\n    }\n  }]);\n\n  return Photoshop;\n}(React.Component);\n\nPhotoshop.propTypes = {\n  header: PropTypes.string,\n  styles: PropTypes.object\n};\n\nPhotoshop.defaultProps = {\n  header: 'Color Picker',\n  styles: {}\n};\n\nexport default ColorWrap(Photoshop);","/* eslint-disable no-param-reassign */\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\n\nimport { EditableInput } from '../common';\n\nexport var SketchFields = function SketchFields(_ref) {\n  var onChange = _ref.onChange,\n      rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      hex = _ref.hex,\n      disableAlpha = _ref.disableAlpha;\n\n  var styles = reactCSS({\n    'default': {\n      fields: {\n        display: 'flex',\n        paddingTop: '4px'\n      },\n      single: {\n        flex: '1',\n        paddingLeft: '6px'\n      },\n      alpha: {\n        flex: '1',\n        paddingLeft: '6px'\n      },\n      double: {\n        flex: '2'\n      },\n      input: {\n        width: '80%',\n        padding: '4px 10% 3px',\n        border: 'none',\n        boxShadow: 'inset 0 0 0 1px #ccc',\n        fontSize: '11px'\n      },\n      label: {\n        display: 'block',\n        textAlign: 'center',\n        fontSize: '11px',\n        color: '#222',\n        paddingTop: '3px',\n        paddingBottom: '4px',\n        textTransform: 'capitalize'\n      }\n    },\n    'disableAlpha': {\n      alpha: {\n        display: 'none'\n      }\n    }\n  }, { disableAlpha: disableAlpha });\n\n  var handleChange = function handleChange(data, e) {\n    if (data.hex) {\n      color.isValidHex(data.hex) && onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    } else if (data.r || data.g || data.b) {\n      onChange({\n        r: data.r || rgb.r,\n        g: data.g || rgb.g,\n        b: data.b || rgb.b,\n        a: rgb.a,\n        source: 'rgb'\n      }, e);\n    } else if (data.a) {\n      if (data.a < 0) {\n        data.a = 0;\n      } else if (data.a > 100) {\n        data.a = 100;\n      }\n\n      data.a /= 100;\n      onChange({\n        h: hsl.h,\n        s: hsl.s,\n        l: hsl.l,\n        a: data.a,\n        source: 'rgb'\n      }, e);\n    }\n  };\n\n  return React.createElement(\n    'div',\n    { style: styles.fields, className: 'flexbox-fix' },\n    React.createElement(\n      'div',\n      { style: styles.double },\n      React.createElement(EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'hex',\n        value: hex.replace('#', ''),\n        onChange: handleChange\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.single },\n      React.createElement(EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'r',\n        value: rgb.r,\n        onChange: handleChange,\n        dragLabel: 'true',\n        dragMax: '255'\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.single },\n      React.createElement(EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'g',\n        value: rgb.g,\n        onChange: handleChange,\n        dragLabel: 'true',\n        dragMax: '255'\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.single },\n      React.createElement(EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'b',\n        value: rgb.b,\n        onChange: handleChange,\n        dragLabel: 'true',\n        dragMax: '255'\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.alpha },\n      React.createElement(EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'a',\n        value: Math.round(rgb.a * 100),\n        onChange: handleChange,\n        dragLabel: 'true',\n        dragMax: '100'\n      })\n    )\n  );\n};\n\nexport default SketchFields;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var SketchPresetColors = function SketchPresetColors(_ref) {\n  var colors = _ref.colors,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      onSwatchHover = _ref.onSwatchHover;\n\n  var styles = reactCSS({\n    'default': {\n      colors: {\n        margin: '0 -10px',\n        padding: '10px 0 0 10px',\n        borderTop: '1px solid #eee',\n        display: 'flex',\n        flexWrap: 'wrap',\n        position: 'relative'\n      },\n      swatchWrap: {\n        width: '16px',\n        height: '16px',\n        margin: '0 10px 10px 0'\n      },\n      swatch: {\n        borderRadius: '3px',\n        boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15)'\n      }\n    },\n    'no-presets': {\n      colors: {\n        display: 'none'\n      }\n    }\n  }, {\n    'no-presets': !colors || !colors.length\n  });\n\n  var handleClick = function handleClick(hex, e) {\n    onClick({\n      hex: hex,\n      source: 'hex'\n    }, e);\n  };\n\n  return React.createElement(\n    'div',\n    { style: styles.colors, className: 'flexbox-fix' },\n    colors.map(function (colorObjOrString) {\n      var c = typeof colorObjOrString === 'string' ? { color: colorObjOrString } : colorObjOrString;\n      var key = '' + c.color + (c.title || '');\n      return React.createElement(\n        'div',\n        { key: key, style: styles.swatchWrap },\n        React.createElement(Swatch, _extends({}, c, {\n          style: styles.swatch,\n          onClick: handleClick,\n          onHover: onSwatchHover,\n          focusStyle: {\n            boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px ' + c.color\n          }\n        }))\n      );\n    })\n  );\n};\n\nSketchPresetColors.propTypes = {\n  colors: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n    color: PropTypes.string,\n    title: PropTypes.string\n  })])).isRequired\n};\n\nexport default SketchPresetColors;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue, Alpha, Checkboard } from '../common';\nimport SketchFields from './SketchFields';\nimport SketchPresetColors from './SketchPresetColors';\n\nexport var Sketch = function Sketch(_ref) {\n  var width = _ref.width,\n      rgb = _ref.rgb,\n      hex = _ref.hex,\n      hsv = _ref.hsv,\n      hsl = _ref.hsl,\n      onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      disableAlpha = _ref.disableAlpha,\n      presetColors = _ref.presetColors,\n      renderers = _ref.renderers,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': _extends({\n      picker: {\n        width: width,\n        padding: '10px 10px 0',\n        boxSizing: 'initial',\n        background: '#fff',\n        borderRadius: '4px',\n        boxShadow: '0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)'\n      },\n      saturation: {\n        width: '100%',\n        paddingBottom: '75%',\n        position: 'relative',\n        overflow: 'hidden'\n      },\n      Saturation: {\n        radius: '3px',\n        shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n      },\n      controls: {\n        display: 'flex'\n      },\n      sliders: {\n        padding: '4px 0',\n        flex: '1'\n      },\n      color: {\n        width: '24px',\n        height: '24px',\n        position: 'relative',\n        marginTop: '4px',\n        marginLeft: '4px',\n        borderRadius: '3px'\n      },\n      activeColor: {\n        absolute: '0px 0px 0px 0px',\n        borderRadius: '2px',\n        background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')',\n        boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n      },\n      hue: {\n        position: 'relative',\n        height: '10px',\n        overflow: 'hidden'\n      },\n      Hue: {\n        radius: '2px',\n        shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n      },\n\n      alpha: {\n        position: 'relative',\n        height: '10px',\n        marginTop: '4px',\n        overflow: 'hidden'\n      },\n      Alpha: {\n        radius: '2px',\n        shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n      }\n    }, passedStyles),\n    'disableAlpha': {\n      color: {\n        height: '10px'\n      },\n      hue: {\n        height: '10px'\n      },\n      alpha: {\n        display: 'none'\n      }\n    }\n  }, passedStyles), { disableAlpha: disableAlpha });\n\n  return React.createElement(\n    'div',\n    { style: styles.picker, className: 'sketch-picker ' + className },\n    React.createElement(\n      'div',\n      { style: styles.saturation },\n      React.createElement(Saturation, {\n        style: styles.Saturation,\n        hsl: hsl,\n        hsv: hsv,\n        onChange: onChange\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.controls, className: 'flexbox-fix' },\n      React.createElement(\n        'div',\n        { style: styles.sliders },\n        React.createElement(\n          'div',\n          { style: styles.hue },\n          React.createElement(Hue, {\n            style: styles.Hue,\n            hsl: hsl,\n            onChange: onChange\n          })\n        ),\n        React.createElement(\n          'div',\n          { style: styles.alpha },\n          React.createElement(Alpha, {\n            style: styles.Alpha,\n            rgb: rgb,\n            hsl: hsl,\n            renderers: renderers,\n            onChange: onChange\n          })\n        )\n      ),\n      React.createElement(\n        'div',\n        { style: styles.color },\n        React.createElement(Checkboard, null),\n        React.createElement('div', { style: styles.activeColor })\n      )\n    ),\n    React.createElement(SketchFields, {\n      rgb: rgb,\n      hsl: hsl,\n      hex: hex,\n      onChange: onChange,\n      disableAlpha: disableAlpha\n    }),\n    React.createElement(SketchPresetColors, {\n      colors: presetColors,\n      onClick: onChange,\n      onSwatchHover: onSwatchHover\n    })\n  );\n};\n\nSketch.propTypes = {\n  disableAlpha: PropTypes.bool,\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  styles: PropTypes.object\n};\n\nSketch.defaultProps = {\n  disableAlpha: false,\n  width: 200,\n  styles: {},\n  presetColors: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF']\n};\n\nexport default ColorWrap(Sketch);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderSwatch = function SliderSwatch(_ref) {\n  var hsl = _ref.hsl,\n      offset = _ref.offset,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      active = _ref.active,\n      first = _ref.first,\n      last = _ref.last;\n\n  var styles = reactCSS({\n    'default': {\n      swatch: {\n        height: '12px',\n        background: 'hsl(' + hsl.h + ', 50%, ' + offset * 100 + '%)',\n        cursor: 'pointer'\n      }\n    },\n    'first': {\n      swatch: {\n        borderRadius: '2px 0 0 2px'\n      }\n    },\n    'last': {\n      swatch: {\n        borderRadius: '0 2px 2px 0'\n      }\n    },\n    'active': {\n      swatch: {\n        transform: 'scaleY(1.8)',\n        borderRadius: '3.6px/2px'\n      }\n    }\n  }, { active: active, first: first, last: last });\n\n  var handleClick = function handleClick(e) {\n    return onClick({\n      h: hsl.h,\n      s: 0.5,\n      l: offset,\n      source: 'hsl'\n    }, e);\n  };\n\n  return React.createElement('div', { style: styles.swatch, onClick: handleClick });\n};\n\nexport default SliderSwatch;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nimport SliderSwatch from './SliderSwatch';\n\nexport var SliderSwatches = function SliderSwatches(_ref) {\n  var onClick = _ref.onClick,\n      hsl = _ref.hsl;\n\n  var styles = reactCSS({\n    'default': {\n      swatches: {\n        marginTop: '20px'\n      },\n      swatch: {\n        boxSizing: 'border-box',\n        width: '20%',\n        paddingRight: '1px',\n        float: 'left'\n      },\n      clear: {\n        clear: 'both'\n      }\n    }\n  });\n\n  // Acceptible difference in floating point equality\n  var epsilon = 0.1;\n\n  return React.createElement(\n    'div',\n    { style: styles.swatches },\n    React.createElement(\n      'div',\n      { style: styles.swatch },\n      React.createElement(SliderSwatch, {\n        hsl: hsl,\n        offset: '.80',\n        active: Math.abs(hsl.l - 0.80) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick,\n        first: true\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.swatch },\n      React.createElement(SliderSwatch, {\n        hsl: hsl,\n        offset: '.65',\n        active: Math.abs(hsl.l - 0.65) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.swatch },\n      React.createElement(SliderSwatch, {\n        hsl: hsl,\n        offset: '.50',\n        active: Math.abs(hsl.l - 0.50) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.swatch },\n      React.createElement(SliderSwatch, {\n        hsl: hsl,\n        offset: '.35',\n        active: Math.abs(hsl.l - 0.35) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.swatch },\n      React.createElement(SliderSwatch, {\n        hsl: hsl,\n        offset: '.20',\n        active: Math.abs(hsl.l - 0.20) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick,\n        last: true\n      })\n    ),\n    React.createElement('div', { style: styles.clear })\n  );\n};\n\nexport default SliderSwatches;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderPointer = function SliderPointer() {\n  var styles = reactCSS({\n    'default': {\n      picker: {\n        width: '14px',\n        height: '14px',\n        borderRadius: '6px',\n        transform: 'translate(-7px, -1px)',\n        backgroundColor: 'rgb(248, 248, 248)',\n        boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n      }\n    }\n  });\n\n  return React.createElement('div', { style: styles.picker });\n};\n\nexport default SliderPointer;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Hue } from '../common';\nimport SliderSwatches from './SliderSwatches';\nimport SliderPointer from './SliderPointer';\n\nexport var Slider = function Slider(_ref) {\n  var hsl = _ref.hsl,\n      onChange = _ref.onChange,\n      pointer = _ref.pointer,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': {\n      hue: {\n        height: '12px',\n        position: 'relative'\n      },\n      Hue: {\n        radius: '2px'\n      }\n    }\n  }, passedStyles));\n\n  return React.createElement(\n    'div',\n    { style: styles.wrap || {}, className: 'slider-picker ' + className },\n    React.createElement(\n      'div',\n      { style: styles.hue },\n      React.createElement(Hue, {\n        style: styles.Hue,\n        hsl: hsl,\n        pointer: pointer,\n        onChange: onChange\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.swatches },\n      React.createElement(SliderSwatches, { hsl: hsl, onClick: onChange })\n    )\n  );\n};\n\nSlider.propTypes = {\n  styles: PropTypes.object\n};\nSlider.defaultProps = {\n  pointer: SliderPointer,\n  styles: {}\n};\n\nexport default ColorWrap(Slider);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as colorUtils from '../../helpers/color';\n\nimport { Swatch } from '../common';\nimport CheckIcon from '@icons/material/CheckIcon';\n\nexport var SwatchesColor = function SwatchesColor(_ref) {\n  var color = _ref.color,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      onSwatchHover = _ref.onSwatchHover,\n      first = _ref.first,\n      last = _ref.last,\n      active = _ref.active;\n\n  var styles = reactCSS({\n    'default': {\n      color: {\n        width: '40px',\n        height: '24px',\n        cursor: 'pointer',\n        background: color,\n        marginBottom: '1px'\n      },\n      check: {\n        color: colorUtils.getContrastingColor(color),\n        marginLeft: '8px',\n        display: 'none'\n      }\n    },\n    'first': {\n      color: {\n        overflow: 'hidden',\n        borderRadius: '2px 2px 0 0'\n      }\n    },\n    'last': {\n      color: {\n        overflow: 'hidden',\n        borderRadius: '0 0 2px 2px'\n      }\n    },\n    'active': {\n      check: {\n        display: 'block'\n      }\n    },\n    'color-#FFFFFF': {\n      color: {\n        boxShadow: 'inset 0 0 0 1px #ddd'\n      },\n      check: {\n        color: '#333'\n      }\n    },\n    'transparent': {\n      check: {\n        color: '#333'\n      }\n    }\n  }, {\n    first: first,\n    last: last,\n    active: active,\n    'color-#FFFFFF': color === '#FFFFFF',\n    'transparent': color === 'transparent'\n  });\n\n  return React.createElement(\n    Swatch,\n    {\n      color: color,\n      style: styles.color,\n      onClick: onClick,\n      onHover: onSwatchHover,\n      focusStyle: { boxShadow: '0 0 4px ' + color }\n    },\n    React.createElement(\n      'div',\n      { style: styles.check },\n      React.createElement(CheckIcon, null)\n    )\n  );\n};\n\nexport default SwatchesColor;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\n\nimport SwatchesColor from './SwatchesColor';\n\nexport var SwatchesGroup = function SwatchesGroup(_ref) {\n  var onClick = _ref.onClick,\n      onSwatchHover = _ref.onSwatchHover,\n      group = _ref.group,\n      active = _ref.active;\n\n  var styles = reactCSS({\n    'default': {\n      group: {\n        paddingBottom: '10px',\n        width: '40px',\n        float: 'left',\n        marginRight: '10px'\n      }\n    }\n  });\n\n  return React.createElement(\n    'div',\n    { style: styles.group },\n    map(group, function (color, i) {\n      return React.createElement(SwatchesColor, {\n        key: color,\n        color: color,\n        active: color.toLowerCase() === active,\n        first: i === 0,\n        last: i === group.length - 1,\n        onClick: onClick,\n        onSwatchHover: onSwatchHover\n      });\n    })\n  );\n};\n\nexport default SwatchesGroup;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as material from 'material-colors';\n\nimport { ColorWrap, Raised } from '../common';\nimport SwatchesGroup from './SwatchesGroup';\n\nexport var Swatches = function Swatches(_ref) {\n  var width = _ref.width,\n      height = _ref.height,\n      onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      colors = _ref.colors,\n      hex = _ref.hex,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': {\n      picker: {\n        width: width,\n        height: height\n      },\n      overflow: {\n        height: height,\n        overflowY: 'scroll'\n      },\n      body: {\n        padding: '16px 0 6px 16px'\n      },\n      clear: {\n        clear: 'both'\n      }\n    }\n  }, passedStyles));\n\n  var handleChange = function handleChange(data, e) {\n    return onChange({ hex: data, source: 'hex' }, e);\n  };\n\n  return React.createElement(\n    'div',\n    { style: styles.picker, className: 'swatches-picker ' + className },\n    React.createElement(\n      Raised,\n      null,\n      React.createElement(\n        'div',\n        { style: styles.overflow },\n        React.createElement(\n          'div',\n          { style: styles.body },\n          map(colors, function (group) {\n            return React.createElement(SwatchesGroup, {\n              key: group.toString(),\n              group: group,\n              active: hex,\n              onClick: handleChange,\n              onSwatchHover: onSwatchHover\n            });\n          }),\n          React.createElement('div', { style: styles.clear })\n        )\n      )\n    )\n  );\n};\n\nSwatches.propTypes = {\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  colors: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n  styles: PropTypes.object\n\n  /* eslint-disable max-len */\n};Swatches.defaultProps = {\n  width: 320,\n  height: 240,\n  colors: [[material.red['900'], material.red['700'], material.red['500'], material.red['300'], material.red['100']], [material.pink['900'], material.pink['700'], material.pink['500'], material.pink['300'], material.pink['100']], [material.purple['900'], material.purple['700'], material.purple['500'], material.purple['300'], material.purple['100']], [material.deepPurple['900'], material.deepPurple['700'], material.deepPurple['500'], material.deepPurple['300'], material.deepPurple['100']], [material.indigo['900'], material.indigo['700'], material.indigo['500'], material.indigo['300'], material.indigo['100']], [material.blue['900'], material.blue['700'], material.blue['500'], material.blue['300'], material.blue['100']], [material.lightBlue['900'], material.lightBlue['700'], material.lightBlue['500'], material.lightBlue['300'], material.lightBlue['100']], [material.cyan['900'], material.cyan['700'], material.cyan['500'], material.cyan['300'], material.cyan['100']], [material.teal['900'], material.teal['700'], material.teal['500'], material.teal['300'], material.teal['100']], ['#194D33', material.green['700'], material.green['500'], material.green['300'], material.green['100']], [material.lightGreen['900'], material.lightGreen['700'], material.lightGreen['500'], material.lightGreen['300'], material.lightGreen['100']], [material.lime['900'], material.lime['700'], material.lime['500'], material.lime['300'], material.lime['100']], [material.yellow['900'], material.yellow['700'], material.yellow['500'], material.yellow['300'], material.yellow['100']], [material.amber['900'], material.amber['700'], material.amber['500'], material.amber['300'], material.amber['100']], [material.orange['900'], material.orange['700'], material.orange['500'], material.orange['300'], material.orange['100']], [material.deepOrange['900'], material.deepOrange['700'], material.deepOrange['500'], material.deepOrange['300'], material.deepOrange['100']], [material.brown['900'], material.brown['700'], material.brown['500'], material.brown['300'], material.brown['100']], [material.blueGrey['900'], material.blueGrey['700'], material.blueGrey['500'], material.blueGrey['300'], material.blueGrey['100']], ['#000000', '#525252', '#969696', '#D9D9D9', '#FFFFFF']],\n  styles: {}\n};\n\nexport default ColorWrap(Swatches);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Swatch } from '../common';\n\nexport var Twitter = function Twitter(_ref) {\n  var onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      hex = _ref.hex,\n      colors = _ref.colors,\n      width = _ref.width,\n      triangle = _ref.triangle,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': {\n      card: {\n        width: width,\n        background: '#fff',\n        border: '0 solid rgba(0,0,0,0.25)',\n        boxShadow: '0 1px 4px rgba(0,0,0,0.25)',\n        borderRadius: '4px',\n        position: 'relative'\n      },\n      body: {\n        padding: '15px 9px 9px 15px'\n      },\n      label: {\n        fontSize: '18px',\n        color: '#fff'\n      },\n      triangle: {\n        width: '0px',\n        height: '0px',\n        borderStyle: 'solid',\n        borderWidth: '0 9px 10px 9px',\n        borderColor: 'transparent transparent #fff transparent',\n        position: 'absolute'\n      },\n      triangleShadow: {\n        width: '0px',\n        height: '0px',\n        borderStyle: 'solid',\n        borderWidth: '0 9px 10px 9px',\n        borderColor: 'transparent transparent rgba(0,0,0,.1) transparent',\n        position: 'absolute'\n      },\n      hash: {\n        background: '#F0F0F0',\n        height: '30px',\n        width: '30px',\n        borderRadius: '4px 0 0 4px',\n        float: 'left',\n        color: '#98A1A4',\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'center'\n      },\n      input: {\n        width: '100px',\n        fontSize: '14px',\n        color: '#666',\n        border: '0px',\n        outline: 'none',\n        height: '28px',\n        boxShadow: 'inset 0 0 0 1px #F0F0F0',\n        boxSizing: 'content-box',\n        borderRadius: '0 4px 4px 0',\n        float: 'left',\n        paddingLeft: '8px'\n      },\n      swatch: {\n        width: '30px',\n        height: '30px',\n        float: 'left',\n        borderRadius: '4px',\n        margin: '0 6px 6px 0'\n      },\n      clear: {\n        clear: 'both'\n      }\n    },\n    'hide-triangle': {\n      triangle: {\n        display: 'none'\n      },\n      triangleShadow: {\n        display: 'none'\n      }\n    },\n    'top-left-triangle': {\n      triangle: {\n        top: '-10px',\n        left: '12px'\n      },\n      triangleShadow: {\n        top: '-11px',\n        left: '12px'\n      }\n    },\n    'top-right-triangle': {\n      triangle: {\n        top: '-10px',\n        right: '12px'\n      },\n      triangleShadow: {\n        top: '-11px',\n        right: '12px'\n      }\n    }\n  }, passedStyles), {\n    'hide-triangle': triangle === 'hide',\n    'top-left-triangle': triangle === 'top-left',\n    'top-right-triangle': triangle === 'top-right'\n  });\n\n  var handleChange = function handleChange(hexcode, e) {\n    color.isValidHex(hexcode) && onChange({\n      hex: hexcode,\n      source: 'hex'\n    }, e);\n  };\n\n  return React.createElement(\n    'div',\n    { style: styles.card, className: 'twitter-picker ' + className },\n    React.createElement('div', { style: styles.triangleShadow }),\n    React.createElement('div', { style: styles.triangle }),\n    React.createElement(\n      'div',\n      { style: styles.body },\n      map(colors, function (c, i) {\n        return React.createElement(Swatch, {\n          key: i,\n          color: c,\n          hex: c,\n          style: styles.swatch,\n          onClick: handleChange,\n          onHover: onSwatchHover,\n          focusStyle: {\n            boxShadow: '0 0 4px ' + c\n          }\n        });\n      }),\n      React.createElement(\n        'div',\n        { style: styles.hash },\n        '#'\n      ),\n      React.createElement(EditableInput, {\n        label: null,\n        style: { input: styles.input },\n        value: hex.replace('#', ''),\n        onChange: handleChange\n      }),\n      React.createElement('div', { style: styles.clear })\n    )\n  );\n};\n\nTwitter.propTypes = {\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  triangle: PropTypes.oneOf(['hide', 'top-left', 'top-right']),\n  colors: PropTypes.arrayOf(PropTypes.string),\n  styles: PropTypes.object\n};\n\nTwitter.defaultProps = {\n  width: 276,\n  colors: ['#FF6900', '#FCB900', '#7BDCB5', '#00D084', '#8ED1FC', '#0693E3', '#ABB8C3', '#EB144C', '#F78DA7', '#9900EF'],\n  triangle: 'top-left',\n  styles: {}\n};\n\nexport default ColorWrap(Twitter);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport PropTypes from 'prop-types';\n\nexport var GooglePointerCircle = function GooglePointerCircle(props) {\n  var styles = reactCSS({\n    'default': {\n      picker: {\n        width: '20px',\n        height: '20px',\n        borderRadius: '22px',\n        border: '2px #fff solid',\n        transform: 'translate(-12px, -13px)',\n        background: 'hsl(' + Math.round(props.hsl.h) + ', ' + Math.round(props.hsl.s * 100) + '%, ' + Math.round(props.hsl.l * 100) + '%)'\n      }\n    }\n  });\n\n  return React.createElement('div', { style: styles.picker });\n};\n\nGooglePointerCircle.propTypes = {\n  hsl: PropTypes.shape({\n    h: PropTypes.number,\n    s: PropTypes.number,\n    l: PropTypes.number,\n    a: PropTypes.number\n  })\n};\n\nGooglePointerCircle.defaultProps = {\n  hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexport default GooglePointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport PropTypes from 'prop-types';\n\nexport var GooglePointer = function GooglePointer(props) {\n  var styles = reactCSS({\n    'default': {\n      picker: {\n        width: '20px',\n        height: '20px',\n        borderRadius: '22px',\n        transform: 'translate(-10px, -7px)',\n        background: 'hsl(' + Math.round(props.hsl.h) + ', 100%, 50%)',\n        border: '2px white solid'\n      }\n    }\n  });\n\n  return React.createElement('div', { style: styles.picker });\n};\n\nGooglePointer.propTypes = {\n  hsl: PropTypes.shape({\n    h: PropTypes.number,\n    s: PropTypes.number,\n    l: PropTypes.number,\n    a: PropTypes.number\n  })\n};\n\nGooglePointer.defaultProps = {\n  hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexport default GooglePointer;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\nimport { EditableInput } from '../common';\n\nexport var GoogleFields = function GoogleFields(_ref) {\n  var onChange = _ref.onChange,\n      rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      hex = _ref.hex,\n      hsv = _ref.hsv;\n\n\n  var handleChange = function handleChange(data, e) {\n    if (data.hex) {\n      color.isValidHex(data.hex) && onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    } else if (data.rgb) {\n      var values = data.rgb.split(',');\n      color.isvalidColorString(data.rgb, 'rgb') && onChange({\n        r: values[0],\n        g: values[1],\n        b: values[2],\n        a: 1,\n        source: 'rgb'\n      }, e);\n    } else if (data.hsv) {\n      var _values = data.hsv.split(',');\n      if (color.isvalidColorString(data.hsv, 'hsv')) {\n        _values[2] = _values[2].replace('%', '');\n        _values[1] = _values[1].replace('%', '');\n        _values[0] = _values[0].replace('°', '');\n        if (_values[1] == 1) {\n          _values[1] = 0.01;\n        } else if (_values[2] == 1) {\n          _values[2] = 0.01;\n        }\n        onChange({\n          h: Number(_values[0]),\n          s: Number(_values[1]),\n          v: Number(_values[2]),\n          source: 'hsv'\n        }, e);\n      }\n    } else if (data.hsl) {\n      var _values2 = data.hsl.split(',');\n      if (color.isvalidColorString(data.hsl, 'hsl')) {\n        _values2[2] = _values2[2].replace('%', '');\n        _values2[1] = _values2[1].replace('%', '');\n        _values2[0] = _values2[0].replace('°', '');\n        if (hsvValue[1] == 1) {\n          hsvValue[1] = 0.01;\n        } else if (hsvValue[2] == 1) {\n          hsvValue[2] = 0.01;\n        }\n        onChange({\n          h: Number(_values2[0]),\n          s: Number(_values2[1]),\n          v: Number(_values2[2]),\n          source: 'hsl'\n        }, e);\n      }\n    }\n  };\n\n  var styles = reactCSS({\n    'default': {\n      wrap: {\n        display: 'flex',\n        height: '100px',\n        marginTop: '4px'\n      },\n      fields: {\n        width: '100%'\n      },\n      column: {\n        paddingTop: '10px',\n        display: 'flex',\n        justifyContent: 'space-between'\n      },\n      double: {\n        padding: '0px 4.4px',\n        boxSizing: 'border-box'\n      },\n      input: {\n        width: '100%',\n        height: '38px',\n        boxSizing: 'border-box',\n        padding: '4px 10% 3px',\n        textAlign: 'center',\n        border: '1px solid #dadce0',\n        fontSize: '11px',\n        textTransform: 'lowercase',\n        borderRadius: '5px',\n        outline: 'none',\n        fontFamily: 'Roboto,Arial,sans-serif'\n      },\n      input2: {\n        height: '38px',\n        width: '100%',\n        border: '1px solid #dadce0',\n        boxSizing: 'border-box',\n        fontSize: '11px',\n        textTransform: 'lowercase',\n        borderRadius: '5px',\n        outline: 'none',\n        paddingLeft: '10px',\n        fontFamily: 'Roboto,Arial,sans-serif'\n      },\n      label: {\n        textAlign: 'center',\n        fontSize: '12px',\n        background: '#fff',\n        position: 'absolute',\n        textTransform: 'uppercase',\n        color: '#3c4043',\n        width: '35px',\n        top: '-6px',\n        left: '0',\n        right: '0',\n        marginLeft: 'auto',\n        marginRight: 'auto',\n        fontFamily: 'Roboto,Arial,sans-serif'\n      },\n      label2: {\n        left: '10px',\n        textAlign: 'center',\n        fontSize: '12px',\n        background: '#fff',\n        position: 'absolute',\n        textTransform: 'uppercase',\n        color: '#3c4043',\n        width: '32px',\n        top: '-6px',\n        fontFamily: 'Roboto,Arial,sans-serif'\n      },\n      single: {\n        flexGrow: '1',\n        margin: '0px 4.4px'\n      }\n    }\n  });\n\n  var rgbValue = rgb.r + ', ' + rgb.g + ', ' + rgb.b;\n  var hslValue = Math.round(hsl.h) + '\\xB0, ' + Math.round(hsl.s * 100) + '%, ' + Math.round(hsl.l * 100) + '%';\n  var hsvValue = Math.round(hsv.h) + '\\xB0, ' + Math.round(hsv.s * 100) + '%, ' + Math.round(hsv.v * 100) + '%';\n\n  return React.createElement(\n    'div',\n    { style: styles.wrap, className: 'flexbox-fix' },\n    React.createElement(\n      'div',\n      { style: styles.fields },\n      React.createElement(\n        'div',\n        { style: styles.double },\n        React.createElement(EditableInput, {\n          style: { input: styles.input, label: styles.label },\n          label: 'hex',\n          value: hex,\n          onChange: handleChange\n        })\n      ),\n      React.createElement(\n        'div',\n        { style: styles.column },\n        React.createElement(\n          'div',\n          { style: styles.single },\n          React.createElement(EditableInput, {\n            style: { input: styles.input2, label: styles.label2 },\n            label: 'rgb',\n            value: rgbValue,\n            onChange: handleChange\n          })\n        ),\n        React.createElement(\n          'div',\n          { style: styles.single },\n          React.createElement(EditableInput, {\n            style: { input: styles.input2, label: styles.label2 },\n            label: 'hsv',\n            value: hsvValue,\n            onChange: handleChange\n          })\n        ),\n        React.createElement(\n          'div',\n          { style: styles.single },\n          React.createElement(EditableInput, {\n            style: { input: styles.input2, label: styles.label2 },\n            label: 'hsl',\n            value: hslValue,\n            onChange: handleChange\n          })\n        )\n      )\n    )\n  );\n};\n\nexport default GoogleFields;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue } from '../common';\nimport GooglePointerCircle from './GooglePointerCircle';\nimport GooglePointer from './GooglePointer';\nimport GoogleFields from './GoogleFields';\n\nexport var Google = function Google(_ref) {\n  var width = _ref.width,\n      onChange = _ref.onChange,\n      rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      hsv = _ref.hsv,\n      hex = _ref.hex,\n      header = _ref.header,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactCSS(merge({\n    'default': {\n      picker: {\n        width: width,\n        background: '#fff',\n        border: '1px solid #dfe1e5',\n        boxSizing: 'initial',\n        display: 'flex',\n        flexWrap: 'wrap',\n        borderRadius: '8px 8px 0px 0px'\n      },\n      head: {\n        height: '57px',\n        width: '100%',\n        paddingTop: '16px',\n        paddingBottom: '16px',\n        paddingLeft: '16px',\n        fontSize: '20px',\n        boxSizing: 'border-box',\n        fontFamily: 'Roboto-Regular,HelveticaNeue,Arial,sans-serif'\n      },\n      saturation: {\n        width: '70%',\n        padding: '0px',\n        position: 'relative',\n        overflow: 'hidden'\n      },\n      swatch: {\n        width: '30%',\n        height: '228px',\n        padding: '0px',\n        background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', 1)',\n        position: 'relative',\n        overflow: 'hidden'\n      },\n      body: {\n        margin: 'auto',\n        width: '95%'\n      },\n      controls: {\n        display: 'flex',\n        boxSizing: 'border-box',\n        height: '52px',\n        paddingTop: '22px'\n      },\n      color: {\n        width: '32px'\n      },\n      hue: {\n        height: '8px',\n        position: 'relative',\n        margin: '0px 16px 0px 16px',\n        width: '100%'\n      },\n      Hue: {\n        radius: '2px'\n      }\n    }\n  }, passedStyles));\n  return React.createElement(\n    'div',\n    { style: styles.picker, className: 'google-picker ' + className },\n    React.createElement(\n      'div',\n      { style: styles.head },\n      header\n    ),\n    React.createElement('div', { style: styles.swatch }),\n    React.createElement(\n      'div',\n      { style: styles.saturation },\n      React.createElement(Saturation, {\n        hsl: hsl,\n        hsv: hsv,\n        pointer: GooglePointerCircle,\n        onChange: onChange\n      })\n    ),\n    React.createElement(\n      'div',\n      { style: styles.body },\n      React.createElement(\n        'div',\n        { style: styles.controls, className: 'flexbox-fix' },\n        React.createElement(\n          'div',\n          { style: styles.hue },\n          React.createElement(Hue, {\n            style: styles.Hue,\n            hsl: hsl,\n            radius: '4px',\n            pointer: GooglePointer,\n            onChange: onChange\n          })\n        )\n      ),\n      React.createElement(GoogleFields, {\n        rgb: rgb,\n        hsl: hsl,\n        hex: hex,\n        hsv: hsv,\n        onChange: onChange\n      })\n    )\n  );\n};\n\nGoogle.propTypes = {\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  styles: PropTypes.object,\n  header: PropTypes.string\n\n};\n\nGoogle.defaultProps = {\n  width: 652,\n  styles: {},\n  header: 'Color picker'\n};\n\nexport default ColorWrap(Google);","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { SketchPicker } from 'react-color';\nimport { Swipeable } from 'react-swipeable';\n\nimport './ColorPickerModal.scss';\n\nconst ColorPickerModal = ({ isDisabled, isOpen, color, closeModal, handleChangeSave, handleChangeCancel }) => {\n  const [t] = useTranslation();\n  const [selectedColor, setSelectedColor] = useState({});\n  const modalClass = classNames({\n    Modal: true,\n    ColorPickerModal: true,\n    open: isOpen,\n    closed: !isOpen,\n  });\n\n  useEffect(() => {\n    const black = { r: 0, g: 0, b: 0, a: 1 };\n    if (color && color.A !== 0){\n      setSelectedColor({ r: color.R, g: color.G, b: color.B, a: 1 });\n    } else {\n      setSelectedColor(black);\n    }\n  }, [color]);\n\n  const handleChangeComplete = newColor => {\n    setSelectedColor(newColor.rgb);\n  };\n\n  const handleSave = () => {\n    handleChangeSave(selectedColor);\n  }\n\n  return isDisabled ? null : (\n    <Swipeable onSwipedUp={closeModal} onSwipedDown={closeModal} preventDefaultTouchmoveEvent>\n      <div className={modalClass} data-element=\"ColorPickerModal\" onMouseDown={closeModal}>\n        <div className=\"container\" onMouseDown={e => e.stopPropagation()}>\n          <div className=\"swipe-indicator\" />\n          <SketchPicker\n            color={selectedColor}\n            disableAlpha={true}\n            onChange={handleChangeComplete}\n            presetColors={[]}\n          />\n          <div className=\"buttons\">\n            <button className=\"cancel-button\" onClick={handleChangeCancel}>\n              {t('action.cancel')}\n            </button>\n            <button className=\"save-button\" onClick={handleSave}>\n              {t('action.ok')}\n            </button>\n          </div>\n        </div>\n      </div>\n    </Swipeable>\n  );\n};\n\nexport default ColorPickerModal;\n","import React, { useCallback } from 'react';\r\nimport ColorPickerModal from './ColorPickerModal';\r\n\r\nfunction ColorPickerModalContainer(props) {\r\n  const { closeColorPicker, onColorChange, ...rest } = props;\r\n\r\n  const closeModal = useCallback(() => {\r\n    closeColorPicker();\r\n  }, [closeColorPicker]);\r\n\r\n  const handleChangeSave = selectedColor => {\r\n    onColorChange(selectedColor);\r\n    closeColorPicker();\r\n  };\r\n\r\n  const handleChangeCancel = useCallback(() => {\r\n    closeColorPicker();\r\n  }, [closeColorPicker]);\r\n\r\n  const newProps = {\r\n    ...rest,\r\n    closeModal,\r\n    handleChangeSave,\r\n    handleChangeCancel,\r\n  };\r\n\r\n  return <ColorPickerModal {...newProps} />;\r\n}\r\n\r\nexport default ColorPickerModalContainer;\r\n","import React from 'react';\r\nimport selectors from 'selectors';\r\nimport actions from 'actions';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport ColorPickerModalContainer from './ColorPickerModalContainer';\r\n\r\nfunction ColorPickerModalRedux(props) {\r\n  const dispatch = useDispatch();\r\n  const [isDisabled, isOpen, color] = useSelector(state => [\r\n    selectors.isElementDisabled(state, 'ColorPickerModal'),\r\n    selectors.isElementOpen(state, 'ColorPickerModal'),\r\n    selectors.getCustomColor(state),\r\n  ]);\r\n\r\n  const onColorChange = (selectedColor) => {\r\n    const convertedColor = new window.Annotations.Color(selectedColor.r, selectedColor.g, selectedColor.b, selectedColor.a)\r\n    dispatch(actions.setCustomColor(convertedColor));\r\n  };\r\n\r\n  const closeColorPicker = () => {\r\n    dispatch(actions.closeElement('ColorPickerModal'));\r\n  };\r\n\r\n  const newProps = {\r\n    ...props,\r\n    color,\r\n    onColorChange,\r\n    isDisabled,\r\n    closeColorPicker,\r\n    isOpen,\r\n  };\r\n  return <ColorPickerModalContainer {...newProps} />;\r\n}\r\n\r\nexport default ColorPickerModalRedux;\r\n","import ColorPickerModalRedux from './ColorPickerModalRedux';\n\nexport default ColorPickerModalRedux; ","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport Button from 'components/Button';\n\nfunction PageInsertionControls(props) {\n  const { t } = useTranslation();\n  const { insertAbove, insertBelow } = props;\n\n  return (\n    <>\n      <DataElementWrapper\n        dataElement=\"pageInsertionHeader\"\n        className=\"type\"\n      >\n        {t('action.insertPage')}\n      </DataElementWrapper>\n      <DataElementWrapper\n        className=\"row\"\n        dataElement=\"insertPageAbove\"\n        onClick={insertAbove}\n      >\n        <Button\n          title=\"action.insertBlankPageAbove\"\n          img=\"icon-page-insertion-insert-above\"\n          role=\"option\"\n        />\n        <div className=\"title\">{t('action.insertBlankPageAbove')}</div>\n      </DataElementWrapper>\n      <DataElementWrapper\n        className=\"row\"\n        dataElement=\"insertPageBelow\"\n        onClick={insertBelow}\n      >\n        <Button\n          title=\"action.insertBlankPageBelow\"\n          img=\"icon-page-insertion-insert-below\"\n          role=\"option\"\n        />\n        <div className=\"title\">{t('action.insertBlankPageBelow')}</div>\n      </DataElementWrapper>\n    </>\n  );\n\n}\n\nexport default PageInsertionControls;","import React from 'react';\nimport PageInsertionControls from './PageInsertionControls';\nimport { insertAbove, insertBelow, noPagesSelectedWarning } from \"helpers/pageManipulationFunctions\";\nimport { useDispatch } from \"react-redux\";\nimport PropTypes from 'prop-types';\nimport actions from 'actions';\nimport { isMobile } from 'helpers/device';\n\nconst propTypes = {\n  pageNumbers: PropTypes.arrayOf(PropTypes.number),\n  warn: PropTypes.bool,\n};\n\nfunction PageInsertionControlsContainer(props) {\n  const dispatch = useDispatch();\n  const { pageNumbers, warn } = props;\n\n  const onInsertAbove = () => {\n    if (warn) {\n      !noPagesSelectedWarning(pageNumbers, dispatch) && insertAbove(pageNumbers);\n    } else {\n      insertAbove(pageNumbers);\n    }\n    isMobile() && dispatch(actions.closeElement(\"pageManipulationOverlay\"));\n  };\n  const onInsertBelow = () => {\n    if (warn) {\n      !noPagesSelectedWarning(pageNumbers, dispatch) && insertBelow(pageNumbers);\n    } else {\n      insertBelow(pageNumbers);\n    }\n    isMobile() && dispatch(actions.closeElement(\"pageManipulationOverlay\"));\n  };\n  return (\n    <PageInsertionControls\n      insertAbove={onInsertAbove}\n      insertBelow={onInsertBelow}\n    />\n  );\n}\n\nPageInsertionControlsContainer.propTypes = propTypes;\n\nexport default PageInsertionControlsContainer;","import PageInsertionControls from './PageInsertionControlsContainer';\n\nexport default PageInsertionControls;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport Button from 'components/Button';\n\n\n\nfunction PageRotationControls(props) {\n  const { t } = useTranslation();\n  const { rotateClockwise, rotateCounterClockwise } = props;\n\n  \n\n\n  return (\n    <>\n      <DataElementWrapper\n        dataElement=\"pageRotationHeader\"\n        className=\"type\"\n      >\n        {t('action.rotate')}\n      </DataElementWrapper>\n      <DataElementWrapper\n        dataElement=\"rotatePageClockwise\"\n        className=\"row\"\n        onClick={rotateClockwise}\n      >\n        <Button\n          title=\"action.rotateClockwise\"\n          img=\"icon-header-page-manipulation-page-rotation-clockwise-line\"\n          role=\"option\"\n        />\n        <div className=\"title\">{t('action.rotateClockwise')}</div>\n      </DataElementWrapper>\n      <DataElementWrapper\n        dataElement=\"rotatePageCounterClockwise\"\n        className=\"row\"\n        onClick={rotateCounterClockwise}\n      >\n        <Button\n          title=\"action.rotateCounterClockwise\"\n          img=\"icon-header-page-manipulation-page-rotation-counterclockwise-line\"\n          role=\"option\"\n        />\n        <div className=\"title\">{t('action.rotateCounterClockwise')}</div>\n      </DataElementWrapper>\n    </>\n  );\n}\n\nexport default PageRotationControls;","import React from 'react';\nimport PageRotationControls from './PageRotationControls';\nimport { noPagesSelectedWarning, rotateClockwise, rotateCounterClockwise } from \"helpers/pageManipulationFunctions\";\nimport { useDispatch } from \"react-redux\";\nimport PropTypes from 'prop-types';\nimport actions from 'actions';\nimport { isMobile } from 'helpers/device';\n\nconst propTypes = {\n  pageNumbers: PropTypes.arrayOf(PropTypes.number),\n  warn: PropTypes.bool,\n};\n\nfunction PageRotationControlsContainer(props) {\n  const dispatch = useDispatch();\n  const { pageNumbers, warn } = props;\n\n  const onRotateCounterClockwise = () => {\n    if (warn) {\n      !noPagesSelectedWarning(pageNumbers, dispatch) && rotateCounterClockwise(pageNumbers);\n    } else {\n      rotateCounterClockwise(pageNumbers);\n    }\n    isMobile() && dispatch(actions.closeElement(\"pageManipulationOverlay\"));\n  };\n  const onRotateClockwise = () => {\n    if (warn) {\n      !noPagesSelectedWarning(pageNumbers, dispatch) && rotateClockwise(pageNumbers);\n    } else {\n      rotateClockwise(pageNumbers);\n    }\n    isMobile() && dispatch(actions.closeElement(\"pageManipulationOverlay\"));\n  };\n  return (\n    <PageRotationControls\n      rotateCounterClockwise={onRotateCounterClockwise}\n      rotateClockwise={onRotateClockwise}\n    />\n  );\n}\n\nPageRotationControlsContainer.propTypes = propTypes;\n\nexport default PageRotationControlsContainer;","import PageRotationControls from './PageRotationControlsContainer';\n\nexport default PageRotationControls","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport Button from 'components/Button';\n\nfunction PageManipulationControls(props) {\n  const { t } = useTranslation();\n  const { deletePages, extractPages, replacePages } = props;\n\n  return (\n    <>\n      <DataElementWrapper\n        dataElement=\"pageManipulationHeader\"\n        className=\"type\"\n      >\n        {t('action.pageManipulation')}\n      </DataElementWrapper>\n      <DataElementWrapper\n        className='row'\n        dataElement='replacePage'\n        onClick={replacePages}\n      >\n        <Button\n          title='action.replace'\n          img='icon-page-replacement'\n          role='option'\n        />\n        <div className='title'>{t('action.replace')}</div>\n      </DataElementWrapper>\n      <DataElementWrapper\n        className=\"row\"\n        dataElement=\"extractPage\"\n        onClick={extractPages}\n      >\n        <Button\n          title=\"action.extract\"\n          img=\"icon-page-manipulation-extract\"\n          role=\"option\"\n        />\n        <div className=\"title\">{t('action.extract')}</div>\n      </DataElementWrapper>\n      <DataElementWrapper\n        dataElement=\"deletePage\"\n        className=\"row\"\n        onClick={deletePages}\n      >\n        <Button\n          title=\"action.delete\"\n          img=\"icon-page-manipulation-delete\"\n          role=\"option\"\n        />\n        <div className=\"title\">{t('action.delete')}</div>\n      </DataElementWrapper>\n    </>\n  );\n\n\n\n}\n\n\nexport default PageManipulationControls;","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport PageManipulationControls from './PageManipulationControls';\nimport { deletePages, extractPages, noPagesSelectedWarning, replace } from \"helpers/pageManipulationFunctions\";\nimport PropTypes from 'prop-types';\nimport actions from 'actions';\nimport { isMobile } from 'helpers/device';\n\nconst propTypes = {\n  pageNumbers: PropTypes.arrayOf(PropTypes.number),\n  warn: PropTypes.bool,\n};\n\nfunction PageManipulationControlsContainer(props) {\n  const dispatch = useDispatch();\n  const { pageNumbers, warn } = props;\n  const [isPageDeletionConfirmationModalEnabled] = useSelector(state => [\n    selectors.pageDeletionConfirmationModalEnabled(state),\n  ]);\n\n  const onReplace = () => {\n    if (warn) {\n      !noPagesSelectedWarning(pageNumbers, dispatch) && replace(dispatch);\n    } else {\n      replace(dispatch);\n    }\n    isMobile() && dispatch(actions.closeElement(\"pageManipulationOverlay\"));\n  };\n  const onExtract = () => {\n    if (warn) {\n      !noPagesSelectedWarning(pageNumbers, dispatch) && extractPages(pageNumbers, dispatch);\n    } else {\n      extractPages(pageNumbers, dispatch);\n    }\n    isMobile() && dispatch(actions.closeElement(\"pageManipulationOverlay\"));\n  };\n  const onDelete = () => {\n    if (warn) {\n      !noPagesSelectedWarning(pageNumbers, dispatch) && deletePages(pageNumbers, dispatch, isPageDeletionConfirmationModalEnabled);\n    } else {\n      deletePages(pageNumbers, dispatch, isPageDeletionConfirmationModalEnabled);\n    }\n    isMobile() && dispatch(actions.closeElement(\"pageManipulationOverlay\"));\n  };\n\n  return (\n    <PageManipulationControls\n      deletePages={onDelete}\n      extractPages={onExtract}\n      replacePages={onReplace}\n    />\n  );\n}\n\nPageManipulationControlsContainer.propTypes = propTypes;\n\nexport default PageManipulationControlsContainer;","import PageManipulationControls from './PageManipulationControlsContainer';\n\nexport default PageManipulationControls;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport Button from 'components/Button';\n\nfunction PageAdditionalControls(props) {\n  const { t } = useTranslation();\n  const { moveToTop, moveToBottom } = props;\n\n  return (\n    <>\n      <DataElementWrapper\n        dataElement=\"pageAdditionalControlsHeader\"\n        className=\"type\"\n      >\n        {t('option.thumbnailsControlOverlay.move')}\n      </DataElementWrapper>\n      <DataElementWrapper\n        className=\"row\"\n        dataElement=\"moveToTop\"\n        onClick={moveToTop}\n      >\n        <Button\n          title=\"action.moveToTop\"\n          img=\"icon-page-move-up\"\n          role=\"option\"\n          onClick={moveToTop}\n        />\n        <div className=\"title\">{t('action.moveToTop')}</div>\n      </DataElementWrapper>\n      <DataElementWrapper\n        className=\"row\"\n        dataElement=\"moveToBottom\"\n        onClick={moveToBottom}\n      >\n        <Button\n          title=\"action.moveToBottom\"\n          img=\"icon-page-move-down\"\n          role=\"option\"\n          onClick={moveToBottom}\n        />\n        <div className=\"title\">{t('action.moveToBottom')}</div>\n      </DataElementWrapper>\n    </>\n  );\n\n}\n\nexport default PageAdditionalControls;","import React from 'react';\nimport PageAdditionalControls from './PageAdditionalControls';\nimport { movePagesToBottom, movePagesToTop, noPagesSelectedWarning } from \"helpers/pageManipulationFunctions\";\nimport { useDispatch } from \"react-redux\";\nimport PropTypes from 'prop-types';\nimport actions from 'actions';\nimport { isMobile } from 'helpers/device';\n\nconst propTypes = {\n  pageIndexes: PropTypes.arrayOf(PropTypes.number),\n  warn: PropTypes.bool,\n};\n\nfunction PageAdditionalControlsContainer(props) {\n  const dispatch = useDispatch();\n  const { pageNumbers, warn } = props;\n\n  const moveToTop = () => {\n    if (warn) {\n      !noPagesSelectedWarning(pageNumbers, dispatch) && movePagesToTop(pageNumbers);\n    } else {\n      movePagesToTop(pageNumbers);\n    }\n    isMobile() && dispatch(actions.closeElement(\"pageManipulationOverlay\"));\n  };\n  const moveToBottom = () => {\n    if (warn) {\n      !noPagesSelectedWarning(pageNumbers, dispatch) && movePagesToBottom(pageNumbers);\n    } else {\n      movePagesToBottom(pageNumbers);\n    }\n    isMobile() && dispatch(actions.closeElement(\"pageManipulationOverlay\"));\n  };\n  return (\n    <PageAdditionalControls\n      moveToTop={moveToTop}\n      moveToBottom={moveToBottom}\n    />\n  );\n}\n\nPageAdditionalControlsContainer.propTypes = propTypes;\n\nexport default PageAdditionalControlsContainer;","import PageAdditionalControls from './PageAdditionalControlsContainer';\n\nexport default PageAdditionalControls;","import React from 'react';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport Button from 'components/Button';\n\nfunction CustomPageManipulationOperations(props) {\n  const { dataElement, pageNumbers, header, operations } = props;\n\n  function renderIcon(operation) {\n    if (operation.img) {\n      return (\n        <Button\n          title={operation.title}\n          img={operation.img}\n          role=\"option\"\n        />\n      );\n    }\n  }\n\n  return (\n    <>\n      <DataElementWrapper\n        dataElement={dataElement}\n        className=\"type\"\n      >\n        {header}\n      </DataElementWrapper>\n      {operations.map(operation => {\n        return (\n          <DataElementWrapper\n            key={operation.dataElement}\n            className=\"row\"\n            dataElement={operation.dataElement}\n            onClick={() => operation.onClick(pageNumbers)}\n          >\n            {renderIcon(operation)}\n            <div className=\"title\">{operation.title}</div>\n          </DataElementWrapper>\n        );\n      })}\n    </>\n  );\n}\n\nexport default CustomPageManipulationOperations;","import CustomPageManipulationOperations from './CustomPageManipulationOperations';\n\nexport default CustomPageManipulationOperations;","import React from 'react';\nimport PageInsertionControls from './PageInsertionControls';\nimport PageRotationControls from './PageRotationControls';\nimport PageManipulationControls from './PageManipulationControls';\nimport PageAdditionalControls from \"components/PageManipulationOverlay/PageAdditionalControls\";\nimport CustomPageManipulationOperations from './CustomPageManipulationOperations';\n\nfunction InitialPageManipulationOverlay({ children, pageNumbers, pageManipulationOverlayItems }) {\n\n  const childrenArray = React.Children.toArray(children);\n\n  return pageManipulationOverlayItems.map((item, index) => {\n    const { dataElement, type } = item;\n    let component = childrenArray.find(child => child.props.dataElement === dataElement);\n    const key = dataElement || `${type}-${index}`;\n\n    if (!component) {\n      if (type === 'divider') {\n        component = <div className=\"divider\" />;\n      }\n\n      if (type === 'customPageOperation') {\n        component = <CustomPageManipulationOperations key={dataElement} pageNumbers={pageNumbers} {...item} />;\n      }\n    }\n\n    return component\n      ? React.cloneElement(component, {\n        key,\n      })\n      : null;\n  });\n\n}\n\n\nfunction PageManipulationOverlay(props) {\n  const { pageNumbers, pageManipulationOverlayItems } = props;\n\n  return (\n    <InitialPageManipulationOverlay pageNumbers={pageNumbers} pageManipulationOverlayItems={pageManipulationOverlayItems}>\n      <PageAdditionalControls pageNumbers={pageNumbers} dataElement=\"pageAdditionalControls\" />\n      <PageRotationControls pageNumbers={pageNumbers} dataElement=\"pageRotationControls\" />\n      <PageInsertionControls dataElement=\"pageInsertionControls\" pageNumbers={pageNumbers} />\n      <PageManipulationControls pageNumbers={pageNumbers} dataElement=\"pageManipulationControls\" />\n    </InitialPageManipulationOverlay>\n  );\n}\n\nexport default PageManipulationOverlay;","import React from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport PageManipulationOverlay from './PageManipulationOverlay';\nimport FlyoutMenu from '../FlyoutMenu/FlyoutMenu';\nimport selectors from 'selectors';\n\nfunction PageManipulationOverlayContainer() {\n\n  const [\n    selectedPageIndexes,\n    currentPage,\n    pageManipulationOverlayItems,\n  ] = useSelector(state => [\n    selectors.getSelectedThumbnailPageIndexes(state),\n    selectors.getCurrentPage(state),\n    selectors.getPageManipulationOverlayItems(state),\n  ], shallowEqual);\n\n\n  // If we start drilling this prop, maybe create a context\n  const pageNumbers = selectedPageIndexes.length > 0 ? selectedPageIndexes.map(i => i + 1) : [currentPage];\n\n  return (\n    <FlyoutMenu menu=\"pageManipulationOverlay\" trigger=\"pageManipulationOverlayButton\" onClose={undefined}>\n      <PageManipulationOverlay\n        pageNumbers={pageNumbers}\n        pageManipulationOverlayItems={pageManipulationOverlayItems}\n      />\n    </ FlyoutMenu>\n  );\n}\n\nexport default PageManipulationOverlayContainer;","import PageManipulationOverlay from './PageManipulationOverlayContainer';\n\nexport default PageManipulationOverlay;","import React, { useEffect, useState, useRef } from 'react';\nimport './PageRedactionModal.scss';\nimport DataElements from 'constants/dataElement';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport Button from 'components/Button';\nimport Choice from 'components/Choice';\nimport { Swipeable } from 'react-swipeable';\nimport PropTypes from 'prop-types';\nimport { FocusTrap } from '@pdftron/webviewer-react-toolkit';\nimport PageNumberInput from 'components/PageReplacementModal/PageNumberInput';\n\nconst propTypes = {\n  closeModal: PropTypes.func,\n  currentPage: PropTypes.number,\n  pageLabels: PropTypes.array,\n  selectedPages: PropTypes.array,\n  markPages: PropTypes.func,\n  redactPages: PropTypes.func,\n  evenDisabled: PropTypes.bool,\n  renderCanvases: PropTypes.func,\n  isOpen: PropTypes.bool,\n};\n\nconst SelectionTypes = {\n  CURRENT: 'current',\n  SPECIFY: 'specify',\n  ODD: 'odd',\n  EVEN: 'even',\n};\n\nconst PageRedactionModal = ({\n  closeModal,\n  pageLabels,\n  selectedPages,\n  currentPage,\n  markPages,\n  redactPages,\n  evenDisabled,\n  renderCanvases,\n  isOpen,\n}) => {\n  const { t } = useTranslation();\n\n  const [selectionType, setSelectionType] = useState(SelectionTypes.CURRENT);\n  const [pages, setPages] = useState();\n  useEffect(() => {\n    setPages(selectedPages);\n  }, [selectedPages]);\n\n  const getSelectedPages = () => {\n    const pageNumbers = [];\n    if (selectionType === SelectionTypes.CURRENT) {\n      return [currentPage];\n    } else if (selectionType === SelectionTypes.SPECIFY) {\n      return pages;\n    } else if (selectionType === SelectionTypes.ODD) {\n      for (let i = 1; pageLabels.length >= i; i += 2) {\n        pageNumbers.push(i);\n      }\n    } else if (selectionType === SelectionTypes.EVEN) {\n      for (let i = 2; pageLabels.length >= i; i += 2) {\n        pageNumbers.push(i);\n      }\n    }\n    return pageNumbers;\n  };\n\n  const onMark = () => markPages(getSelectedPages());\n  const onRedact = () => redactPages(getSelectedPages());\n\n  const canvasContainer = useRef();\n  useEffect(() => {\n    if (isOpen) {\n      renderCanvases(canvasContainer, getSelectedPages());\n    }\n  }, [selectionType, isOpen, pages, renderCanvases, getSelectedPages]);\n\n  const onSwipe = e => {\n    const eventTarget = e.event.target;\n    const containerHasScroll =\n      canvasContainer.current.clientHeight < canvasContainer.current.scrollHeight ||\n      canvasContainer.current.clientWidth < canvasContainer.current.scrollWidth;\n    if (\n      containerHasScroll &&\n      (eventTarget === canvasContainer.current || canvasContainer.current.contains(eventTarget))\n    ) {\n      e.event.stopPropagation();\n    } else {\n      closeModal();\n    }\n  };\n\n  const onSelectionChange = e => {\n    if (!e.target.classList.contains('page-number-input')) {\n      setSelectionType(e.target.value);\n    }\n    e.preventDefault();\n  };\n  const onPagesChanged = pages => setPages(pages);\n\n  return (\n    <Swipeable onSwipedUp={onSwipe} onSwipedDown={onSwipe} preventDefaultTouchmoveEvent focus>\n      <FocusTrap locked={isOpen}>\n        <div\n          className={classNames({\n            Modal: true,\n            PageRedactionModal: true,\n            open: isOpen,\n            closed: !isOpen,\n          })}\n          data-element={DataElements.PAGE_REDACT_MODAL}\n        >\n          <div className=\"container\">\n            <div className=\"swipe-indicator\" />\n            <div className=\"header\">\n              <div className=\"header-text\">{t('option.pageRedactModal.header')}</div>\n              <Button onClick={closeModal} img=\"icon-close\" />\n            </div>\n            <div className=\"body\">\n              <div className=\"canvas-container\" ref={canvasContainer} />\n              <form className=\"selection-options\" onChange={onSelectionChange} onSubmit={e => e.preventDefault()}>\n                <strong>{t('option.pageRedactModal.pageSelection')}</strong>\n                <Choice\n                  checked={selectionType === SelectionTypes.CURRENT}\n                  radio\n                  name=\"page-redaction-option\"\n                  label={t('option.pageRedactModal.current')}\n                  value={SelectionTypes.CURRENT}\n                />\n                <Choice\n                  checked={selectionType === SelectionTypes.SPECIFY}\n                  radio\n                  name=\"page-redaction-option\"\n                  label={t('option.pageRedactModal.specify')}\n                  value={SelectionTypes.SPECIFY}\n                />\n                {selectionType === 'specify' && (\n                  <PageNumberInput\n                    selectedPageNumbers={pages}\n                    pageCount={pageLabels.length}\n                    onBlurHandler={onPagesChanged}\n                    placeholder={t('option.pageRedactModal.specifyPlaceholder')}\n                  />\n                )}\n                <Choice\n                  checked={selectionType === SelectionTypes.ODD}\n                  radio\n                  name=\"page-redaction-option\"\n                  label={t('option.pageRedactModal.odd')}\n                  value={SelectionTypes.ODD}\n                />\n                <Choice\n                  checked={selectionType === SelectionTypes.EVEN}\n                  radio\n                  name=\"page-redaction-option\"\n                  label={t('option.pageRedactModal.even')}\n                  value={SelectionTypes.EVEN}\n                  disabled={evenDisabled}\n                />\n              </form>\n            </div>\n            <div className=\"footer\">\n              <Button\n                className=\"cancel modal-button\"\n                dataElement=\"modalRedactButton\"\n                label=\"annotation.redact\"\n                onClick={onRedact}\n              />\n              <Button\n                className=\"confirm modal-button\"\n                dataElement=\"modalMarkRedactButton\"\n                label=\"option.pageRedactModal.addMark\"\n                onClick={onMark}\n              />\n            </div>\n          </div>\n        </div>\n      </FocusTrap>\n    </Swipeable>\n  );\n};\n\nPageRedactionModal.propTypes = propTypes;\n\nexport default PageRedactionModal;\n","import React, { useEffect, useState } from 'react';\nimport './PageRedactionModal.scss';\nimport DataElements from \"constants/dataElement\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport { createPageRedactions, redactPages } from 'helpers/pageManipulationFunctions';\nimport PageRedactionModal from \"components/PageRedactionModal/PageRedactionModal\";\n\nconst MAX_CANVAS_COUNT = 10;\n\nconst PageRedactionModalContainer = () => {\n  const dispatch = useDispatch();\n  const [isOpen, currentPage, selectedIndexes, pageLabels, activeToolName, activeToolStyles] = useSelector(state => [\n    selectors.isElementOpen(state, DataElements.PAGE_REDACT_MODAL),\n    selectors.getCurrentPage(state),\n    selectors.getSelectedThumbnailPageIndexes(state),\n    selectors.getPageLabels(state),\n    selectors.getActiveToolName(state),\n    selectors.getActiveToolStyles(state)\n  ]);\n\n  const selectedPages = selectedIndexes.map(index => index + 1);\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElements(['printModal', 'loadingModal', 'progressModal', 'errorModal']));\n    }\n  }, [isOpen, dispatch]);\n\n  const closeModal = () => dispatch(actions.closeElement(DataElements.PAGE_REDACT_MODAL));\n\n  const getRedactionStyles = () => activeToolName?.includes('AnnotationCreateRedaction') ? activeToolStyles : {};\n\n  const onRedact = pageNumbers => {\n    redactPages(pageNumbers, getRedactionStyles());\n    closeModal();\n  };\n\n  const markPages = pageNumbers => {\n    createPageRedactions(pageNumbers, getRedactionStyles());\n    closeModal();\n  };\n\n  const renderCanvases = (canvasContainer, pageNumbers) => {\n    const doc = core.getDocument();\n    while (canvasContainer.current.firstChild) {\n      canvasContainer.current.removeChild(canvasContainer.current.firstChild);\n    }\n    if (!pageNumbers) {\n      return;\n    }\n    if (pageNumbers?.length > MAX_CANVAS_COUNT) {\n      pageNumbers = pageNumbers.splice(0, MAX_CANVAS_COUNT);\n    }\n    for (const pageNumber of pageNumbers) {\n      const pageInfo = doc?.getPageInfo(pageNumber);\n      if (isOpen && doc && canvasContainer.current && pageInfo) {\n        let zoom = 1;\n        const rect = canvasContainer.current.getBoundingClientRect();\n        const borderWidth = parseInt(window.getComputedStyle(canvasContainer.current).borderWidth) + 0.1;\n        rect.height -= borderWidth;\n        rect.width -= borderWidth;\n        if (pageInfo.width > pageInfo.height) {\n          zoom = rect.width / pageInfo.width;\n        } else {\n          zoom = rect.height / pageInfo.height;\n        }\n        zoom > 0 && doc.loadCanvas({\n          pageNumber,\n          zoom,\n          pageRotation: 0,\n          drawComplete: canvas => {\n            canvasContainer.current.appendChild(canvas);\n          },\n          'isInternalRender': true,\n        });\n      }\n    }\n  };\n\n  const [evenDisabled, setEvenDisabled] = useState(false);\n  useEffect(() => {\n    const docLoaded = () => {\n      if (core.getTotalPages() < 2) {\n        setEvenDisabled(true);\n      } else {\n        setEvenDisabled(false);\n      }\n    };\n    core.addEventListener(\"documentLoaded\", docLoaded);\n    return () => core.removeEventListener(\"documentLoaded\", docLoaded);\n  }, []);\n\n  return (\n    <PageRedactionModal evenDisabled={evenDisabled} closeModal={closeModal} renderCanvases={renderCanvases}\n      redactPages={onRedact} markPages={markPages} currentPage={currentPage} selectedPages={selectedPages}\n      pageLabels={pageLabels} isOpen={isOpen}\n    />\n  );\n};\n\nexport default PageRedactionModalContainer;","import PageRedactionModalContainer from \"components/PageRedactionModal/PageRedactionModalContainer\";\n\nexport default PageRedactionModalContainer;","var PUBLISH = 0;\nvar SUBSCRIBE = 1;\nvar RESET = 2;\nvar VALUE = 4;\n\n/**\r\n * Utils includes\r\n * - a handful of functional utilities inspired by or taken from the [Ramda library](https://ramdajs.com/);\r\n * - TypeScript crutches - the [[tup]] function.\r\n *\r\n * Use these for your convenience - they are here so that urx is zero-dependency package.\r\n *\r\n * @packageDocumentation\r\n */\n\n/**\r\n * Performs left to right composition of two functions.\r\n */\nfunction compose(a, b) {\n  return function (arg) {\n    return a(b(arg));\n  };\n}\n/**\r\n * Takes a value and applies a function to it.\r\n */\n\nfunction thrush(arg, proc) {\n  return proc(arg);\n}\n/**\r\n * Takes a 2 argument function and partially applies the first argument.\r\n */\n\nfunction curry2to1(proc, arg1) {\n  return function (arg2) {\n    return proc(arg1, arg2);\n  };\n}\n/**\r\n * Takes a 1 argument function and returns a function which when called, executes it with the provided argument.\r\n */\n\nfunction curry1to0(proc, arg) {\n  return function () {\n    return proc(arg);\n  };\n}\n/**\r\n * Returns a function which extracts the property from from the passed object.\r\n */\n\nfunction prop(property) {\n  return function (object) {\n    return object[property];\n  };\n}\n/**\r\n * Calls callback with the first argument, and returns it.\r\n */\n\nfunction tap(arg, proc) {\n  proc(arg);\n  return arg;\n}\n/**\r\n *  Utility function to help typescript figure out that what we pass is a tuple and not a generic array.\r\n *  Taken from (this StackOverflow tread)[https://stackoverflow.com/questions/49729550/implicitly-create-a-tuple-in-typescript/52445008#52445008]\r\n */\n\nfunction tup() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return args;\n}\n/**\r\n * Calls the passed function.\r\n */\n\nfunction call(proc) {\n  proc();\n}\n/**\r\n * returns a function which when called always returns the passed value\r\n */\n\nfunction always(value) {\n  return function () {\n    return value;\n  };\n}\n/**\r\n * returns a function which calls all passed functions in the passed order.\r\n * joinProc does not pass arguments or collect return values.\r\n */\n\nfunction joinProc() {\n  for (var _len2 = arguments.length, procs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    procs[_key2] = arguments[_key2];\n  }\n\n  return function () {\n    procs.map(call);\n  };\n}\nfunction noop() {}\n\n/**\r\n * urx Actions operate on streams - `publish` publishes data in a stream, and `subscribe` attaches a subscription to a stream.\r\n * @packageDocumentation\r\n */\n/**\r\n * Subscribes the specified [[Subscription]] to the updates from the Emitter.\r\n * The emitter calls the subscription with the new data each time new data is published into it.\r\n *\r\n * ```ts\r\n * const foo = stream<number>();\r\n * subscribe(foo, (value) => console.log(value));\r\n * ```\r\n *\r\n * @returns an [[Unsubscribe]] handle  - calling it will unbind the subscription from the emitter.\r\n *```ts\r\n * const foo = stream<number>();\r\n * const unsub = subscribe(foo, (value) => console.log(value));\r\n * unsub();\r\n *```\r\n */\n\nfunction subscribe(emitter, subscription) {\n  return emitter(SUBSCRIBE, subscription);\n}\n/**\r\n * Publishes the value into the passed [[Publisher]].\r\n *\r\n * ```ts\r\n * const foo = stream<number>();\r\n * publish(foo, 42);\r\n * ```\r\n */\n\nfunction publish(publisher, value) {\n  publisher(PUBLISH, value);\n}\n/**\r\n * Clears all subscriptions from the [[Emitter]].\r\n * ```ts\r\n * const foo = stream<number>();\r\n * subscribe(foo, (value) => console.log(value));\r\n * reset(foo);\r\n * publish(foo, 42);\r\n * ```\r\n */\n\nfunction reset(emitter) {\n  emitter(RESET);\n}\n/**\r\n * Extracts the current value from a stateful stream. Use it only as an escape hatch, as it violates the concept of reactive programming.\r\n * ```ts\r\n * const foo = statefulStream(42);\r\n * console.log(getValue(foo));\r\n * ```\r\n */\n\nfunction getValue(depot) {\n  return depot(VALUE);\n}\n/**\r\n * Connects two streams - any value emitted from the emitter will be published in the publisher.\r\n * ```ts\r\n * const foo = stream<number>();\r\n * const bar = stream<number>();\r\n * subscribe(bar, (value) => console.log(`Bar emitted ${value}`));\r\n *\r\n * connect(foo, bar);\r\n * publish(foo);\r\n * ```\r\n * @returns an [[Unsubscribe]] handle which will disconnect the two streams.\r\n */\n\nfunction connect(emitter, publisher) {\n  return subscribe(emitter, curry2to1(publisher, PUBLISH));\n}\n/**\r\n * Executes the passed subscription at most once, for the next emit from the emitter.\r\n * ```ts\r\n * const foo = stream<number>()\r\n * handleNext(foo, value => console.log(value)) // called once, with 42\r\n * publish(foo, 42)\r\n * publish(foo, 43)\r\n * ```\r\n * @returns an [[Unsubscribe]] handle to unbind the subscription if necessary.\r\n */\n\nfunction handleNext(emitter, subscription) {\n  var unsub = emitter(SUBSCRIBE, function (value) {\n    unsub();\n    subscription(value);\n  });\n  return unsub;\n}\n\n/**\r\n * Streams are the basic building blocks of a reactive system. Think of them as the system permanent \"data tubes\".\r\n *\r\n * A stream acts as both an [[Emitter]] and [[Publisher]]. Each stream can have multiple {@link Subscription | Subscriptions}.\r\n *\r\n * urx streams are either **stateless** or **stateful**.\r\n * Stateless streams emit data to existing subscriptions when published, without keeping track of it.\r\n * Stateful streams remember the last published value and immediately publish it to new subscriptions.\r\n *\r\n * ```ts\r\n * import { stream, statefulStream, publish, subscribe } from \"@virtuoso.dev/urx\";\r\n *\r\n * // foo is a stateless stream\r\n * const foo = stream<number>();\r\n *\r\n * publish(foo, 42);\r\n * // this subsription will not be called...\r\n * subscribe(foo, (value) => console.log(value));\r\n * // it will only catch published values after it\r\n * publish(foo, 43);\r\n *\r\n * // stateful streams always start with an initial value\r\n * const bar = statefulStream(42);\r\n *\r\n * // subscribing to a stateful stream\r\n * // immediately calls the subscription with the current value\r\n * subscribe(bar, (value) => console.log(value));\r\n *\r\n * // subsequent publishing works just like stateless streams\r\n * publish(bar, 43);\r\n * ```\r\n * @packageDocumentation\r\n */\n/**\r\n * Constructs a new stateless stream.\r\n * ```ts\r\n * const foo = stream<number>();\r\n * ```\r\n * @typeParam T the type of values to publish in the stream.\r\n * @returns a [[Stream]]\r\n */\n\nfunction stream() {\n  var subscriptions = [];\n  return function (action, arg) {\n    switch (action) {\n      case RESET:\n        subscriptions.splice(0, subscriptions.length);\n        return;\n\n      case SUBSCRIBE:\n        subscriptions.push(arg);\n        return function () {\n          var indexOf = subscriptions.indexOf(arg);\n\n          if (indexOf > -1) {\n            subscriptions.splice(indexOf, 1);\n          }\n        };\n\n      case PUBLISH:\n        subscriptions.slice().forEach(function (subscription) {\n          subscription(arg);\n        });\n        return;\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n/**\r\n * Constructs a new stateful stream.\r\n * ```ts\r\n * const foo = statefulStream(42);\r\n * ```\r\n * @param initial the initial value in the stream.\r\n * @typeParam T the type of values to publish in the stream. If omitted, the function infers it from the initial value.\r\n * @returns a [[StatefulStream]]\r\n */\n\nfunction statefulStream(initial) {\n  var value = initial;\n  var innerSubject = stream();\n  return function (action, arg) {\n    switch (action) {\n      case SUBSCRIBE:\n        var subscription = arg;\n        subscription(value);\n        break;\n\n      case PUBLISH:\n        value = arg;\n        break;\n\n      case VALUE:\n        return value;\n    }\n\n    return innerSubject(action, arg);\n  };\n}\n/**\r\n * Event handlers are special emitters which can have **at most one active subscription**.\r\n * Subscribing to an event handler unsubscribes the previous subscription, if present.\r\n * ```ts\r\n * const foo = stream<number>();\r\n * const fooEvent = eventHandler(foo);\r\n *\r\n * // will be called once with 42\r\n * subscribe(fooEvent, (value) => console.log(`Sub 1 ${value}`));\r\n * publish(foo, 42);\r\n *\r\n * // unsubscribes sub 1\r\n * subscribe(fooEvent, (value) => console.log(`Sub 2 ${value}`));\r\n * publish(foo, 43);\r\n * ```\r\n * @param emitter the source emitter.\r\n * @returns the single-subscription emitter.\r\n */\n\nfunction eventHandler(emitter) {\n  var unsub;\n  var currentSubscription;\n\n  var cleanup = function cleanup() {\n    return unsub && unsub();\n  };\n\n  return function (action, subscription) {\n    switch (action) {\n      case SUBSCRIBE:\n        if (subscription) {\n          if (currentSubscription === subscription) {\n            return;\n          }\n\n          cleanup();\n          currentSubscription = subscription;\n          unsub = subscribe(emitter, subscription);\n          return unsub;\n        } else {\n          cleanup();\n          return noop;\n        }\n\n      case RESET:\n        cleanup();\n        currentSubscription = null;\n        return;\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n/**\r\n * Creates and connects a \"junction\" stream to the specified emitter. Often used with [[pipe]], to avoid the multiple evaluation of operator sets.\r\n *\r\n * ```ts\r\n * const foo = stream<number>();\r\n *\r\n * const fooX2 = pipe(\r\n *   foo,\r\n *   map((value) => {\r\n *     console.log(`multiplying ${value}`);\r\n *     return value * 2;\r\n *   })\r\n * );\r\n *\r\n * subscribe(fooX2, (value) => console.log(value));\r\n * subscribe(fooX2, (value) => console.log(value));\r\n *\r\n * publish(foo, 42); // executes the map operator twice for each subscription.\r\n *\r\n * const sharedFooX2 = streamFromEmitter(pipe(\r\n *   foo,\r\n *   map((value) => {\r\n *     console.log(`shared multiplying ${value}`);\r\n *     return value * 2;\r\n *   })\r\n * ));\r\n *\r\n * subscribe(sharedFooX2, (value) => console.log(value));\r\n * subscribe(sharedFooX2, (value) => console.log(value));\r\n *\r\n * publish(foo, 42);\r\n *```\r\n * @returns the resulting stream.\r\n */\n\nfunction streamFromEmitter(emitter) {\n  return tap(stream(), function (stream) {\n    return connect(emitter, stream);\n  });\n}\n/**\r\n * Creates and connects a \"junction\" stateful stream to the specified emitter. Often used with [[pipe]], to avoid the multiple evaluation of operator sets.\r\n *\r\n * ```ts\r\n * const foo = stream<number>();\r\n *\r\n * const fooX2 = pipe(\r\n *   foo,\r\n *   map((value) => {\r\n *     console.log(`multiplying ${value}`);\r\n *     return value * 2;\r\n *   })\r\n * );\r\n *\r\n * subscribe(fooX2, (value) => console.log(value));\r\n * subscribe(fooX2, (value) => console.log(value));\r\n *\r\n * publish(foo, 42); // executes the map operator twice for each subscription.\r\n *\r\n * const sharedFooX2 = statefulStreamFromEmitter(pipe(\r\n *   foo,\r\n *   map((value) => {\r\n *     console.log(`shared multiplying ${value}`);\r\n *     return value * 2;\r\n *   })\r\n * ), 42);\r\n *\r\n * subscribe(sharedFooX2, (value) => console.log(value));\r\n * subscribe(sharedFooX2, (value) => console.log(value));\r\n *\r\n * publish(foo, 42);\r\n *```\r\n * @param initial the initial value in the stream.\r\n * @returns the resulting stateful stream.\r\n */\n\nfunction statefulStreamFromEmitter(emitter, initial) {\n  return tap(statefulStream(initial), function (stream) {\n    return connect(emitter, stream);\n  });\n}\n\n/**\r\n *\r\n * Stream values can be transformed and controlled by {@link pipe | **piping**} through **operators**.\r\n * urx includes several operators like [[map]], [[filter]], [[scan]], and [[throttleTime]].\r\n * The [[withLatestFrom]] operator allows the combination of values from other streams.\r\n *\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * // create an emitter that first adds 2 to the passed value, then multiplies it by * 2\r\n * const bar = pipe(foo, map(value => value + 2), map(value => value * 2))\r\n * subscribe(bar, value => console.log(value))\r\n * publish(foo, 2) // outputs 8\r\n * ```\r\n *\r\n * ### Implementing Custom Operators\r\n * To implement your own operators, implement the [[Operator]] interface.\r\n * @packageDocumentation\r\n */\n/** @internal */\n\nfunction combineOperators() {\n  for (var _len = arguments.length, operators = new Array(_len), _key = 0; _key < _len; _key++) {\n    operators[_key] = arguments[_key];\n  }\n\n  return function (subscriber) {\n    return operators.reduceRight(thrush, subscriber);\n  };\n}\n\nfunction pipe(source) {\n  for (var _len2 = arguments.length, operators = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    operators[_key2 - 1] = arguments[_key2];\n  }\n\n  // prettier-ignore\n  var project = combineOperators.apply(void 0, operators);\n  return function (action, subscription) {\n    switch (action) {\n      case SUBSCRIBE:\n        return subscribe(source, project(subscription));\n\n      case RESET:\n        reset(source);\n        return;\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n/**\r\n * The default [[Comparator]] for [[distinctUntilChanged]] and [[duc]].\r\n */\n\nfunction defaultComparator(previous, next) {\n  return previous === next;\n}\n/**\r\n * Filters out identical values. Pass an optional [[Comparator]] if you need to filter non-primitive values.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, distinctUntilChanged()),\r\n *  console.log\r\n * ) // will be called only once\r\n *\r\n * publish(foo, 42)\r\n * publish(foo, 42)\r\n * ```\r\n */\n\nfunction distinctUntilChanged(comparator) {\n  if (comparator === void 0) {\n    comparator = defaultComparator;\n  }\n\n  var current;\n  return function (done) {\n    return function (next) {\n      if (!comparator(current, next)) {\n        current = next;\n        done(next);\n      }\n    };\n  };\n}\n/**\r\n * Filters out values for which the predicator does not return `true`-ish.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, filter(value => value % 2 === 0)),\r\n *  console.log\r\n * ) // will be called only with even values\r\n *\r\n * publish(foo, 2)\r\n * publish(foo, 3)\r\n * publish(foo, 4)\r\n * publish(foo, 5)\r\n * ```\r\n */\n\nfunction filter(predicate) {\n  return function (done) {\n    return function (value) {\n      predicate(value) && done(value);\n    };\n  };\n}\n/**\r\n * Maps values using the provided project function.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, map(value => value * 2)),\r\n *  console.log\r\n * ) // 4, 6\r\n *\r\n * publish(foo, 2)\r\n * publish(foo, 3)\r\n * ```\r\n */\n\nfunction map(project) {\n  return function (done) {\n    return compose(done, project);\n  };\n}\n/**\r\n * Maps values to the hard-coded value.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, mapTo(3)),\r\n *  console.log\r\n * ) // 3, 3\r\n *\r\n * publish(foo, 1)\r\n * publish(foo, 2)\r\n * ```\r\n */\n\nfunction mapTo(value) {\n  return function (done) {\n    return function () {\n      return done(value);\n    };\n  };\n}\n/**\r\n * Works like Array#reduce.\r\n * Applies an accumulator function on the emitter, and outputs intermediate result. Starts with the initial value.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, scan((acc, value) => acc + value, 2),\r\n *  console.log\r\n * ) // 3, 5\r\n *\r\n * publish(foo, 1)\r\n * publish(foo, 2)\r\n * ```\r\n */\n\nfunction scan(scanner, initial) {\n  return function (done) {\n    return function (value) {\n      return done(initial = scanner(initial, value));\n    };\n  };\n}\n/**\r\n * Skips the specified amount of values from the emitter.\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * subscribe(\r\n *  pipe(foo, skip(2)),\r\n *  console.log\r\n * ) // 3, 4\r\n *\r\n * publish(foo, 1) // skipped\r\n * publish(foo, 2) // skipped\r\n * publish(foo, 3)\r\n * publish(foo, 4)\r\n * ```\r\n */\n\nfunction skip(times) {\n  return function (done) {\n    return function (value) {\n      times > 0 ? times-- : done(value);\n    };\n  };\n}\n/**\r\n * Throttles flowing values at the provided interval in milliseconds.\r\n * [Throttle VS Debounce in SO](https://stackoverflow.com/questions/25991367/difference-between-throttling-and-debouncing-a-function).\r\n *\r\n * ```ts\r\n *  const foo = stream<number>()\r\n *  publish(foo, 1)\r\n *\r\n *  setTimeout(() => publish(foo, 2), 20)\r\n *  setTimeout(() => publish(foo, 3), 20)\r\n *\r\n *  subscribe(pipe(foo, throttleTime(50)), val => {\r\n *    console.log(value); // 3\r\n *  })\r\n * ```\r\n */\n\nfunction throttleTime(interval) {\n  var currentValue;\n  var timeout;\n  return function (done) {\n    return function (value) {\n      currentValue = value;\n\n      if (timeout) {\n        return;\n      }\n\n      timeout = setTimeout(function () {\n        timeout = undefined;\n        done(currentValue);\n      }, interval);\n    };\n  };\n}\n/**\r\n * Debounces flowing values at the provided interval in milliseconds.\r\n * [Throttle VS Debounce in SO](https://stackoverflow.com/questions/25991367/difference-between-throttling-and-debouncing-a-function).\r\n *\r\n * ```ts\r\n *  const foo = stream<number>()\r\n *  publish(foo, 1)\r\n *\r\n *  setTimeout(() => publish(foo, 2), 20)\r\n *  setTimeout(() => publish(foo, 3), 20)\r\n *\r\n *  subscribe(pipe(foo, debounceTime(50)), val => {\r\n *    console.log(value); // 3\r\n *  })\r\n * ```\r\n */\n\nfunction debounceTime(interval) {\n  var currentValue;\n  var timeout;\n  return function (done) {\n    return function (value) {\n      currentValue = value;\n\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n\n      timeout = setTimeout(function () {\n        done(currentValue);\n      }, interval);\n    };\n  };\n}\nfunction withLatestFrom() {\n  for (var _len3 = arguments.length, sources = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    sources[_key3] = arguments[_key3];\n  }\n\n  var values = new Array(sources.length);\n  var called = 0;\n  var pendingCall = null;\n  var allCalled = Math.pow(2, sources.length) - 1;\n  sources.forEach(function (source, index) {\n    var bit = Math.pow(2, index);\n    subscribe(source, function (value) {\n      var prevCalled = called;\n      called = called | bit;\n      values[index] = value;\n\n      if (prevCalled !== allCalled && called === allCalled && pendingCall) {\n        pendingCall();\n        pendingCall = null;\n      }\n    });\n  });\n  return function (done) {\n    return function (value) {\n      var call = function call() {\n        return done([value].concat(values));\n      };\n\n      if (called === allCalled) {\n        call();\n      } else {\n        pendingCall = call;\n      }\n    };\n  };\n}\n\n/**\r\n * Transformers change and combine streams, similar to operators.\r\n * urx comes with two combinators - [[combineLatest]] and [[merge]], and one convenience filter - [[duc]].\r\n *\r\n * @packageDocumentation\r\n */\n/**\r\n * Merges one or more emitters from the same type into a new Emitter which emits values from any of the source emitters.\r\n * ```ts\r\n * const foo = stream<number>()\r\n * const bar = stream<number>()\r\n *\r\n * subscribe(merge(foo, bar), (value) => console.log(value)) // 42, 43\r\n *\r\n * publish(foo, 42)\r\n * publish(bar, 43)\r\n * ```\r\n */\n\nfunction merge() {\n  for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n    sources[_key] = arguments[_key];\n  }\n\n  return function (action, subscription) {\n    switch (action) {\n      case SUBSCRIBE:\n        return joinProc.apply(void 0, sources.map(function (source) {\n          return subscribe(source, subscription);\n        }));\n\n      case RESET:\n        // do nothing, we are stateless\n        return;\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n/**\r\n * A convenience wrapper that emits only the distinct values from the passed Emitter. Wraps [[pipe]] and [[distinctUntilChanged]].\r\n *\r\n * ```ts\r\n * const foo = stream<number>()\r\n *\r\n * // this line...\r\n * const a = duc(foo)\r\n *\r\n * // is equivalent to this\r\n * const b = pipe(distinctUntilChanged(foo))\r\n * ```\r\n *\r\n * @param source The source emitter.\r\n * @param comparator optional custom comparison function for the two values.\r\n *\r\n * @typeParam T the type of the value emitted by the source.\r\n *\r\n * @returns the resulting emitter.\r\n */\n\nfunction duc(source, comparator) {\n  if (comparator === void 0) {\n    comparator = defaultComparator;\n  }\n\n  return pipe(source, distinctUntilChanged(comparator));\n}\nfunction combineLatest() {\n  var innerSubject = stream();\n\n  for (var _len2 = arguments.length, emitters = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    emitters[_key2] = arguments[_key2];\n  }\n\n  var values = new Array(emitters.length);\n  var called = 0;\n  var allCalled = Math.pow(2, emitters.length) - 1;\n  emitters.forEach(function (source, index) {\n    var bit = Math.pow(2, index);\n    subscribe(source, function (value) {\n      values[index] = value;\n      called = called | bit;\n\n      if (called === allCalled) {\n        publish(innerSubject, values);\n      }\n    });\n  });\n  return function (action, subscription) {\n    switch (action) {\n      case SUBSCRIBE:\n        if (called === allCalled) {\n          subscription(values);\n        }\n\n        return subscribe(innerSubject, subscription);\n\n      case RESET:\n        return reset(innerSubject);\n\n      default:\n        throw new Error(\"unrecognized action \" + action);\n    }\n  };\n}\n\n/**\r\n * `system` defines a specification of a system - its constructor, dependencies and if it should act as a singleton in a system dependency tree.\r\n * When called, system returns a [[SystemSpec]], which is then initialized along with its dependencies by passing it to [[init]].\r\n *\r\n * ```ts\r\n * @import { subscribe, publish, system, init, tup, connect, map, pipe } from 'urx'\r\n *\r\n * // a simple system with two streams\r\n * const sys1 = system(() => {\r\n *  const a = stream<number>()\r\n *  const b = stream<number>()\r\n *\r\n *  connect(pipe(a, map(value => value * 2)), b)\r\n *  return { a, b }\r\n * })\r\n *\r\n * // a second system which depends on the streams from the first one\r\n * const sys2 = system(([ {a, b} ]) => {\r\n *  const c = stream<number>()\r\n *  connect(pipe(b, map(value => value * 2)), c)\r\n *  // re-export the `a` stream, keep `b` internal\r\n *  return { a, c }\r\n * }, tup(sys1))\r\n *\r\n * // init will recursively initialize sys2 dependencies, in this case sys1\r\n * const { a, c } = init(sys2)\r\n * subscribe(c, c => console.log(`Value multiplied by 4`, c))\r\n * publish(a, 2)\r\n * ```\r\n *\r\n * #### Singletons in Dependency Tree\r\n *\r\n * By default, systems will be initialized only once if encountered multiple times in the dependency tree.\r\n * In the below dependency system tree, systems `b` and `c` will receive the same stream instances from system `a` when system `d` is initialized.\r\n * ```txt\r\n *   a\r\n *  / \\\r\n * b   c\r\n *  \\ /\r\n *   d\r\n * ```\r\n * If `a` gets `{singleton: false}` as a last argument, `init` creates two separate instances - one for `b` and one for `c`.\r\n *\r\n * @param constructor the system constructor function. Initialize and connect the streams in its body.\r\n *\r\n * @param dependencies the system dependencies, which the constructor will receive as arguments.\r\n * Use the [[tup]] utility **For TypeScript type inference to work correctly**.\r\n * ```ts\r\n * const sys3 = system(() => { ... }, tup(sys2, sys1))\r\n * ```\r\n * @param __namedParameters Options\r\n * @param singleton determines if the system will act as a singleton in a system dependency tree. `true` by default.\r\n */\nfunction system(constructor, dependencies, _temp) {\n  if (dependencies === void 0) {\n    dependencies = [];\n  }\n\n  var _ref = _temp === void 0 ? {\n    singleton: true\n  } : _temp,\n      singleton = _ref.singleton;\n\n  return {\n    id: id(),\n    constructor: constructor,\n    dependencies: dependencies,\n    singleton: singleton\n  };\n}\n/** @internal */\n\nvar id = function id() {\n  return Symbol();\n};\n/**\r\n * Initializes a [[SystemSpec]] by recursively initializing its dependencies.\r\n *\r\n * ```ts\r\n * // a simple system with two streams\r\n * const sys1 = system(() => {\r\n *  const a = stream<number>()\r\n *  const b = stream<number>()\r\n *\r\n *  connect(pipe(a, map(value => value * 2)), b)\r\n *  return { a, b }\r\n * })\r\n *\r\n * const { a, b } = init(sys1)\r\n * subscribe(b, b => console.log(b))\r\n * publish(a, 2)\r\n * ```\r\n *\r\n * @returns the [[System]] constructed by the spec constructor.\r\n * @param systemSpec the system spec to initialize.\r\n */\n\n\nfunction init(systemSpec) {\n  var singletons = new Map();\n\n  var _init = function _init(_ref2) {\n    var id = _ref2.id,\n        constructor = _ref2.constructor,\n        dependencies = _ref2.dependencies,\n        singleton = _ref2.singleton;\n\n    if (singleton && singletons.has(id)) {\n      return singletons.get(id);\n    }\n\n    var system = constructor(dependencies.map(function (e) {\n      return _init(e);\n    }));\n\n    if (singleton) {\n      singletons.set(id, system);\n    }\n\n    return system;\n  };\n\n  return _init(systemSpec);\n}\n\nexport { always, call, combineLatest, compose, connect, curry1to0, curry2to1, debounceTime, defaultComparator, distinctUntilChanged, duc, eventHandler, filter, getValue, handleNext, init, joinProc, map, mapTo, merge, noop, pipe, prop, publish, reset, scan, skip, statefulStream, statefulStreamFromEmitter, stream, streamFromEmitter, subscribe, system, tap, throttleTime, thrush, tup, withLatestFrom };\n//# sourceMappingURL=urx.esm.js.map\n","import { createContext, forwardRef, useState, useImperativeHandle, createElement, useLayoutEffect, useEffect, useCallback, useContext } from 'react';\nimport { tap, init, curry1to0, subscribe, reset, always, publish, eventHandler, curry2to1, getValue } from '@virtuoso.dev/urx';\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 _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n  if (it) return (it = it.call(o)).next.bind(it);\n\n  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n    if (it) o = it;\n    var i = 0;\n    return function () {\n      if (i >= o.length) return {\n        done: true\n      };\n      return {\n        done: false,\n        value: o[i++]\n      };\n    };\n  }\n\n  throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar _excluded = [\"children\"];\n/** @internal */\n\nfunction omit(keys, obj) {\n  var result = {};\n  var index = {};\n  var idx = 0;\n  var len = keys.length;\n\n  while (idx < len) {\n    index[keys[idx]] = 1;\n    idx += 1;\n  }\n\n  for (var prop in obj) {\n    if (!index.hasOwnProperty(prop)) {\n      result[prop] = obj[prop];\n    }\n  }\n\n  return result;\n}\n\nvar useIsomorphicLayoutEffect = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n/**\r\n * Converts a system spec to React component by mapping the system streams to component properties, events and methods. Returns hooks for querying and modifying\r\n * the system streams from the component's child components.\r\n * @param systemSpec The return value from a [[system]] call.\r\n * @param map The streams to props / events / methods mapping Check [[SystemPropsMap]] for more details.\r\n * @param Root The optional React component to render. By default, the resulting component renders nothing, acting as a logical wrapper for its children.\r\n * @returns an object containing the following:\r\n *  - `Component`: the React component.\r\n *  - `useEmitterValue`: a hook that lets child components use values emitted from the specified output stream.\r\n *  - `useEmitter`: a hook that calls the provided callback whenever the specified stream emits a value.\r\n *  - `usePublisher`: a hook which lets child components publish values to the specified stream.\r\n *  <hr />\r\n */\n\nfunction systemToComponent(systemSpec, map, Root) {\n  var requiredPropNames = Object.keys(map.required || {});\n  var optionalPropNames = Object.keys(map.optional || {});\n  var methodNames = Object.keys(map.methods || {});\n  var eventNames = Object.keys(map.events || {});\n  var Context = createContext({});\n\n  function applyPropsToSystem(system, props) {\n    if (system['propsReady']) {\n      publish(system['propsReady'], false);\n    }\n\n    for (var _iterator = _createForOfIteratorHelperLoose(requiredPropNames), _step; !(_step = _iterator()).done;) {\n      var requiredPropName = _step.value;\n      var stream = system[map.required[requiredPropName]];\n      publish(stream, props[requiredPropName]);\n    }\n\n    for (var _iterator2 = _createForOfIteratorHelperLoose(optionalPropNames), _step2; !(_step2 = _iterator2()).done;) {\n      var optionalPropName = _step2.value;\n\n      if (optionalPropName in props) {\n        var _stream = system[map.optional[optionalPropName]];\n        publish(_stream, props[optionalPropName]);\n      }\n    }\n\n    if (system['propsReady']) {\n      publish(system['propsReady'], true);\n    }\n  }\n\n  function buildMethods(system) {\n    return methodNames.reduce(function (acc, methodName) {\n\n      acc[methodName] = function (value) {\n        var stream = system[map.methods[methodName]];\n        publish(stream, value);\n      };\n\n      return acc;\n    }, {});\n  }\n\n  function buildEventHandlers(system) {\n    return eventNames.reduce(function (handlers, eventName) {\n      handlers[eventName] = eventHandler(system[map.events[eventName]]);\n      return handlers;\n    }, {});\n  }\n  /**\r\n   * A React component generated from an urx system\r\n   */\n\n\n  var Component = forwardRef(function (propsWithChildren, ref) {\n    var children = propsWithChildren.children,\n        props = _objectWithoutPropertiesLoose(propsWithChildren, _excluded);\n\n    var _useState = useState(function () {\n      return tap(init(systemSpec), function (system) {\n        return applyPropsToSystem(system, props);\n      });\n    }),\n        system = _useState[0];\n\n    var _useState2 = useState(curry1to0(buildEventHandlers, system)),\n        handlers = _useState2[0];\n\n    useIsomorphicLayoutEffect(function () {\n      for (var _iterator3 = _createForOfIteratorHelperLoose(eventNames), _step3; !(_step3 = _iterator3()).done;) {\n        var eventName = _step3.value;\n\n        if (eventName in props) {\n          subscribe(handlers[eventName], props[eventName]);\n        }\n      }\n\n      return function () {\n        Object.values(handlers).map(reset);\n      };\n    }, [props, handlers, system]);\n    useIsomorphicLayoutEffect(function () {\n      applyPropsToSystem(system, props);\n    });\n    useImperativeHandle(ref, always(buildMethods(system)));\n    return createElement(Context.Provider, {\n      value: system\n    }, Root ? createElement(Root, omit([].concat(requiredPropNames, optionalPropNames, eventNames), props), children) : children);\n  });\n\n  var usePublisher = function usePublisher(key) {\n    return useCallback(curry2to1(publish, useContext(Context)[key]), [key]);\n  };\n  /**\r\n   * Returns the value emitted from the stream.\r\n   */\n\n\n  var useEmitterValue = function useEmitterValue(key) {\n    var context = useContext(Context);\n    var source = context[key];\n\n    var _useState3 = useState(curry1to0(getValue, source)),\n        value = _useState3[0],\n        setValue = _useState3[1];\n\n    useIsomorphicLayoutEffect(function () {\n      return subscribe(source, function (next) {\n        if (next !== value) {\n          setValue(always(next));\n        }\n      });\n    }, [source, value]);\n    return value;\n  };\n\n  var useEmitter = function useEmitter(key, callback) {\n    var context = useContext(Context);\n    var source = context[key];\n    useIsomorphicLayoutEffect(function () {\n      return subscribe(source, callback);\n    }, [callback, source]);\n  };\n\n  return {\n    Component: Component,\n    usePublisher: usePublisher,\n    useEmitterValue: useEmitterValue,\n    useEmitter: useEmitter\n  };\n}\n\nexport { systemToComponent };\n//# sourceMappingURL=react-urx.esm.js.map\n","import{systemToComponent as t}from\"@virtuoso.dev/react-urx\";import*as e from\"@virtuoso.dev/urx\";import{getValue as n,tup as o,system as r,stream as i,streamFromEmitter as a,pipe as l,map as s,connect as u,prop as c,combineLatest as m,filter as d,distinctUntilChanged as f,statefulStream as p,noop as h,subscribe as g,publish as v,statefulStreamFromEmitter as S,withLatestFrom as I,compose as C}from\"@virtuoso.dev/urx\";import*as T from\"react\";import{useLayoutEffect as w,useEffect as x,useRef as y,useCallback as b,createElement as E}from\"react\";function H(){return H=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},H.apply(this,arguments)}function R(t,e){if(null==t)return{};var n,o,r={},i=Object.keys(t);for(o=0;o<i.length;o++)e.indexOf(n=i[o])>=0||(r[n]=t[n]);return r}function L(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function k(t,e){var n=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(t){if(\"string\"==typeof t)return L(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?L(t,e):void 0}}(t))||e&&t&&\"number\"==typeof t.length){n&&(t=n);var o=0;return function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}}}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 z,B,F=\"undefined\"!=typeof document?w:x;!function(t){t[t.DEBUG=0]=\"DEBUG\",t[t.INFO=1]=\"INFO\",t[t.WARN=2]=\"WARN\",t[t.ERROR=3]=\"ERROR\"}(B||(B={}));var P=((z={})[B.DEBUG]=\"debug\",z[B.INFO]=\"log\",z[B.WARN]=\"warn\",z[B.ERROR]=\"error\",z),O=e.system(function(){var t=e.statefulStream(B.ERROR);return{log:e.statefulStream(function(n,o,r){var i;void 0===r&&(r=B.INFO),r>=(null!=(i=(\"undefined\"==typeof globalThis?window:globalThis).VIRTUOSO_LOG_LEVEL)?i:e.getValue(t))&&console[P[r]](\"%creact-virtuoso: %c%s %o\",\"color: #0253b3; font-weight: bold\",\"color: initial\",n,o)}),logLevel:t}},[],{singleton:!0});function M(t,e){void 0===e&&(e=!0);var n=y(null),o=function(t){};if(\"undefined\"!=typeof ResizeObserver){var r=new ResizeObserver(function(e){var n=e[0].target;null!==n.offsetParent&&t(n)});o=function(t){t&&e?(r.observe(t),n.current=t):(n.current&&r.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:o}}function V(t,e){return void 0===e&&(e=!0),M(t,e).callbackRef}function U(t,e,n,o,r,i){return M(function(n){for(var a=function(t,e,n,o){var r=t.length;if(0===r)return null;for(var i=[],a=0;a<r;a++){var l=t.item(a);if(l&&void 0!==l.dataset.index){var s=parseInt(l.dataset.index),u=parseFloat(l.dataset.knownSize),c=e(l,\"offsetHeight\");if(0===c&&o(\"Zero-sized element, this should not happen\",{child:l},B.ERROR),c!==u){var m=i[i.length-1];0===i.length||m.size!==c||m.endIndex!==s-1?i.push({startIndex:s,endIndex:s,size:c}):i[i.length-1].endIndex++}}}return i}(n.children,e,0,r),l=n.parentElement;!l.dataset.virtuosoScroller;)l=l.parentElement;var s=i?i.scrollTop:\"window\"===l.firstElementChild.dataset.viewportType?window.pageYOffset||document.documentElement.scrollTop:l.scrollTop;o({scrollTop:Math.max(s,0),scrollHeight:(null!=i?i:l).scrollHeight,viewportHeight:(null!=i?i:l).offsetHeight}),null!==a&&t(a)},n)}function A(t,e){return Math.round(t.getBoundingClientRect()[e])}function W(t,n,o,r,i){void 0===r&&(r=e.noop);var a=y(null),l=y(null),s=y(null),u=b(function(e){var o=e.target,r=o===window||o===document?window.pageYOffset||document.documentElement.scrollTop:o.scrollTop,i=o===window?document.documentElement.scrollHeight:o.scrollHeight,a=o===window?window.innerHeight:o.offsetHeight;t({scrollTop:Math.max(r,0),scrollHeight:i,viewportHeight:a}),null!==l.current&&(r===l.current||r<=0||r===o.scrollHeight-A(o,\"height\"))&&(l.current=null,n(!0),s.current&&(clearTimeout(s.current),s.current=null))},[t,n]);return x(function(){var t=i||a.current;return r(i||a.current),u({target:t}),t.addEventListener(\"scroll\",u,{passive:!0}),function(){r(null),t.removeEventListener(\"scroll\",u)}},[a,u,o,r,i]),{scrollerRef:a,scrollByCallback:function(t){a.current.scrollBy(t)},scrollToCallback:function(e){var o=a.current;if(o&&(!(\"offsetHeight\"in o)||0!==o.offsetHeight)){var r,i,u,c=\"smooth\"===e.behavior;if(o===window?(i=Math.max(A(document.documentElement,\"height\"),document.documentElement.scrollHeight),r=window.innerHeight,u=document.documentElement.scrollTop):(i=o.scrollHeight,r=A(o,\"height\"),u=o.scrollTop),e.top=Math.ceil(Math.max(Math.min(i-r,e.top),0)),Math.abs(r-i)<1.01||e.top===u)return t({scrollTop:u,scrollHeight:i,viewportHeight:r}),void(c&&n(!0));c?(l.current=e.top,s.current&&clearTimeout(s.current),s.current=setTimeout(function(){s.current=null,l.current=null,n(!0)},1e3)):l.current=null,o.scrollTo(e)}}}}var N=e.system(function(){var t=e.stream(),n=e.stream(),o=e.statefulStream(0),r=e.stream(),i=e.statefulStream(0),a=e.stream(),l=e.stream(),s=e.statefulStream(0),u=e.statefulStream(0),c=e.stream(),m=e.stream(),d=e.statefulStream(!1),f=e.statefulStream(!1);return e.connect(e.pipe(t,e.map(function(t){return t.scrollTop})),n),e.connect(e.pipe(t,e.map(function(t){return t.scrollHeight})),l),e.connect(n,i),{scrollContainerState:t,scrollTop:n,viewportHeight:a,headerHeight:s,footerHeight:u,scrollHeight:l,smoothScrollTargetReached:r,react18ConcurrentRendering:f,scrollTo:c,scrollBy:m,statefulScrollTop:i,deviation:o,scrollingInProgress:d}},[],{singleton:!0}),D={lvl:0};function G(t,e,n,o,r){return void 0===o&&(o=D),void 0===r&&(r=D),{k:t,v:e,lvl:n,l:o,r:r}}function _(t){return t===D}function j(){return D}function K(t,e){if(_(t))return D;var n=t.k,o=t.l,r=t.r;if(e===n){if(_(o))return r;if(_(r))return o;var i=$(o);return et(X(t,{k:i[0],v:i[1],l:Q(o)}))}return et(X(t,e<n?{l:K(o,e)}:{r:K(r,e)}))}function Y(t,e,n){if(void 0===n&&(n=\"k\"),_(t))return[-Infinity,void 0];if(t[n]===e)return[t.k,t.v];if(t[n]<e){var o=Y(t.r,e,n);return-Infinity===o[0]?[t.k,t.v]:o}return Y(t.l,e,n)}function Z(t,e,n){return _(t)?G(e,n,1):e===t.k?X(t,{k:e,v:n}):function(t){return rt(it(t))}(X(t,e<t.k?{l:Z(t.l,e,n)}:{r:Z(t.r,e,n)}))}function q(t,e,n){if(_(t))return[];var o=t.k,r=t.v,i=t.r,a=[];return o>e&&(a=a.concat(q(t.l,e,n))),o>=e&&o<=n&&a.push({k:o,v:r}),o<=n&&(a=a.concat(q(i,e,n))),a}function J(t){return _(t)?[]:[].concat(J(t.l),[{k:t.k,v:t.v}],J(t.r))}function $(t){return _(t.r)?[t.k,t.v]:$(t.r)}function Q(t){return _(t.r)?t.l:et(X(t,{r:Q(t.r)}))}function X(t,e){return G(void 0!==e.k?e.k:t.k,void 0!==e.v?e.v:t.v,void 0!==e.lvl?e.lvl:t.lvl,void 0!==e.l?e.l:t.l,void 0!==e.r?e.r:t.r)}function tt(t){return _(t)||t.lvl>t.r.lvl}function et(t){var e=t.l,n=t.r,o=t.lvl;if(n.lvl>=o-1&&e.lvl>=o-1)return t;if(o>n.lvl+1){if(tt(e))return it(X(t,{lvl:o-1}));if(_(e)||_(e.r))throw new Error(\"Unexpected empty nodes\");return X(e.r,{l:X(e,{r:e.r.l}),r:X(t,{l:e.r.r,lvl:o-1}),lvl:o})}if(tt(t))return rt(X(t,{lvl:o-1}));if(_(n)||_(n.l))throw new Error(\"Unexpected empty nodes\");var r=n.l,i=tt(r)?n.lvl-1:n.lvl;return X(r,{l:X(t,{r:r.l,lvl:o-1}),r:rt(X(n,{l:r.r,lvl:i})),lvl:r.lvl+1})}function nt(t,e,n){return _(t)?[]:ot(q(t,Y(t,e)[0],n),function(t){return{index:t.k,value:t.v}})}function ot(t,e){var n=t.length;if(0===n)return[];for(var o=e(t[0]),r=o.index,i=o.value,a=[],l=1;l<n;l++){var s=e(t[l]),u=s.index,c=s.value;a.push({start:r,end:u-1,value:i}),r=u,i=c}return a.push({start:r,end:Infinity,value:i}),a}function rt(t){var e=t.r,n=t.lvl;return _(e)||_(e.r)||e.lvl!==n||e.r.lvl!==n?t:X(e,{l:X(t,{r:e.l}),lvl:n+1})}function it(t){var e=t.l;return _(e)||e.lvl!==t.lvl?t:X(e,{r:X(t,{l:e.r})})}function at(t,e,n,o){void 0===o&&(o=0);for(var r=t.length-1;o<=r;){var i=Math.floor((o+r)/2),a=n(t[i],e);if(0===a)return i;if(-1===a){if(r-o<2)return i-1;r=i-1}else{if(r===o)return i;o=i+1}}throw new Error(\"Failed binary finding record in array - \"+t.join(\",\")+\", searched for \"+e)}function lt(t,e,n){return t[at(t,e,n)]}function st(t){var e=t.size,n=t.startIndex,o=t.endIndex;return function(t){return t.start===n&&(t.end===o||Infinity===t.end)&&t.value===e}}function ut(t,e){var n=t.index;return e===n?0:e<n?-1:1}function ct(t,e){var n=t.offset;return e===n?0:e<n?-1:1}function mt(t){return{index:t.index,value:t}}function dt(t,e,n){var o=t,r=0,i=0,a=0,l=0;if(0!==e){a=o[l=at(o,e-1,ut)].offset;var s=Y(n,e-1);r=s[0],i=s[1],o.length&&o[l].size===Y(n,e)[1]&&(l-=1),o=o.slice(0,l+1)}else o=[];for(var u,c=k(nt(n,e,Infinity));!(u=c()).done;){var m=u.value,d=m.start,f=m.value,p=(d-r)*i+a;o.push({offset:p,size:f,index:d}),r=d,a=p,i=f}return{offsetTree:o,lastIndex:r,lastOffset:a,lastSize:i}}function ft(t,e){var n=e[0],o=e[1];n.length>0&&(0,e[2])(\"received item sizes\",n,B.DEBUG);var r=t.sizeTree,i=r,a=0;if(o.length>0&&_(r)&&2===n.length){var l=n[0].size,s=n[1].size;i=o.reduce(function(t,e){return Z(Z(t,e,l),e+1,s)},i)}else{var u=function(t,e){for(var n,o=_(t)?0:Infinity,r=k(e);!(n=r()).done;){var i=n.value,a=i.size,l=i.startIndex,s=i.endIndex;if(o=Math.min(o,l),_(t))t=Z(t,0,a);else{var u=nt(t,l-1,s+1);if(!u.some(st(i))){for(var c,m=!1,d=!1,f=k(u);!(c=f()).done;){var p=c.value,h=p.start,g=p.end,v=p.value;m?(s>=h||a===v)&&(t=K(t,h)):(d=v!==a,m=!0),g>s&&s>=h&&v!==a&&(t=Z(t,s+1,v))}d&&(t=Z(t,l,a))}}}return[t,o]}(i,n);i=u[0],a=u[1]}if(i===r)return t;var c=dt(t.offsetTree,a,i),m=c.offsetTree;return{sizeTree:i,offsetTree:m,lastIndex:c.lastIndex,lastOffset:c.lastOffset,lastSize:c.lastSize,groupOffsetTree:o.reduce(function(t,e){return Z(t,e,pt(e,m))},j()),groupIndices:o}}function pt(t,e){if(0===e.length)return 0;var n=lt(e,t,ut);return n.size*(t-n.index)+n.offset}function ht(t,e){if(!gt(e))return t;for(var n=0;e.groupIndices[n]<=t+n;)n++;return t+n}function gt(t){return!_(t.groupOffsetTree)}var vt={offsetHeight:\"height\",offsetWidth:\"width\"},St=e.system(function(t){var n=t[0].log,o=e.stream(),r=e.stream(),i=e.statefulStreamFromEmitter(r,0),a=e.stream(),l=e.stream(),s=e.statefulStream(0),u=e.statefulStream([]),c=e.statefulStream(void 0),m=e.statefulStream(void 0),d=e.statefulStream(function(t,e){return A(t,vt[e])}),f=e.statefulStream(void 0),p={offsetTree:[],sizeTree:j(),groupOffsetTree:j(),lastIndex:0,lastOffset:0,lastSize:0,groupIndices:[]},h=e.statefulStreamFromEmitter(e.pipe(o,e.withLatestFrom(u,n),e.scan(ft,p),e.distinctUntilChanged()),p);e.connect(e.pipe(u,e.filter(function(t){return t.length>0}),e.withLatestFrom(h),e.map(function(t){var e=t[0],n=t[1],o=e.reduce(function(t,e,o){return Z(t,e,pt(e,n.offsetTree)||o)},j());return H({},n,{groupIndices:e,groupOffsetTree:o})})),h),e.connect(e.pipe(r,e.withLatestFrom(h),e.filter(function(t){return t[0]<t[1].lastIndex}),e.map(function(t){var e=t[1];return[{startIndex:t[0],endIndex:e.lastIndex,size:e.lastSize}]})),o),e.connect(c,m);var g=e.statefulStreamFromEmitter(e.pipe(c,e.map(function(t){return void 0===t})),!0);e.connect(e.pipe(m,e.filter(function(t){return void 0!==t&&_(e.getValue(h).sizeTree)}),e.map(function(t){return[{startIndex:0,endIndex:0,size:t}]})),o);var v=e.streamFromEmitter(e.pipe(o,e.withLatestFrom(h),e.scan(function(t,e){var n=e[1];return{changed:n!==t.sizes,sizes:n}},{changed:!1,sizes:p}),e.map(function(t){return t.changed})));e.subscribe(e.pipe(s,e.scan(function(t,e){return{diff:t.prev-e,prev:e}},{diff:0,prev:0}),e.map(function(t){return t.diff})),function(t){t>0?e.publish(a,t):t<0&&e.publish(l,t)}),e.subscribe(e.pipe(s,e.withLatestFrom(n)),function(t){t[0]<0&&(0,t[1])(\"`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value\",{firstItemIndex:s},B.ERROR)});var S=e.streamFromEmitter(a);e.connect(e.pipe(a,e.withLatestFrom(h),e.map(function(t){var e=t[0],n=t[1];if(n.groupIndices.length>0)throw new Error(\"Virtuoso: prepending items does not work with groups\");return J(n.sizeTree).reduce(function(t,n){var o=n.k,r=n.v;return{ranges:[].concat(t.ranges,[{startIndex:t.prevIndex,endIndex:o+e-1,size:t.prevSize}]),prevIndex:o+e,prevSize:r}},{ranges:[],prevIndex:0,prevSize:n.lastSize}).ranges})),o);var I=e.streamFromEmitter(e.pipe(l,e.withLatestFrom(h),e.map(function(t){return pt(-t[0],t[1].offsetTree)})));return e.connect(e.pipe(l,e.withLatestFrom(h),e.map(function(t){var e=t[0],n=t[1];if(n.groupIndices.length>0)throw new Error(\"Virtuoso: shifting items does not work with groups\");var o=J(n.sizeTree).reduce(function(t,n){var o=n.v;return Z(t,Math.max(0,n.k+e),o)},j());return H({},n,{sizeTree:o},dt(n.offsetTree,0,o))})),h),{data:f,totalCount:r,sizeRanges:o,groupIndices:u,defaultItemSize:m,fixedItemSize:c,unshiftWith:a,shiftWith:l,shiftWithOffset:I,beforeUnshiftWith:S,firstItemIndex:s,sizes:h,listRefresh:v,statefulTotalCount:i,trackItemSizes:g,itemSize:d}},e.tup(O),{singleton:!0}),It=\"undefined\"!=typeof document&&\"scrollBehavior\"in document.documentElement.style;function Ct(t){var e=\"number\"==typeof t?{index:t}:t;return e.align||(e.align=\"start\"),e.behavior&&It||(e.behavior=\"auto\"),e.offset||(e.offset=0),e}var Tt=e.system(function(t){var n=t[0],o=n.sizes,r=n.totalCount,i=n.listRefresh,a=t[1],l=a.scrollingInProgress,s=a.viewportHeight,u=a.scrollTo,c=a.smoothScrollTargetReached,m=a.headerHeight,d=a.footerHeight,f=t[2].log,p=e.stream(),h=e.statefulStream(0),g=null,v=null,S=null;function I(){g&&(g(),g=null),S&&(S(),S=null),v&&(clearTimeout(v),v=null),e.publish(l,!1)}return e.connect(e.pipe(p,e.withLatestFrom(o,s,r,h,m,d,f),e.map(function(t){var n=t[0],o=t[1],r=t[2],a=t[3],s=t[4],u=t[5],m=t[6],d=t[7],f=Ct(n),h=f.align,C=f.behavior,T=f.offset,w=a-1,x=f.index;\"LAST\"===x&&(x=w),x=ht(x,o);var y=pt(x=Math.max(0,x,Math.min(w,x)),o.offsetTree)+u;\"end\"===h?(y=y-r+Y(o.sizeTree,x)[1],x===w&&(y+=m)):\"center\"===h?y=y-r/2+Y(o.sizeTree,x)[1]/2:y-=s,T&&(y+=T);var b=function(t){I(),t?(d(\"retrying to scroll to\",{location:n},B.DEBUG),e.publish(p,n)):d(\"list did not change, scroll successful\",{},B.DEBUG)};if(I(),\"smooth\"===C){var E=!1;S=e.subscribe(i,function(t){E=E||t}),g=e.handleNext(c,function(){b(E)})}else g=e.handleNext(e.pipe(i,function(t){var e=setTimeout(function(){t(!1)},50);return function(n){n&&(t(!0),clearTimeout(e))}}),b);return v=setTimeout(function(){I()},1200),e.publish(l,!0),d(\"scrolling from index to\",{index:x,top:y,behavior:C},B.DEBUG),{top:y,behavior:C}})),u),{scrollToIndex:p,topListHeight:h}},e.tup(St,N,O),{singleton:!0}),wt=\"up\",xt={atBottom:!1,notAtBottomBecause:\"NOT_SHOWING_LAST_ITEM\",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},yt=e.system(function(t){var n=t[0],o=n.scrollContainerState,r=n.scrollTop,i=n.viewportHeight,a=n.headerHeight,l=n.footerHeight,s=n.scrollBy,u=e.statefulStream(!1),c=e.statefulStream(!0),m=e.stream(),d=e.stream(),f=e.statefulStream(4),p=e.statefulStream(0),h=e.streamFromEmitter(e.pipe(e.merge(e.pipe(e.duc(r),e.skip(1),e.mapTo(!0)),e.pipe(e.duc(r),e.skip(1),e.mapTo(!1),e.debounceTime(100))),e.distinctUntilChanged())),g=e.statefulStreamFromEmitter(e.pipe(e.merge(e.pipe(s,e.mapTo(!0)),e.pipe(s,e.mapTo(!1),e.debounceTime(200))),e.distinctUntilChanged()),!1);e.connect(e.pipe(e.combineLatest(e.duc(r),e.duc(p)),e.map(function(t){return t[0]<=t[1]}),e.distinctUntilChanged()),c),e.connect(e.pipe(c,e.throttleTime(50)),d);var v=e.streamFromEmitter(e.pipe(e.combineLatest(o,e.duc(i),e.duc(a),e.duc(l),e.duc(f)),e.scan(function(t,e){var n,o,r=e[0],i=r.scrollTop,a=r.scrollHeight,l=e[1],s={viewportHeight:l,scrollTop:i,scrollHeight:a};return i+l-a>-e[4]?(i>t.state.scrollTop?(n=\"SCROLLED_DOWN\",o=t.state.scrollTop-i):(n=\"SIZE_DECREASED\",o=t.state.scrollTop-i||t.scrollTopDelta),{atBottom:!0,state:s,atBottomBecause:n,scrollTopDelta:o}):{atBottom:!1,notAtBottomBecause:s.scrollHeight>t.state.scrollHeight?\"SIZE_INCREASED\":l<t.state.viewportHeight?\"VIEWPORT_HEIGHT_DECREASING\":i<t.state.scrollTop?\"SCROLLING_UPWARDS\":\"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM\",state:s}},xt),e.distinctUntilChanged(function(t,e){return t&&t.atBottom===e.atBottom}))),S=e.statefulStreamFromEmitter(e.pipe(o,e.scan(function(t,e){var n=e.scrollTop,o=e.scrollHeight;return t.scrollHeight!==o?t.scrollTop!==n&&n===o-e.viewportHeight?{scrollHeight:o,scrollTop:n,jump:t.scrollTop-n,changed:!0}:{scrollHeight:o,scrollTop:n,jump:0,changed:!0}:{scrollTop:n,scrollHeight:o,jump:0,changed:!1}},{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),e.filter(function(t){return t.changed}),e.map(function(t){return t.jump})),0);e.connect(e.pipe(v,e.map(function(t){return t.atBottom})),u),e.connect(e.pipe(u,e.throttleTime(50)),m);var I=e.statefulStream(\"down\");e.connect(e.pipe(o,e.map(function(t){return t.scrollTop}),e.distinctUntilChanged(),e.scan(function(t,n){return e.getValue(g)?{direction:t.direction,prevScrollTop:n}:{direction:n<t.prevScrollTop?wt:\"down\",prevScrollTop:n}},{direction:\"down\",prevScrollTop:0}),e.map(function(t){return t.direction})),I),e.connect(e.pipe(o,e.throttleTime(50),e.mapTo(\"none\")),I);var C=e.statefulStream(0);return e.connect(e.pipe(h,e.filter(function(t){return!t}),e.mapTo(0)),C),e.connect(e.pipe(r,e.throttleTime(100),e.withLatestFrom(h),e.filter(function(t){return!!t[1]}),e.scan(function(t,e){return[t[1],e[0]]},[0,0]),e.map(function(t){return t[1]-t[0]})),C),{isScrolling:h,isAtTop:c,isAtBottom:u,atBottomState:v,atTopStateChange:d,atBottomStateChange:m,scrollDirection:I,atBottomThreshold:f,atTopThreshold:p,scrollVelocity:C,lastJumpDueToItemResize:S}},e.tup(N)),bt=e.system(function(t){var o=t[0].log,r=e.statefulStream(!1),i=e.streamFromEmitter(e.pipe(r,e.filter(function(t){return t}),e.distinctUntilChanged()));return e.subscribe(r,function(t){t&&n(o)(\"props updated\",{},B.DEBUG)}),{propsReady:r,didMount:i}},o(O),{singleton:!0}),Et=e.system(function(t){var n=t[0],o=n.sizes,r=n.listRefresh,i=n.defaultItemSize,a=t[1].scrollTop,l=t[2].scrollToIndex,s=t[3].didMount,u=e.statefulStream(!0),c=e.statefulStream(0);return e.connect(e.pipe(s,e.withLatestFrom(c),e.filter(function(t){return!!t[1]}),e.mapTo(!1)),u),e.subscribe(e.pipe(e.combineLatest(r,s),e.withLatestFrom(u,o,i),e.filter(function(t){var e=t[1],n=t[3];return t[0][1]&&(!_(t[2].sizeTree)||void 0!==n)&&!e}),e.withLatestFrom(c)),function(t){var n=t[1];setTimeout(function(){e.handleNext(a,function(){e.publish(u,!0)}),e.publish(l,n)})}),{scrolledToInitialItem:u,initialTopMostItemIndex:c}},e.tup(St,N,Tt,bt),{singleton:!0});function Ht(t){return!!t&&(\"smooth\"===t?\"smooth\":\"auto\")}var Rt=e.system(function(t){var n=t[0],o=n.totalCount,r=n.listRefresh,i=t[1],a=i.isAtBottom,l=i.atBottomState,s=t[2].scrollToIndex,u=t[3].scrolledToInitialItem,c=t[4],m=c.propsReady,d=c.didMount,f=t[5].log,p=t[6].scrollingInProgress,h=e.statefulStream(!1),g=null;function v(t){e.publish(s,{index:\"LAST\",align:\"end\",behavior:t})}return e.subscribe(e.pipe(e.combineLatest(e.pipe(e.duc(o),e.skip(1)),d),e.withLatestFrom(e.duc(h),a,u,p),e.map(function(t){var e=t[0],n=e[0],o=e[1]&&t[3],r=\"auto\";return o&&(r=function(t,e){return\"function\"==typeof t?Ht(t(e)):e&&Ht(t)}(t[1],t[2]||t[4]),o=o&&!!r),{totalCount:n,shouldFollow:o,followOutputBehavior:r}}),e.filter(function(t){return t.shouldFollow})),function(t){var n=t.totalCount,o=t.followOutputBehavior;g&&(g(),g=null),g=e.handleNext(r,function(){e.getValue(f)(\"following output to \",{totalCount:n},B.DEBUG),v(o),g=null})}),e.subscribe(e.pipe(e.combineLatest(e.duc(h),o,m),e.filter(function(t){return t[0]&&t[2]}),e.scan(function(t,e){var n=e[1];return{refreshed:t.value===n,value:n}},{refreshed:!1,value:0}),e.filter(function(t){return t.refreshed}),e.withLatestFrom(h,o)),function(t){var n=t[1],o=e.handleNext(l,function(t){!n||t.atBottom||\"SIZE_INCREASED\"!==t.notAtBottomBecause||g||(e.getValue(f)(\"scrolling to bottom due to increased size\",{},B.DEBUG),v(\"auto\"))});setTimeout(o,100)}),e.subscribe(e.combineLatest(e.duc(h),l),function(t){var e=t[1];t[0]&&!e.atBottom&&\"VIEWPORT_HEIGHT_DECREASING\"===e.notAtBottomBecause&&v(\"auto\")}),{followOutput:h}},e.tup(St,yt,Tt,Et,bt,O,N));function Lt(t){return t.reduce(function(t,e){return t.groupIndices.push(t.totalCount),t.totalCount+=e+1,t},{totalCount:0,groupIndices:[]})}var kt=r(function(t){var e=t[0],n=e.totalCount,o=e.groupIndices,r=e.sizes,p=t[1],h=p.scrollTop,g=p.headerHeight,v=i(),S=i(),I=a(l(v,s(Lt)));return u(l(I,s(c(\"totalCount\"))),n),u(l(I,s(c(\"groupIndices\"))),o),u(l(m(h,r,g),d(function(t){return gt(t[1])}),s(function(t){return Y(t[1].groupOffsetTree,Math.max(t[0]-t[2],0),\"v\")[0]}),f(),s(function(t){return[t]})),S),{groupCounts:v,topItemsIndexes:S}},o(St,N));function zt(t,e){return!(!t||t[0]!==e[0]||t[1]!==e[1])}function Bt(t,e){return!(!t||t.startIndex!==e.startIndex||t.endIndex!==e.endIndex)}function Ft(t,e,n){return\"number\"==typeof t?n===wt&&\"top\"===e||\"down\"===n&&\"bottom\"===e?t:0:n===wt?\"top\"===e?t.main:t.reverse:\"bottom\"===e?t.main:t.reverse}function Pt(t,e){return\"number\"==typeof t?t:t[e]||0}var Ot=e.system(function(t){var n=t[0],o=n.scrollTop,r=n.viewportHeight,i=n.deviation,a=n.headerHeight,l=e.stream(),s=e.statefulStream(0),u=e.statefulStream(0),c=e.statefulStream(0),m=e.statefulStream(0),d=e.statefulStreamFromEmitter(e.pipe(e.combineLatest(e.duc(o),e.duc(r),e.duc(a),e.duc(l,zt),e.duc(m),e.duc(s),e.duc(u),e.duc(i),e.duc(c)),e.map(function(t){var e=t[0],n=t[1],o=t[2],r=t[3],i=r[0],a=r[1],l=t[4],s=t[6],u=t[7],c=t[8],m=e-u,d=t[5]+s,f=Math.max(o-m,0),p=\"none\",h=Pt(c,\"top\"),g=Pt(c,\"bottom\");return i-=u,a+=o+s,(i+=o+s)>e+d-h&&(p=wt),(a-=u)<e-f+n+g&&(p=\"down\"),\"none\"!==p?[Math.max(m-o-Ft(l,\"top\",p)-h,0),m-f-s+n+Ft(l,\"bottom\",p)+g]:null}),e.filter(function(t){return null!=t}),e.distinctUntilChanged(zt)),[0,0]);return{listBoundary:l,overscan:m,topListHeight:s,fixedHeaderHeight:u,increaseViewportBy:c,visibleRange:d}},e.tup(N),{singleton:!0}),Mt={items:[],topItems:[],offsetTop:0,offsetBottom:0,top:0,bottom:0,topListHeight:0,totalCount:0};function Vt(t,e,n){if(0===t.length)return[];if(!gt(e))return t.map(function(t){return H({},t,{index:t.index+n,originalIndex:t.index})});for(var o,r=[],i=nt(e.groupOffsetTree,t[0].index,t[t.length-1].index),a=void 0,l=0,s=k(t);!(o=s()).done;){var u=o.value;(!a||a.end<u.index)&&(a=i.shift(),l=e.groupIndices.indexOf(a.start)),r.push(H({},u.index===a.start?{type:\"group\",index:l}:{index:u.index-(l+1)+n,groupIndex:l},{size:u.size,offset:u.offset,originalIndex:u.index,data:u.data}))}return r}function Ut(t,e,n,o,r){var i=0,a=0;if(t.length>0){i=t[0].offset;var l=t[t.length-1];a=l.offset+l.size}var s=i,u=o.lastOffset+(n-o.lastIndex)*o.lastSize-a;return{items:Vt(t,o,r),topItems:Vt(e,o,r),topListHeight:e.reduce(function(t,e){return e.size+t},0),offsetTop:i,offsetBottom:u,top:s,bottom:a,totalCount:n}}var At,Wt,Nt,Dt=e.system(function(t){var n=t[0],o=n.sizes,r=n.totalCount,i=n.data,a=n.firstItemIndex,l=t[1],s=t[2],u=s.visibleRange,c=s.listBoundary,m=s.topListHeight,d=t[3],f=d.scrolledToInitialItem,p=d.initialTopMostItemIndex,h=t[4].topListHeight,g=t[5],v=t[6].didMount,S=e.statefulStream([]),I=e.stream();e.connect(l.topItemsIndexes,S);var C=e.statefulStreamFromEmitter(e.pipe(e.combineLatest(v,e.duc(u),e.duc(r),e.duc(o),e.duc(p),f,e.duc(S),e.duc(a),i),e.filter(function(t){return t[0]}),e.map(function(t){var n=t[1],o=n[0],r=n[1],i=t[2],a=t[4],l=t[5],s=t[6],u=t[7],c=t[8],m=t[3],d=m.sizeTree,f=m.offsetTree;if(0===i||0===o&&0===r)return Mt;if(_(d))return Ut(function(t,e,n){if(gt(e)){var o=ht(t,e);return[{index:Y(e.groupOffsetTree,o)[0],size:0,offset:0},{index:o,size:0,offset:0,data:n&&n[0]}]}return[{index:t,size:0,offset:0,data:n&&n[0]}]}(function(t,e){return\"number\"==typeof t?t:\"LAST\"===t.index?e-1:t.index}(a,i),m,c),[],i,m,u);var p=[];if(s.length>0)for(var h,g=s[0],v=s[s.length-1],S=0,I=k(nt(d,g,v));!(h=I()).done;)for(var C=h.value,T=C.value,w=Math.max(C.start,g),x=Math.min(C.end,v),y=w;y<=x;y++)p.push({index:y,size:T,offset:S,data:c&&c[y]}),S+=T;if(!l)return Ut([],p,i,m,u);var b=s.length>0?s[s.length-1]+1:0,E=function(t,e,n,o){return void 0===o&&(o=0),o>0&&(e=Math.max(e,lt(t,o,ut).offset)),ot((i=n,l=at(r=t,e,a=ct),s=at(r,i,a,l),r.slice(l,s+1)),mt);var r,i,a,l,s}(f,o,r,b);if(0===E.length)return null;var H=i-1;return Ut(e.tap([],function(t){for(var e,n=k(E);!(e=n()).done;){var i=e.value,a=i.value,l=a.offset,s=i.start,u=a.size;a.offset<o&&(l+=((s+=Math.floor((o-a.offset)/u))-i.start)*u),s<b&&(l+=(b-s)*u,s=b);for(var m=Math.min(i.end,H),d=s;d<=m&&!(l>=r);d++)t.push({index:d,size:u,offset:l,data:c&&c[d]}),l+=u}}),p,i,m,u)}),e.filter(function(t){return null!==t}),e.distinctUntilChanged()),Mt);return e.connect(e.pipe(i,e.filter(function(t){return void 0!==t}),e.map(function(t){return t.length})),r),e.connect(e.pipe(C,e.map(e.prop(\"topListHeight\"))),h),e.connect(h,m),e.connect(e.pipe(C,e.map(function(t){return[t.top,t.bottom]})),c),e.connect(e.pipe(C,e.map(function(t){return t.items})),I),H({listState:C,topItemsIndexes:S,endReached:e.streamFromEmitter(e.pipe(C,e.filter(function(t){return t.items.length>0}),e.withLatestFrom(r,i),e.filter(function(t){var e=t[0].items;return e[e.length-1].originalIndex===t[1]-1}),e.map(function(t){return[t[1]-1,t[2]]}),e.distinctUntilChanged(zt),e.map(function(t){return t[0]}))),startReached:e.streamFromEmitter(e.pipe(C,e.throttleTime(200),e.filter(function(t){var e=t.items;return e.length>0&&e[0].originalIndex===t.topItems.length}),e.map(function(t){return t.items[0].index}),e.distinctUntilChanged())),rangeChanged:e.streamFromEmitter(e.pipe(C,e.filter(function(t){return t.items.length>0}),e.map(function(t){var e=t.items;return{startIndex:e[0].index,endIndex:e[e.length-1].index}}),e.distinctUntilChanged(Bt))),itemsRendered:I},g)},e.tup(St,kt,Ot,Et,Tt,yt,bt),{singleton:!0}),Gt=e.system(function(t){var n=t[0],o=n.sizes,r=n.firstItemIndex,i=n.data,a=t[1].listState,l=t[2].didMount,s=e.statefulStream(0);return e.connect(e.pipe(l,e.withLatestFrom(s),e.filter(function(t){return 0!==t[1]}),e.withLatestFrom(o,r,i),e.map(function(t){var e=t[0][1],n=t[1],o=t[2],r=t[3],i=void 0===r?[]:r,a=0;if(n.groupIndices.length>0)for(var l,s=k(n.groupIndices);!((l=s()).done||l.value-a>=e);)a++;var u=e+a;return Ut(Array.from({length:u}).map(function(t,e){return{index:e,size:0,offset:0,data:i[e]}}),[],u,n,o)})),a),{initialItemCount:s}},e.tup(St,Dt,bt),{singleton:!0}),_t=e.system(function(t){var n=t[0].scrollVelocity,o=e.statefulStream(!1),r=e.stream(),i=e.statefulStream(!1);return e.connect(e.pipe(n,e.withLatestFrom(i,o,r),e.filter(function(t){return!!t[1]}),e.map(function(t){var e=t[0],n=t[1],o=t[2],r=t[3],i=n.enter;if(o){if((0,n.exit)(e,r))return!1}else if(i(e,r))return!0;return o}),e.distinctUntilChanged()),o),e.subscribe(e.pipe(e.combineLatest(o,n,r),e.withLatestFrom(i)),function(t){var e=t[0],n=t[1];return e[0]&&n&&n.change&&n.change(e[1],e[2])}),{isSeeking:o,scrollSeekConfiguration:i,scrollVelocity:n,scrollSeekRangeChanged:r}},e.tup(yt),{singleton:!0}),jt=r(function(t){var e=t[0].topItemsIndexes,n=p(0);return u(l(n,d(function(t){return t>0}),s(function(t){return Array.from({length:t}).map(function(t,e){return e})})),e),{topItemCount:n}},o(Dt)),Kt=e.system(function(t){var n=t[0],o=n.footerHeight,r=n.headerHeight,i=t[1].listState,a=e.stream(),l=e.statefulStreamFromEmitter(e.pipe(e.combineLatest(o,r,i),e.map(function(t){var e=t[2];return t[0]+t[1]+e.offsetBottom+e.bottom})),0);return e.connect(e.duc(l),a),{totalListHeight:l,totalListHeightChanged:a}},e.tup(N,Dt),{singleton:!0}),Yt=e.system(function(t){var n=t[0],o=n.scrollBy,r=n.scrollTop,i=n.deviation,a=n.scrollingInProgress,l=t[1],s=l.isScrolling,u=l.isAtBottom,c=l.atBottomState,m=l.scrollDirection,d=t[3],f=d.beforeUnshiftWith,p=d.shiftWithOffset,h=d.sizes,g=t[4].log,v=e.streamFromEmitter(e.pipe(t[2].listState,e.withLatestFrom(l.lastJumpDueToItemResize),e.scan(function(t,e){var n=t[1],o=e[0],r=o.items,i=o.totalCount,a=o.bottom+o.offsetBottom,l=0;return t[2]===i&&n.length>0&&r.length>0&&(0===r[0].originalIndex&&0===n[0].originalIndex||0!=(l=a-t[3])&&(l+=e[1])),[l,r,i,a]},[0,[],0,0]),e.filter(function(t){return 0!==t[0]}),e.withLatestFrom(r,m,a,g,u,c),e.filter(function(t){return!t[3]&&0!==t[1]&&t[2]===wt}),e.map(function(t){var e=t[0][0];return(0,t[4])(\"Upward scrolling compensation\",{amount:e},B.DEBUG),e})));return e.connect(e.pipe(v,e.withLatestFrom(i),e.map(function(t){return t[1]-t[0]})),i),e.subscribe(e.pipe(e.combineLatest(e.statefulStreamFromEmitter(s,!1),i),e.filter(function(t){return!t[0]&&0!==t[1]}),e.map(function(t){return t[1]}),e.throttleTime(1)),function(t){t>0?(e.publish(o,{top:-t,behavior:\"auto\"}),e.publish(i,0)):(e.publish(i,0),e.publish(o,{top:-t,behavior:\"auto\"}))}),e.connect(e.pipe(p,e.map(function(t){return{top:-t}})),o),e.connect(e.pipe(f,e.withLatestFrom(h),e.map(function(t){return t[0]*t[1].lastSize})),v),{deviation:i}},e.tup(N,yt,Dt,St,O)),Zt=e.system(function(t){var n=t[0].totalListHeight,o=t[1].didMount,r=t[2].scrollTo,i=e.statefulStream(0);return e.subscribe(e.pipe(o,e.withLatestFrom(i),e.filter(function(t){return 0!==t[1]}),e.map(function(t){return{top:t[1]}})),function(t){e.handleNext(e.pipe(n,e.filter(function(t){return 0!==t})),function(){setTimeout(function(){e.publish(r,t)})})}),{initialScrollTop:i}},e.tup(Kt,bt,N),{singleton:!0}),qt=e.system(function(t){var n=t[0].viewportHeight,o=t[1].totalListHeight,r=e.statefulStream(!1);return{alignToBottom:r,paddingTopAddition:e.statefulStreamFromEmitter(e.pipe(e.combineLatest(r,n,o),e.filter(function(t){return t[0]}),e.map(function(t){return Math.max(0,t[1]-t[2])}),e.distinctUntilChanged()),0)}},e.tup(N,Kt),{singleton:!0}),Jt=e.system(function(t){var n=t[0],o=n.scrollTo,r=n.scrollContainerState,i=e.stream(),a=e.stream(),l=e.stream(),s=e.statefulStream(!1),u=e.statefulStream(void 0);return e.connect(e.pipe(e.combineLatest(i,a),e.map(function(t){var e=t[0],n=e.viewportHeight,o=e.scrollHeight;return{scrollTop:Math.max(0,e.scrollTop-t[1].offsetTop),scrollHeight:o,viewportHeight:n}})),r),e.connect(e.pipe(o,e.withLatestFrom(a),e.map(function(t){var e=t[0];return H({},e,{top:e.top+t[1].offsetTop})})),l),{useWindowScroll:s,customScrollParent:u,windowScrollContainerState:i,windowViewportRect:a,windowScrollTo:l}},e.tup(N)),$t=e.system(function(t){var n=t[0],o=n.sizes,r=n.totalCount,i=t[1],a=i.scrollTop,l=i.viewportHeight,s=i.headerHeight,u=i.scrollingInProgress,c=t[2].scrollToIndex,m=e.stream();return e.connect(e.pipe(m,e.withLatestFrom(o,l,r,s,a),e.map(function(t){var n=t[0],o=n.index,r=n.behavior,i=void 0===r?\"auto\":r,a=n.done,l=t[1],s=t[2],c=t[4],m=t[5],d=t[3]-1,f=null;o=ht(o,l);var p=pt(o=Math.max(0,o,Math.min(d,o)),l.offsetTree)+c;return p<m?f={index:o,behavior:i,align:\"start\"}:p+Y(l.sizeTree,o)[1]>m+s&&(f={index:o,behavior:i,align:\"end\"}),f?a&&e.handleNext(e.pipe(u,e.skip(1),e.filter(function(t){return!1===t})),a):a&&a(),f}),e.filter(function(t){return null!==t})),c),{scrollIntoView:m}},e.tup(St,N,Tt,Dt,O),{singleton:!0}),Qt=[\"listState\",\"topItemsIndexes\"],Xt=e.system(function(t){return H({},t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},e.tup(Ot,Gt,bt,_t,Kt,Zt,qt,Jt,$t)),te=e.system(function(t){var n=t[0],o=n.totalCount,r=n.sizeRanges,i=n.fixedItemSize,a=n.defaultItemSize,l=n.trackItemSizes,s=n.itemSize,u=n.data,c=n.firstItemIndex,m=n.groupIndices,d=n.statefulTotalCount,f=t[1],p=f.initialTopMostItemIndex,h=f.scrolledToInitialItem,g=t[2],v=t[3],S=t[4],I=S.listState,C=S.topItemsIndexes,T=R(S,Qt),w=t[5].scrollToIndex,x=t[7].topItemCount,y=t[8].groupCounts,b=t[9],E=t[10];return e.connect(T.rangeChanged,b.scrollSeekRangeChanged),e.connect(e.pipe(b.windowViewportRect,e.map(e.prop(\"visibleHeight\"))),g.viewportHeight),H({totalCount:o,data:u,firstItemIndex:c,sizeRanges:r,initialTopMostItemIndex:p,scrolledToInitialItem:h,topItemsIndexes:C,topItemCount:x,groupCounts:y,fixedItemHeight:i,defaultItemHeight:a},v,{statefulTotalCount:d,listState:I,scrollToIndex:w,trackItemSizes:l,itemSize:s,groupIndices:m},T,b,g,E)},e.tup(St,Et,N,Rt,Dt,Tt,Yt,jt,kt,Xt,O)),ee=(At=function(){if(\"undefined\"==typeof document)return\"sticky\";var t=document.createElement(\"div\");return t.style.position=\"-webkit-sticky\",\"-webkit-sticky\"===t.style.position?\"-webkit-sticky\":\"sticky\"},Nt=!1,function(){return Nt||(Nt=!0,Wt=At()),Wt});function ne(t,e){var n=y(null),o=b(function(o){if(null!==o){var r,i,a=o.getBoundingClientRect(),l=a.width;if(e){var s=e.getBoundingClientRect(),u=a.top-s.top;r=s.height-Math.max(0,u),i=u+e.scrollTop}else r=window.innerHeight-Math.max(0,a.top),i=a.top+window.pageYOffset;n.current={offsetTop:i,visibleHeight:r,visibleWidth:l},t(n.current)}},[t,e]),r=M(o),i=r.callbackRef,a=r.ref,l=b(function(){o(a.current)},[o,a]);return x(function(){if(e){e.addEventListener(\"scroll\",l);var t=new ResizeObserver(l);return t.observe(e),function(){e.removeEventListener(\"scroll\",l),t.unobserve(e)}}return window.addEventListener(\"scroll\",l),window.addEventListener(\"resize\",l),function(){window.removeEventListener(\"scroll\",l),window.removeEventListener(\"resize\",l)}},[l,e]),i}var oe=[\"placeholder\"],re=[\"style\",\"children\"],ie=[\"style\",\"children\"];function ae(t){return t}var le=r(function(){var t=p(function(t){return\"Item \"+t}),e=p(null),n=p(function(t){return\"Group \"+t}),o=p({}),r=p(ae),i=p(\"div\"),a=p(h),u=function(t,e){return void 0===e&&(e=null),S(l(o,s(function(e){return e[t]}),f()),e)};return{context:e,itemContent:t,groupContent:n,components:o,computeItemKey:r,headerFooterTag:i,scrollerRef:a,FooterComponent:u(\"Footer\"),HeaderComponent:u(\"Header\"),TopItemListComponent:u(\"TopItemList\"),ListComponent:u(\"List\",\"div\"),ItemComponent:u(\"Item\",\"div\"),GroupComponent:u(\"Group\",\"div\"),ScrollerComponent:u(\"Scroller\",\"div\"),EmptyPlaceholder:u(\"EmptyPlaceholder\"),ScrollSeekPlaceholder:u(\"ScrollSeekPlaceholder\")}});function se(t,e){var n=i();return g(n,function(){return console.warn(\"react-virtuoso: You are using a deprecated property. \"+e,\"color: red;\",\"color: inherit;\",\"color: blue;\")}),u(n,t),n}var ue=r(function(t){var e=t[0],o=t[1],r={item:se(o.itemContent,\"Rename the %citem%c prop to %citemContent.\"),group:se(o.groupContent,\"Rename the %cgroup%c prop to %cgroupContent.\"),topItems:se(e.topItemCount,\"Rename the %ctopItems%c prop to %ctopItemCount.\"),itemHeight:se(e.fixedItemHeight,\"Rename the %citemHeight%c prop to %cfixedItemHeight.\"),scrollingStateChange:se(e.isScrolling,\"Rename the %cscrollingStateChange%c prop to %cisScrolling.\"),adjustForPrependedItems:i(),maxHeightCacheSize:i(),footer:i(),header:i(),HeaderContainer:i(),FooterContainer:i(),ItemContainer:i(),ScrollContainer:i(),GroupContainer:i(),ListContainer:i(),emptyComponent:i(),scrollSeek:i()};function a(t,e,n){u(l(t,I(o.components),s(function(t){var o,r=t[0],i=t[1];return console.warn(\"react-virtuoso: \"+n+\" property is deprecated. Pass components.\"+e+\" instead.\"),H({},i,((o={})[e]=r,o))})),o.components)}return g(r.adjustForPrependedItems,function(){console.warn(\"react-virtuoso: adjustForPrependedItems is no longer supported. Use the firstItemIndex property instead - https://virtuoso.dev/prepend-items.\",\"color: red;\",\"color: inherit;\",\"color: blue;\")}),g(r.maxHeightCacheSize,function(){console.warn(\"react-virtuoso: maxHeightCacheSize is no longer necessary. Setting it has no effect - remove it from your code.\")}),g(r.HeaderContainer,function(){console.warn(\"react-virtuoso: HeaderContainer is deprecated. Use headerFooterTag if you want to change the wrapper of the header component and pass components.Header to change its contents.\")}),g(r.FooterContainer,function(){console.warn(\"react-virtuoso: FooterContainer is deprecated. Use headerFooterTag if you want to change the wrapper of the footer component and pass components.Footer to change its contents.\")}),g(r.scrollSeek,function(t){var r=t.placeholder,i=R(t,oe);console.warn(\"react-virtuoso: scrollSeek property is deprecated. Pass scrollSeekConfiguration and specify the placeholder in components.ScrollSeekPlaceholder instead.\"),v(o.components,H({},n(o.components),{ScrollSeekPlaceholder:r})),v(e.scrollSeekConfiguration,i)}),a(r.footer,\"Footer\",\"footer\"),a(r.header,\"Header\",\"header\"),a(r.ItemContainer,\"Item\",\"ItemContainer\"),a(r.ListContainer,\"List\",\"ListContainer\"),a(r.ScrollContainer,\"Scroller\",\"ScrollContainer\"),a(r.emptyComponent,\"EmptyPlaceholder\",\"emptyComponent\"),a(r.GroupContainer,\"Group\",\"GroupContainer\"),H({},e,o,r)},o(te,le)),ce=function(t){return T.createElement(\"div\",{style:{height:t.height}})},me={position:ee(),zIndex:1,overflowAnchor:\"none\"},de={overflowAnchor:\"none\"},fe=T.memo(function(t){var e=t.showTopList,n=void 0!==e&&e,o=Re(\"listState\"),r=He(\"sizeRanges\"),i=Re(\"useWindowScroll\"),a=Re(\"customScrollParent\"),l=He(\"windowScrollContainerState\"),s=He(\"scrollContainerState\"),u=a||i?l:s,c=Re(\"itemContent\"),m=Re(\"context\"),d=Re(\"groupContent\"),f=Re(\"trackItemSizes\"),p=Re(\"itemSize\"),g=Re(\"log\"),v=U(r,p,f,n?h:u,g,a),S=v.callbackRef,I=v.ref,C=T.useState(0),w=C[0],x=C[1];Le(\"deviation\",function(t){w!==t&&(I.current.style.marginTop=t+\"px\",x(t))});var y=Re(\"EmptyPlaceholder\"),b=Re(\"ScrollSeekPlaceholder\")||ce,R=Re(\"ListComponent\"),L=Re(\"ItemComponent\"),k=Re(\"GroupComponent\"),z=Re(\"computeItemKey\"),B=Re(\"isSeeking\"),F=Re(\"groupIndices\").length>0,P=Re(\"paddingTopAddition\"),O=Re(\"firstItemIndex\"),M=Re(\"statefulTotalCount\"),V=n?{}:{boxSizing:\"border-box\",paddingTop:o.offsetTop+P,paddingBottom:o.offsetBottom,marginTop:w};return!n&&0===M&&y?E(y,ve(y,m)):E(R,H({},ve(R,m),{ref:S,style:V,\"data-test-id\":n?\"virtuoso-top-item-list\":\"virtuoso-item-list\"}),(n?o.topItems:o.items).map(function(t){var e=t.originalIndex,n=z(e+O,t.data,m);return B?E(b,H({},ve(b,m),{key:n,index:t.index,height:t.size,type:t.type||\"item\"},\"group\"===t.type?{}:{groupIndex:t.groupIndex})):\"group\"===t.type?E(k,H({},ve(k,m),{key:n,\"data-index\":e,\"data-known-size\":t.size,\"data-item-index\":t.index,style:me}),d(t.index)):E(L,H({},ve(L,m),{key:n,\"data-index\":e,\"data-known-size\":t.size,\"data-item-index\":t.index,\"data-item-group-index\":t.groupIndex,style:de}),F?c(t.index,t.groupIndex,t.data,m):c(t.index,t.data,m))}))}),pe={height:\"100%\",outline:\"none\",overflowY:\"auto\",position:\"relative\",WebkitOverflowScrolling:\"touch\"},he={width:\"100%\",height:\"100%\",position:\"absolute\",top:0},ge={width:\"100%\",position:ee(),top:0};function ve(t,e){if(\"string\"!=typeof t)return{context:e}}var Se=T.memo(function(){var t=Re(\"HeaderComponent\"),e=He(\"headerHeight\"),n=Re(\"headerFooterTag\"),o=V(function(t){return e(A(t,\"height\"))}),r=Re(\"context\");return t?E(n,{ref:o},E(t,ve(t,r))):null}),Ie=T.memo(function(){var t=Re(\"FooterComponent\"),e=He(\"footerHeight\"),n=Re(\"headerFooterTag\"),o=V(function(t){return e(A(t,\"height\"))}),r=Re(\"context\");return t?E(n,{ref:o},E(t,ve(t,r))):null});function Ce(t){var e=t.usePublisher,n=t.useEmitter,o=t.useEmitterValue;return T.memo(function(t){var r=t.style,i=t.children,a=R(t,re),l=e(\"scrollContainerState\"),s=o(\"ScrollerComponent\"),u=e(\"smoothScrollTargetReached\"),c=o(\"scrollerRef\"),m=o(\"context\"),d=W(l,u,s,c),f=d.scrollerRef,p=d.scrollByCallback;return n(\"scrollTo\",d.scrollToCallback),n(\"scrollBy\",p),E(s,H({ref:f,style:H({},pe,r),\"data-test-id\":\"virtuoso-scroller\",\"data-virtuoso-scroller\":!0,tabIndex:0},a,ve(s,m)),i)})}function Te(t){var e=t.usePublisher,n=t.useEmitter,o=t.useEmitterValue;return T.memo(function(t){var r=t.style,i=t.children,a=R(t,ie),l=e(\"windowScrollContainerState\"),s=o(\"ScrollerComponent\"),u=e(\"smoothScrollTargetReached\"),c=o(\"totalListHeight\"),m=o(\"deviation\"),d=o(\"customScrollParent\"),f=o(\"context\"),p=W(l,u,s,h,d),g=p.scrollerRef,v=p.scrollByCallback,S=p.scrollToCallback;return F(function(){return g.current=d||window,function(){g.current=null}},[g,d]),n(\"windowScrollTo\",S),n(\"scrollBy\",v),E(s,H({style:H({position:\"relative\"},r,0!==c?{height:c+m}:{}),\"data-virtuoso-scroller\":!0},a,ve(s,f)),i)})}var we=function(t){var e=t.children,n=He(\"viewportHeight\"),o=V(C(n,function(t){return A(t,\"height\")}));return T.createElement(\"div\",{style:he,ref:o,\"data-viewport-type\":\"element\"},e)},xe=function(t){var e=t.children,n=ne(He(\"windowViewportRect\"),Re(\"customScrollParent\"));return T.createElement(\"div\",{ref:n,style:he,\"data-viewport-type\":\"window\"},e)},ye=function(t){var e=t.children,n=Re(\"TopItemListComponent\"),o=Re(\"headerHeight\"),r=H({},ge,{marginTop:o+\"px\"}),i=Re(\"context\");return E(n||\"div\",{style:r,context:i},e)},be=t(ue,{required:{},optional:{context:\"context\",followOutput:\"followOutput\",firstItemIndex:\"firstItemIndex\",itemContent:\"itemContent\",groupContent:\"groupContent\",overscan:\"overscan\",increaseViewportBy:\"increaseViewportBy\",totalCount:\"totalCount\",topItemCount:\"topItemCount\",initialTopMostItemIndex:\"initialTopMostItemIndex\",components:\"components\",groupCounts:\"groupCounts\",atBottomThreshold:\"atBottomThreshold\",atTopThreshold:\"atTopThreshold\",computeItemKey:\"computeItemKey\",defaultItemHeight:\"defaultItemHeight\",fixedItemHeight:\"fixedItemHeight\",itemSize:\"itemSize\",scrollSeekConfiguration:\"scrollSeekConfiguration\",headerFooterTag:\"headerFooterTag\",data:\"data\",initialItemCount:\"initialItemCount\",initialScrollTop:\"initialScrollTop\",alignToBottom:\"alignToBottom\",useWindowScroll:\"useWindowScroll\",customScrollParent:\"customScrollParent\",scrollerRef:\"scrollerRef\",logLevel:\"logLevel\",react18ConcurrentRendering:\"react18ConcurrentRendering\",item:\"item\",group:\"group\",topItems:\"topItems\",itemHeight:\"itemHeight\",scrollingStateChange:\"scrollingStateChange\",maxHeightCacheSize:\"maxHeightCacheSize\",footer:\"footer\",header:\"header\",ItemContainer:\"ItemContainer\",ScrollContainer:\"ScrollContainer\",ListContainer:\"ListContainer\",GroupContainer:\"GroupContainer\",emptyComponent:\"emptyComponent\",HeaderContainer:\"HeaderContainer\",FooterContainer:\"FooterContainer\",scrollSeek:\"scrollSeek\"},methods:{scrollToIndex:\"scrollToIndex\",scrollIntoView:\"scrollIntoView\",scrollTo:\"scrollTo\",scrollBy:\"scrollBy\",adjustForPrependedItems:\"adjustForPrependedItems\"},events:{isScrolling:\"isScrolling\",endReached:\"endReached\",startReached:\"startReached\",rangeChanged:\"rangeChanged\",atBottomStateChange:\"atBottomStateChange\",atTopStateChange:\"atTopStateChange\",totalListHeightChanged:\"totalListHeightChanged\",itemsRendered:\"itemsRendered\",groupIndices:\"groupIndices\"}},T.memo(function(t){var e=Re(\"useWindowScroll\"),n=Re(\"topItemsIndexes\").length>0,o=Re(\"customScrollParent\"),r=o||e?xe:we;return T.createElement(o||e?ze:ke,H({},t),T.createElement(r,null,T.createElement(Se,null),T.createElement(fe,null),T.createElement(Ie,null)),n&&T.createElement(ye,null,T.createElement(fe,{showTopList:!0})))})),Ee=be.Component,He=be.usePublisher,Re=be.useEmitterValue,Le=be.useEmitter,ke=Ce({usePublisher:He,useEmitterValue:Re,useEmitter:Le}),ze=Te({usePublisher:He,useEmitterValue:Re,useEmitter:Le}),Be={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Fe={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Pe=Math.round,Oe=Math.ceil,Me=Math.floor,Ve=Math.min,Ue=Math.max;function Ae(t,e){return Array.from({length:e-t+1}).map(function(e,n){return{index:n+t}})}var We=e.system(function(t){var n=t[0],o=n.overscan,r=n.visibleRange,i=n.listBoundary,a=t[1],l=a.scrollTop,s=a.viewportHeight,u=a.scrollBy,c=a.scrollTo,m=a.smoothScrollTargetReached,d=a.scrollContainerState,f=t[2],p=t[3],h=t[4],g=h.propsReady,v=h.didMount,S=t[5],I=S.windowViewportRect,C=S.windowScrollTo,T=S.useWindowScroll,w=S.customScrollParent,x=S.windowScrollContainerState,y=e.statefulStream(0),b=e.statefulStream(0),E=e.statefulStream(Be),R=e.statefulStream({height:0,width:0}),L=e.statefulStream({height:0,width:0}),k=e.stream(),z=e.stream(),B=e.statefulStream(0);e.connect(e.pipe(v,e.withLatestFrom(b),e.filter(function(t){return 0!==t[1]}),e.map(function(t){return{items:Ae(0,t[1]-1),top:0,bottom:0,offsetBottom:0,offsetTop:0,itemHeight:0,itemWidth:0}})),E),e.connect(e.pipe(e.combineLatest(e.duc(y),r,e.duc(L,function(t,e){return t&&t.width===e.width&&t.height===e.height})),e.withLatestFrom(R),e.map(function(t){var e=t[0],n=e[0],o=e[1],r=o[0],i=o[1],a=e[2],l=t[1],s=a.height,u=a.width,c=l.width;if(0===n||0===c)return Be;if(0===u)return Fe;var m=Ge(c,u),d=m*Me(r/s),f=m*Oe(i/s)-1;f=Ve(n-1,f);var p=Ae(d=Ve(f,Ue(0,d)),f),h=Ne(l,a,p),g=h.top,v=h.bottom;return{items:p,offsetTop:g,offsetBottom:Oe(n/m)*s-v,top:g,bottom:v,itemHeight:s,itemWidth:u}})),E),e.connect(e.pipe(R,e.map(function(t){return t.height})),s),e.connect(e.pipe(e.combineLatest(R,L,E),e.map(function(t){var e=Ne(t[0],t[1],t[2].items);return[e.top,e.bottom]}),e.distinctUntilChanged(zt)),i);var F=e.streamFromEmitter(e.pipe(e.duc(E),e.filter(function(t){return t.items.length>0}),e.withLatestFrom(y),e.filter(function(t){var e=t[0].items;return e[e.length-1].index===t[1]-1}),e.map(function(t){return t[1]-1}),e.distinctUntilChanged())),P=e.streamFromEmitter(e.pipe(e.duc(E),e.filter(function(t){var e=t.items;return e.length>0&&0===e[0].index}),e.mapTo(0),e.distinctUntilChanged())),O=e.streamFromEmitter(e.pipe(e.duc(E),e.filter(function(t){return t.items.length>0}),e.map(function(t){var e=t.items;return{startIndex:e[0].index,endIndex:e[e.length-1].index}}),e.distinctUntilChanged(Bt)));e.connect(O,p.scrollSeekRangeChanged),e.connect(e.pipe(k,e.withLatestFrom(R,L,y),e.map(function(t){var e=t[1],n=t[2],o=t[3],r=Ct(t[0]),i=r.align,a=r.behavior,l=r.offset,s=r.index;\"LAST\"===s&&(s=o-1);var u=De(e,n,s=Ue(0,s,Ve(o-1,s)));return\"end\"===i?u=Pe(u-e.height+n.height):\"center\"===i&&(u=Pe(u-e.height/2+n.height/2)),l&&(u+=l),{top:u,behavior:a}})),c);var M=e.statefulStreamFromEmitter(e.pipe(E,e.map(function(t){return t.offsetBottom+t.bottom})),0);return e.connect(e.pipe(I,e.map(function(t){return{width:t.visibleWidth,height:t.visibleHeight}})),R),H({totalCount:y,viewportDimensions:R,itemDimensions:L,scrollTop:l,scrollHeight:z,overscan:o,scrollBy:u,scrollTo:c,scrollToIndex:k,smoothScrollTargetReached:m,windowViewportRect:I,windowScrollTo:C,useWindowScroll:T,customScrollParent:w,windowScrollContainerState:x,deviation:B,scrollContainerState:d,initialItemCount:b},p,{gridState:E,totalListHeight:M},f,{startReached:P,endReached:F,rangeChanged:O,propsReady:g})},e.tup(Ot,N,yt,_t,bt,Jt));function Ne(t,e,n){var o=e.height;return void 0===o||0===n.length?{top:0,bottom:0}:{top:De(t,e,n[0].index),bottom:De(t,e,n[n.length-1].index)+o}}function De(t,e,n){var o=Ge(t.width,e.width);return Me(n/o)*e.height}function Ge(t,e){return Ue(1,Me(t/e))}var _e=[\"placeholder\"],je=e.system(function(){var t=e.statefulStream(function(t){return\"Item \"+t}),n=e.statefulStream({}),o=e.statefulStream(null),r=e.statefulStream(\"virtuoso-grid-item\"),i=e.statefulStream(\"virtuoso-grid-list\"),a=e.statefulStream(ae),l=e.statefulStream(e.noop),s=function(t,o){return void 0===o&&(o=null),e.statefulStreamFromEmitter(e.pipe(n,e.map(function(e){return e[t]}),e.distinctUntilChanged()),o)};return{context:o,itemContent:t,components:n,computeItemKey:a,itemClassName:r,listClassName:i,scrollerRef:l,ListComponent:s(\"List\",\"div\"),ItemComponent:s(\"Item\",\"div\"),ScrollerComponent:s(\"Scroller\",\"div\"),ScrollSeekPlaceholder:s(\"ScrollSeekPlaceholder\",\"div\")}}),Ke=e.system(function(t){var n=t[0],o=t[1],r={item:se(o.itemContent,\"Rename the %citem%c prop to %citemContent.\"),ItemContainer:e.stream(),ScrollContainer:e.stream(),ListContainer:e.stream(),emptyComponent:e.stream(),scrollSeek:e.stream()};function i(t,n,r){e.connect(e.pipe(t,e.withLatestFrom(o.components),e.map(function(t){var e,o=t[0],i=t[1];return console.warn(\"react-virtuoso: \"+r+\" property is deprecated. Pass components.\"+n+\" instead.\"),H({},i,((e={})[n]=o,e))})),o.components)}return e.subscribe(r.scrollSeek,function(t){var r=t.placeholder,i=R(t,_e);console.warn(\"react-virtuoso: scrollSeek property is deprecated. Pass scrollSeekConfiguration and specify the placeholder in components.ScrollSeekPlaceholder instead.\"),e.publish(o.components,H({},e.getValue(o.components),{ScrollSeekPlaceholder:r})),e.publish(n.scrollSeekConfiguration,i)}),i(r.ItemContainer,\"Item\",\"ItemContainer\"),i(r.ListContainer,\"List\",\"ListContainer\"),i(r.ScrollContainer,\"Scroller\",\"ScrollContainer\"),H({},n,o,r)},e.tup(We,je)),Ye=T.memo(function(){var t=Xe(\"gridState\"),e=Xe(\"listClassName\"),n=Xe(\"itemClassName\"),o=Xe(\"itemContent\"),r=Xe(\"computeItemKey\"),i=Xe(\"isSeeking\"),a=Qe(\"scrollHeight\"),l=Xe(\"ItemComponent\"),s=Xe(\"ListComponent\"),u=Xe(\"ScrollSeekPlaceholder\"),c=Xe(\"context\"),m=Qe(\"itemDimensions\"),d=V(function(t){a(t.parentElement.parentElement.scrollHeight);var e=t.firstChild;e&&m(e.getBoundingClientRect())});return E(s,H({ref:d,className:e},ve(s,c),{style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom}}),t.items.map(function(e){var a=r(e.index);return i?E(u,H({key:a},ve(u,c),{index:e.index,height:t.itemHeight,width:t.itemWidth})):E(l,H({},ve(l,c),{className:n,\"data-index\":e.index,key:a}),o(e.index,c))}))}),Ze=function(t){var e=t.children,n=Qe(\"viewportDimensions\"),o=V(function(t){n(t.getBoundingClientRect())});return T.createElement(\"div\",{style:he,ref:o},e)},qe=function(t){var e=t.children,n=ne(Qe(\"windowViewportRect\"),Xe(\"customScrollParent\"));return T.createElement(\"div\",{ref:n,style:he},e)},Je=t(Ke,{optional:{totalCount:\"totalCount\",overscan:\"overscan\",itemContent:\"itemContent\",components:\"components\",computeItemKey:\"computeItemKey\",initialItemCount:\"initialItemCount\",scrollSeekConfiguration:\"scrollSeekConfiguration\",listClassName:\"listClassName\",itemClassName:\"itemClassName\",useWindowScroll:\"useWindowScroll\",customScrollParent:\"customScrollParent\",scrollerRef:\"scrollerRef\",item:\"item\",ItemContainer:\"ItemContainer\",ScrollContainer:\"ScrollContainer\",ListContainer:\"ListContainer\",scrollSeek:\"scrollSeek\"},methods:{scrollTo:\"scrollTo\",scrollBy:\"scrollBy\",scrollToIndex:\"scrollToIndex\"},events:{isScrolling:\"isScrolling\",endReached:\"endReached\",startReached:\"startReached\",rangeChanged:\"rangeChanged\",atBottomStateChange:\"atBottomStateChange\",atTopStateChange:\"atTopStateChange\"}},T.memo(function(t){var e=H({},t),n=Xe(\"useWindowScroll\"),o=Xe(\"customScrollParent\"),r=o||n?qe:Ze;return T.createElement(o||n?nn:en,H({},e),T.createElement(r,null,T.createElement(Ye,null)))})),$e=Je.Component,Qe=Je.usePublisher,Xe=Je.useEmitterValue,tn=Je.useEmitter,en=Ce({usePublisher:Qe,useEmitterValue:Xe,useEmitter:tn}),nn=Te({usePublisher:Qe,useEmitterValue:Xe,useEmitter:tn}),on=r(function(){var t=p(function(t){return T.createElement(\"td\",null,\"Item $\",t)}),e=p(null),n=p(null),o=p({}),r=p(ae),i=p(h),a=function(t,e){return void 0===e&&(e=null),S(l(o,s(function(e){return e[t]}),f()),e)};return{context:e,itemContent:t,fixedHeaderContent:n,components:o,computeItemKey:r,scrollerRef:i,TableComponent:a(\"Table\",\"table\"),TableHeadComponent:a(\"TableHead\",\"thead\"),TableBodyComponent:a(\"TableBody\",\"tbody\"),TableRowComponent:a(\"TableRow\",\"tr\"),ScrollerComponent:a(\"Scroller\",\"div\"),EmptyPlaceholder:a(\"EmptyPlaceholder\"),ScrollSeekPlaceholder:a(\"ScrollSeekPlaceholder\"),FillerRow:a(\"FillerRow\")}}),rn=r(function(t){return H({},t[0],t[1])},o(te,on)),an=function(t){return T.createElement(\"tr\",null,T.createElement(\"td\",{style:{height:t.height}}))},ln=function(t){return T.createElement(\"tr\",null,T.createElement(\"td\",{style:{height:t.height,padding:0,border:0}}))},sn=T.memo(function(){var t=pn(\"listState\"),e=fn(\"sizeRanges\"),n=pn(\"useWindowScroll\"),o=pn(\"customScrollParent\"),r=fn(\"windowScrollContainerState\"),i=fn(\"scrollContainerState\"),a=o||n?r:i,l=pn(\"itemContent\"),s=pn(\"trackItemSizes\"),u=U(e,pn(\"itemSize\"),s,a,pn(\"log\"),o),c=u.callbackRef,m=u.ref,d=T.useState(0),f=d[0],p=d[1];hn(\"deviation\",function(t){f!==t&&(m.current.style.marginTop=t+\"px\",p(t))});var h=pn(\"EmptyPlaceholder\"),g=pn(\"ScrollSeekPlaceholder\")||an,v=pn(\"FillerRow\")||ln,S=pn(\"TableBodyComponent\"),I=pn(\"TableRowComponent\"),C=pn(\"computeItemKey\"),w=pn(\"isSeeking\"),x=pn(\"paddingTopAddition\"),y=pn(\"firstItemIndex\"),b=pn(\"statefulTotalCount\"),R=pn(\"context\");if(0===b&&h)return E(h,ve(h,R));var L=t.offsetTop+x+f,k=t.offsetBottom,z=L>0?T.createElement(v,{height:L,key:\"padding-top\"}):null,B=k>0?T.createElement(v,{height:k,key:\"padding-bottom\"}):null,F=t.items.map(function(t){var e=t.originalIndex,n=C(e+y,t.data,R);return w?E(g,H({},ve(g,R),{key:n,index:t.index,height:t.size,type:t.type||\"item\"})):E(I,H({},ve(I,R),{key:n,\"data-index\":e,\"data-known-size\":t.size,\"data-item-index\":t.index,style:{overflowAnchor:\"none\"}}),l(t.index,t.data,R))});return E(S,H({ref:c,\"data-test-id\":\"virtuoso-item-list\"},ve(S,R)),[z].concat(F,[B]))}),un=function(t){var e=t.children,n=fn(\"viewportHeight\"),o=V(C(n,function(t){return A(t,\"height\")}));return T.createElement(\"div\",{style:he,ref:o,\"data-viewport-type\":\"element\"},e)},cn=function(t){var e=t.children,n=ne(fn(\"windowViewportRect\"),pn(\"customScrollParent\"));return T.createElement(\"div\",{ref:n,style:he,\"data-viewport-type\":\"window\"},e)},mn=t(rn,{required:{},optional:{context:\"context\",followOutput:\"followOutput\",firstItemIndex:\"firstItemIndex\",itemContent:\"itemContent\",fixedHeaderContent:\"fixedHeaderContent\",overscan:\"overscan\",increaseViewportBy:\"increaseViewportBy\",totalCount:\"totalCount\",topItemCount:\"topItemCount\",initialTopMostItemIndex:\"initialTopMostItemIndex\",components:\"components\",groupCounts:\"groupCounts\",atBottomThreshold:\"atBottomThreshold\",atTopThreshold:\"atTopThreshold\",computeItemKey:\"computeItemKey\",defaultItemHeight:\"defaultItemHeight\",fixedItemHeight:\"fixedItemHeight\",itemSize:\"itemSize\",scrollSeekConfiguration:\"scrollSeekConfiguration\",data:\"data\",initialItemCount:\"initialItemCount\",initialScrollTop:\"initialScrollTop\",alignToBottom:\"alignToBottom\",useWindowScroll:\"useWindowScroll\",customScrollParent:\"customScrollParent\",scrollerRef:\"scrollerRef\",logLevel:\"logLevel\",react18ConcurrentRendering:\"react18ConcurrentRendering\"},methods:{scrollToIndex:\"scrollToIndex\",scrollIntoView:\"scrollIntoView\",scrollTo:\"scrollTo\",scrollBy:\"scrollBy\"},events:{isScrolling:\"isScrolling\",endReached:\"endReached\",startReached:\"startReached\",rangeChanged:\"rangeChanged\",atBottomStateChange:\"atBottomStateChange\",atTopStateChange:\"atTopStateChange\",totalListHeightChanged:\"totalListHeightChanged\",itemsRendered:\"itemsRendered\",groupIndices:\"groupIndices\"}},T.memo(function(t){var e=pn(\"useWindowScroll\"),n=pn(\"customScrollParent\"),o=fn(\"fixedHeaderHeight\"),r=pn(\"fixedHeaderContent\"),i=pn(\"context\"),a=V(C(o,function(t){return A(t,\"height\")})),l=n||e?vn:gn,s=n||e?cn:un,u=pn(\"TableComponent\"),c=pn(\"TableHeadComponent\"),m=r?T.createElement(c,H({key:\"TableHead\",style:{zIndex:1,position:\"sticky\",top:0},ref:a},ve(c,i)),r()):null;return T.createElement(l,H({},t),T.createElement(s,null,T.createElement(u,H({style:{borderSpacing:0}},ve(u,i)),[m,T.createElement(sn,{key:\"TableBody\"})])))})),dn=mn.Component,fn=mn.usePublisher,pn=mn.useEmitterValue,hn=mn.useEmitter,gn=Ce({usePublisher:fn,useEmitterValue:pn,useEmitter:hn}),vn=Te({usePublisher:fn,useEmitterValue:pn,useEmitter:hn}),Sn=Ee,In=Ee,Cn=dn,Tn=$e;export{In as GroupedVirtuoso,B as LogLevel,Cn as TableVirtuoso,Sn as Virtuoso,Tn as VirtuosoGrid};\n//# sourceMappingURL=index.m.js.map\n","import React, { useState, useEffect } from 'react';\nimport isSearchResultSame from \"helpers/isSearchResultSame\";\nimport core from 'core';\n\n\nconst RedactionPanelContext = React.createContext();\n\nconst RedactionPanelProvider = ({ children }) => {\n  const [selectedRedactionItemId, setSelectedRedactionItemId] = useState(null);\n  const [isRedactionSearchActive, setIsRedactionSearchActive] = useState(false);\n  const [activeSearchResultIndex, setActiveSearchResultIndex] = useState(-1);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      if (action === 'selected') {\n        const redactionAnnotations = annotations.filter(annotation => annotation.Subject === 'Redact');\n        // If multiple ones selected, we only use the first one\n        const selectedAnnotationId = redactionAnnotations.length > 0 ? redactionAnnotations[0].Id : null;\n        setSelectedRedactionItemId(selectedAnnotationId);\n      } else {\n        setSelectedRedactionItemId(null);\n      }\n    };\n\n    const activeSearchResultChanged = (newActiveSearchResult) => {\n      const coreSearchResults = core.getPageSearchResults() || [];\n      const newActiveSearchResultIndex = coreSearchResults.findIndex(searchResult => {\n        return isSearchResultSame(searchResult, newActiveSearchResult);\n      });\n      setActiveSearchResultIndex(newActiveSearchResultIndex);\n    }\n\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    core.addEventListener('activeSearchResultChanged', activeSearchResultChanged);\n\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n      core.removeEventListener('activeSearchResultChanged', activeSearchResultChanged);\n    };\n  }, []);\n\n  const value = {\n    selectedRedactionItemId,\n    setSelectedRedactionItemId,\n    isRedactionSearchActive,\n    setIsRedactionSearchActive,\n    activeSearchResultIndex\n  };\n\n  return <RedactionPanelContext.Provider value={value}>{children}</RedactionPanelContext.Provider>;\n};\n\nexport { RedactionPanelProvider, RedactionPanelContext };\n\n","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport NoteTextPreview from '../NoteTextPreview/NoteTextPreview';\n\nconst RedactionTextPreviewContainer = (props) => {\n\n  const [redactionPanelWidth] = useSelector(\n    state => [\n      selectors.getRedactionPanelWidth(state),\n    ],\n    shallowEqual,\n  );\n\n  return (\n    <NoteTextPreview {...props} panelWidth={redactionPanelWidth} comment />\n  );\n};\n\nexport default RedactionTextPreviewContainer","import RedactionTextPreview from './RedactionTextPreviewContainer';\n\nexport default RedactionTextPreview;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'src/components/Icon';\nimport getLatestActivityDate from \"helpers/getLatestActivityDate\";\nimport dayjs from 'dayjs';\nimport Button from 'components/Button';\nimport './RedactionItem.scss';\nimport RedactionTextPreview from 'components/RedactionTextPreview';\nimport classNames from 'classnames';\nimport { redactionTypeMap } from 'constants/redactionTypes';\n\nconst RedactionItem = (props) => {\n  const {\n    iconColor,\n    annotation,\n    author,\n    dateFormat,\n    language,\n    onRedactionItemDelete,\n    onRedactionItemSelection,\n    textPreview,\n    isSelected,\n  } = props;\n  const { t } = useTranslation();\n\n  const date = getLatestActivityDate(annotation);\n  const formattedDate = date ? dayjs(date).locale(language).format(dateFormat) : t('option.notesPanel.noteContent.noDate');\n  const dateAndAuthor = `${author} - ${formattedDate}`;\n  const className = classNames('redaction-item', { 'redaction-item-selected': isSelected });\n  const {\n    label,\n    icon = 'icon-form-field-text',// Default icon if none provided\n    redactionType\n  } = annotation;\n\n  let redactionPreview;\n\n  if (redactionType === redactionTypeMap['TEXT']) {\n    redactionPreview = (\n      <RedactionTextPreview linesToBreak={2}>\n        {textPreview}\n      </RedactionTextPreview>)\n  } else if (\n    redactionType === redactionTypeMap['FULL_PAGE'] \n    || redactionType === redactionTypeMap['FULL_VIDEO_FRAME']\n    || redactionType === redactionTypeMap['REGION']\n    || redactionType === redactionTypeMap['AUDIO_REDACTION']\n    || redactionType === redactionTypeMap['FULL_VIDEO_FRAME_AND_AUDIO']\n  ) {\n    redactionPreview = t(label);\n  } else {\n    redactionPreview = annotation.getContents();\n  }\n\n  const onKeyUp = (event) => {\n    if (event.key === 'Enter') {\n      onRedactionItemSelection();\n    }\n  }\n\n  return (\n    <div role=\"listitem\" className={className} onClick={onRedactionItemSelection} onKeyUp={onKeyUp} tabIndex={0}>\n      <div className='redaction-icon-container'>\n        <Icon glyph={icon} color={iconColor} />\n      </div>\n      <div className=\"redaction-item-info\">\n        <div className=\"redaction-item-preview\">\n          {redactionPreview}\n        </div>\n        <div className='redaction-item-date-author'>\n          {dateAndAuthor}\n        </div>\n      </div>\n      <Button\n        style={{ marginLeft: 'auto' }}\n        img={\"icon-close\"}\n        onClick={onRedactionItemDelete}\n        ariaLabel={t('action.delete')}\n      />\n    </div>\n  )\n};\n\nexport default React.memo(RedactionItem);","import React, { useCallback, useContext } from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport RedactionItem from './RedactionItem';\nimport core from 'core';\nimport { RedactionPanelContext } from '../../RedactionPanel/RedactionPanelContext';\n\nconst RedactionItemContainer = (props) => {\n  const { annotation } = props;\n\n  const { selectedRedactionItemId, setSelectedRedactionItemId } = useContext(RedactionPanelContext);\n\n  const [\n    dateFormat,\n    language,\n    customNoteSelectionFunction,\n  ] = useSelector(\n    state => [\n      selectors.getNoteDateFormat(state),\n      selectors.getCurrentLanguage(state),\n      selectors.getCustomNoteSelectionFunction(state),\n    ],\n    shallowEqual,\n  );\n\n  const textPreview = annotation.getCustomData('trn-annot-preview');\n  const iconColor = annotation.StrokeColor.toString();\n  const author = core.getDisplayAuthor(annotation['Author']);\n\n  const onRedactionItemSelection = useCallback(() => {\n    customNoteSelectionFunction && customNoteSelectionFunction(annotation);\n    core.deselectAllAnnotations();\n    core.selectAnnotation(annotation);\n    core.jumpToAnnotation(annotation);\n    setSelectedRedactionItemId(annotation.Id);\n  }, [annotation]);\n\n  const onRedactionItemDelete = useCallback(() => {\n    core.deleteAnnotations([annotation])\n  }, [annotation]);\n\n  return (\n    <RedactionItem\n      dateFormat={dateFormat}\n      language={language}\n      author={author}\n      annotation={annotation}\n      iconColor={iconColor}\n      textPreview={textPreview}\n      onRedactionItemDelete={onRedactionItemDelete}\n      onRedactionItemSelection={onRedactionItemSelection}\n      isSelected={selectedRedactionItemId === annotation.Id}\n    />\n  );\n};\n\nexport default RedactionItemContainer;","import RedactionItem from './RedactionItemContainer';\n\nexport default RedactionItem;","import React, { useState } from 'react';\nimport Button from 'components/Button';\nimport { useTranslation } from 'react-i18next';\nimport './CollapsiblePanelGroup.scss'\n\nconst CollapsiblePanelGroup = (props) => {\n  const {\n    header,\n    children,\n    className,\n    role,\n    style,\n  } = props;\n\n  const [isExpanded, setIsExpanded] = useState(true);\n  const { t } = useTranslation();\n\n  return (\n    <div className={className} role={role} style={style}>\n      <div className=\"collapsible-page-group-header\">\n        {header()}\n        <Button\n          title={isExpanded ? t('redactionPanel.collapse') : t('redactionPanel.expand')}\n          img={isExpanded ? \"icon-chevron-up\" : \"icon-chevron-down\"}\n          className=\"expand-arrow\"\n          onClick={() => setIsExpanded(!isExpanded)}\n        />\n      </div>\n      {isExpanded && children}\n    </div>\n  )\n};\n\nexport default CollapsiblePanelGroup;","import CollapsiblePanelGroup from './CollapsiblePanelGroup';\n\nexport default CollapsiblePanelGroup;","import React from 'react';\nimport RedactionItem from './RedactionItem';\nimport CollapsiblePanelGroup from 'components/CollapsiblePanelGroup';\nimport { useTranslation } from 'react-i18next';\n\nimport './RedactionPageGroup.scss'\nconst RedactionPageGroup = (props) => {\n  const {\n    pageNumber,\n    redactionItems,\n  } = props;\n\n  const { t } = useTranslation();\n\n  const header = () => {\n    return (\n      <div className=\"redaction-page-group-number\">\n        {t('option.shared.page')} {pageNumber}\n      </div>\n    );\n  };\n\n  return (\n    <CollapsiblePanelGroup\n      className=\"redaction-page-group\"\n      header={header}>\n      <div role=\"list\" className=\"redaction-items\">\n        {redactionItems.map(redactionItem => (\n          <RedactionItem\n            annotation={redactionItem}\n            key={`${redactionItem.Id}-${pageNumber}`}\n          />\n        ))}\n      </div>\n    </CollapsiblePanelGroup>\n  )\n};\n\nexport default RedactionPageGroup;","import React from 'react';\nimport RedactionPageGroup from './RedactionPageGroup';\nimport { getSortStrategies } from 'constants/sortStrategies';\n\nconst RedactionPageGroupContainer = (props) => {\n\n  // Putting this in the container in case we want to allow users to change sort strategies\n  // which are stored in the application state\n  const { redactionItems } = props;\n  // Sorting strategies can be applied to any list of annotations\n  const sortedRedactionItems = getSortStrategies()['position'].getSortedNotes(redactionItems);\n  return (\n    <RedactionPageGroup\n      redactionItems={sortedRedactionItems}\n      {...props} />\n  )\n};\n\nexport default RedactionPageGroupContainer;","import RedactionPageGroup from './RedactionPageGroupContainer';\n\nexport default RedactionPageGroup;","import React, { useEffect, useState, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon'\nimport { Virtuoso } from 'react-virtuoso';\nimport { RedactionPanelContext } from './RedactionPanelContext';\nimport { mapAnnotationToRedactionType } from 'constants/redactionTypes';\n\nimport './RedactionPanel.scss'\nimport RedactionPageGroup from '../RedactionPageGroup';\n\nconst RedactionPanel = (props) => {\n  const {\n    redactionAnnotations,\n    applyAllRedactions,\n    deleteAllRedactionAnnotations,\n    redactionTypesDictionary,\n  } = props;\n\n  const { t } = useTranslation();\n  const [redactionPageMap, setRedactionPageMap] = useState({});\n  const [redactionPageNumbers, setRedactionPageNumbers] = useState([]);\n  // The following prop is needed only for the tests to actually render a list of results\n  // it only is ever injected in the tests\n  const { isTestMode } = useContext(RedactionPanelContext);\n\n  useEffect(() => {\n    const redactionPageMap = {};\n    redactionAnnotations.forEach(annotation => {\n      const redactionType = mapAnnotationToRedactionType(annotation);\n      const { label, icon } = redactionTypesDictionary[redactionType];\n      annotation.label = label;\n      annotation.icon = icon;\n      annotation.redactionType = redactionType;\n\n      const pageNumber = annotation.PageNumber;\n      if (redactionPageMap[pageNumber] === undefined) {\n        redactionPageMap[pageNumber] = [annotation];\n      } else {\n        redactionPageMap[pageNumber] = [annotation, ...redactionPageMap[pageNumber]];\n      }\n    });\n\n    setRedactionPageMap(redactionPageMap)\n    setRedactionPageNumbers(Object.keys(redactionPageMap));\n\n  }, [redactionAnnotations]);\n\n  const renderRedactionPageGroups = () => {\n    // Needed for the tests to actually render a list of results\n    // Not needed for the actual app; if we set it it kills performance when there are a lot of annotations\n    const testModeProps = isTestMode ? { initialItemCount: redactionPageNumbers.length } : {}\n    return (\n      <div className=\"redaction-group-container\" role=\"list\">\n        <Virtuoso\n          data={redactionPageNumbers}\n          itemContent={(index, pageNumber) => {\n            return (\n              <RedactionPageGroup\n                key={index}\n                pageNumber={pageNumber}\n                redactionItems={redactionPageMap[pageNumber]}\n              />)\n          }}\n          {...testModeProps}\n        />\n      </div>\n    );\n  };\n\n  const noRedactionAnnotations = (\n    <div className=\"no-marked-redactions\">\n      <div>\n        <Icon className=\"empty-icon\" glyph=\"icon-no-marked-redactions\" />\n      </div>\n      <div className=\"msg\">{t('redactionPanel.noMarkedRedactions')}</div>\n    </div>\n  );\n\n  const redactAllButtonClassName = classNames('redact-all-marked', { disabled: redactionAnnotations.length === 0 });\n  const clearAllButtonClassName = classNames('clear-all-marked', { disabled: redactionAnnotations.length === 0 });\n\n  return (\n    <>\n      <div className=\"marked-redaction-counter\">\n        <span>{t('redactionPanel.redactionCounter')}</span> {`(${redactionAnnotations.length})`}\n      </div>\n      {redactionPageNumbers.length > 0 ? renderRedactionPageGroups() : noRedactionAnnotations}\n      <div className=\"redaction-panel-controls\">\n        <button\n          disabled={redactionAnnotations.length === 0}\n          className={clearAllButtonClassName}\n          onClick={deleteAllRedactionAnnotations}\n          aria-label={t('redactionPanel.clearMarked')}>\n          {t('redactionPanel.clearMarked')}\n        </button>\n        <button\n          disabled={redactionAnnotations.length === 0}\n          className={redactAllButtonClassName}\n          onClick={applyAllRedactions}\n          aria-label={t('redactionPanel.redactAllMarked')}>\n          {t('redactionPanel.redactAllMarked')}\n        </button>\n      </div>\n    </>\n  );\n};\n\nexport default RedactionPanel;","import useOnRedactionAnnotationChanged from './useOnRedactionAnnotationChanged';\n\nexport default useOnRedactionAnnotationChanged;","import { useState, useEffect } from 'react'\nimport { useDispatch, useSelector } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport useMedia from 'hooks/useMedia';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport core from 'core';\n\nexport default function useOnRedactionAnnotationChanged() {\n  const [redactionAnnotationsList, setRedactionAnnotationsList] = useState([]);\n  const dispatch = useDispatch();\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const [\n    isNotesPanelOpen,\n    isSearchPanelOpen,\n  ] = useSelector(\n    state => [\n      selectors.isElementOpen(state, 'notesPanel'),\n      selectors.isElementOpen(state, 'searchPanel'),\n    ]\n  );\n\n  useEffect(() => {\n    const setRedactionAnnotations = () => {\n      const redactionAnnotations = core.getAnnotationsList().filter((annotation) => annotation instanceof window.Annotations.RedactionAnnotation);\n      const mediaAnnotationTypes = [\n        redactionTypeMap['FULL_VIDEO_FRAME'],\n        redactionTypeMap['FULL_VIDEO_FRAME_AND_AUDIO'],\n        redactionTypeMap['AUDIO_REDACTION'],\n      ];\n\n      setRedactionAnnotationsList(redactionAnnotations);\n\n      const nonMediaRedactionAnnotations = redactionAnnotations.filter((annotation) => !mediaAnnotationTypes.includes(annotation.redactionType));\n\n      if (nonMediaRedactionAnnotations.length > 0 && !isMobile) {\n        // Initially the state will be undefined, so we cast to boolean and negate it\n        const isNotesPanelClosed = !Boolean(isNotesPanelOpen);\n        const isSearchPanelClosed = !Boolean(isSearchPanelOpen);\n\n        if (isNotesPanelClosed && isSearchPanelClosed) {\n          dispatch(actions.openElement('redactionPanel'));\n        }\n      };\n    };\n\n    const onDocumentLoaded = () => {\n      setRedactionAnnotationsList([]);\n    };\n\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('annotationChanged', setRedactionAnnotations);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('annotationChanged', setRedactionAnnotations);\n    };\n  }, [isNotesPanelOpen, isSearchPanelOpen]);\n\n  return redactionAnnotationsList;\n}","import React from 'react';\nimport CreatableSelect from 'react-select/creatable';\n\nconst CreatableMultiSelect = (props) => {\n  return (\n    <CreatableSelect\n      isMulti\n      {...props}\n    />\n  );\n};\n\nexport default CreatableMultiSelect;","import CreatableMultiSelect from \"./CreatableMultiSelect\";\n\nexport default CreatableMultiSelect;","import React from 'react';\nimport { components } from 'react-select';\nimport Icon from 'components/Icon';\nimport CreatableMultiSelect from 'components/CreatableMultiSelect';\nimport { useTranslation } from 'react-i18next';\n\nconst getStyles = isDarkMode => ({\n  groupHeading: base => ({\n    ...base,\n    textTransform: 'none',\n    fontSize: '10px',\n    color: isDarkMode ? '#FFFFFF' : '#485056',\n    paddingBottom: '8px',\n    paddingLeft: '8px',\n    paddingTop: '10px',\n  }),\n  group: base => ({\n    ...base,\n    padding: '0px',\n  }),\n  menu: base => ({\n    ...base,\n    padding: '0px 0px 0px 0px',\n  }),\n  menuList: base => ({\n    ...base,\n    padding: '0px',\n    backgroundColor: isDarkMode ? '#000000' : '#FFFFFF',\n  }),\n  multiValue: base => ({\n    ...base,\n    backgroundColor: isDarkMode ? '#192530' : '#E7EDF3',\n\n    padding: '2px 8px',\n    fontSize: '13px',\n    borderRadius: '4px',\n  }),\n  option: (base, state) => ({\n    ...base,\n    height: '28px',\n    display: 'flex',\n    fontSize: '13px',\n    padding: '6px 8px',\n    '&:hover': {\n      backgroundColor: isDarkMode ? '#192530' : '#E7EDF3',\n    },\n    backgroundColor: state.isFocused ? (isDarkMode ? '#192530' : '#E7EDF3') : 'transparent',\n  }),\n  valueContainer: base => ({\n    ...base,\n    padding: '1px',\n    maxHeight: '70px',\n    overflowY: 'scroll',\n  }),\n  control: base => ({\n    ...base,\n    backgroundColor: isDarkMode ? '#21242A' : '#FFFFFF',\n    minHeight: '29px',\n    borderColor: isDarkMode ? '#485056' : '#CFD4DA',\n    '&:hover': {\n      borderColor: isDarkMode ? '#485056' : '#CFD4DA',\n    },\n  }),\n  placeholder: base => ({\n    ...base,\n    fontSize: '13px',\n    color: isDarkMode ? '#868E96' : '#ADB5BD',\n    paddingLeft: '4px',\n  }),\n  input: base => ({\n    ...base,\n    fontSize: '13px',\n    color: isDarkMode ? '#FFFFFF' : '#485056',\n    paddingLeft: '3px',\n  }),\n});\n\nconst RedactionOption = props => {\n  const { data } = props;\n  const { t } = useTranslation();\n  return (\n    <components.Option {...props}>\n      {data.icon && <Icon glyph={data.icon} />}\n      {t(data.label)}\n    </components.Option>\n  );\n};\n\nconst MultiValueLabel = ({ data }) => {\n  const { t } = useTranslation();\n\n  return (\n    <div style={{ display: 'flex', height: '18px' }}>\n      {data.icon && <Icon glyph={data.icon} />}\n      {t(data.label)}\n    </div>\n  );\n};\n\nconst RedactionSearchMultiSelect = props => {\n  const { t } = useTranslation();\n  const { activeTheme, redactionSearchOptions } = props;\n\n  const redactionGroup = [\n    {\n      label: t('redactionPanel.search.pattern'),\n      options: redactionSearchOptions,\n    },\n  ];\n\n  const isDarkMode = activeTheme === 'dark';\n  const styles = getStyles(isDarkMode);\n\n  return (\n    <CreatableMultiSelect\n      options={redactionGroup}\n      styles={styles}\n      components={{ Option: RedactionOption, MultiValueLabel, IndicatorsContainer: () => null }}\n      placeholder={t('redactionPanel.redactionSearchPlaceholder')}\n      formatCreateLabel={value => `${t('component.searchPanel')} ${value}`}\n      {...props}\n    />\n  );\n};\n\nexport default RedactionSearchMultiSelect;\n","import RedactionSearchMultiSelect from \"./RedactionSearchMultiSelect\";\n\nexport default RedactionSearchMultiSelect;","import React from 'react';\nimport DataElementWrapper from '../DataElementWrapper';\nimport RedactionSearchMultiSelect from './RedactionSearchMultiSelect';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport './RedactionSearchOverlay.scss';\n\nconst buildSearchOptions = (searchTerms) => {\n  const options = {\n    textSearch: [],\n  };\n\n  if (!searchTerms) {\n    return options;\n  }\n\n  searchTerms.forEach(searchTerm => {\n    const { type } = searchTerm;\n    if (type === redactionTypeMap['TEXT']) {\n      options.textSearch.push(searchTerm.label);\n    } else {\n      options[type] = true;\n    }\n  });\n\n  return options;\n}\n\nconst RedactionSearchOverlay = (props) => {\n  const {\n    setIsRedactionSearchActive,\n    searchTerms,\n    setSearchTerms,\n    executeRedactionSearch,\n    activeTheme,\n    redactionSearchOptions,\n  } = props;\n\n  const handleChange = (\n    updatedSearchTerms,\n  ) => {\n    setSearchTerms(updatedSearchTerms);\n    const options = buildSearchOptions(updatedSearchTerms);\n    executeRedactionSearch(options);\n  };\n\n  const handleCreate = (newValue) => {\n    const textTerm = {\n      label: newValue,\n      value: newValue,\n      type: redactionTypeMap['TEXT']\n    }\n    //Initially search terms are null so we safeguard against this\n    const nonNullSearchTerms = searchTerms ? searchTerms : [];\n    const updatedSearchTerms = [...nonNullSearchTerms, textTerm];\n    setSearchTerms(updatedSearchTerms);\n    const options = buildSearchOptions(updatedSearchTerms);\n    executeRedactionSearch(options);\n  };\n\n  const textInputOnKeyUp = (event) => {\n    if (event.key === 'Enter') {\n      const options = buildSearchOptions(searchTerms);\n      executeRedactionSearch(options);\n    }\n  }\n  return (\n    <DataElementWrapper\n      className=\"RedactionSearchOverlay\"\n      dataElement=\"redactionSearchOverlay\"\n      onKeyUp={textInputOnKeyUp}\n    >\n      <RedactionSearchMultiSelect\n        onFocus={() => setIsRedactionSearchActive(true)}\n        value={searchTerms}\n        onCreateOption={handleCreate}\n        onChange={handleChange}\n        activeTheme={activeTheme}\n        redactionSearchOptions={redactionSearchOptions}\n      />\n\n    </DataElementWrapper>\n\n  )\n};\n\nexport default RedactionSearchOverlay;","import searchTextFullFactory from '../apis/searchTextFull';\nimport selectors from 'selectors';\nimport core from 'core';\n\n\nfunction multiSearch(store) {\n  return function multiSearch(searchTerms) {\n    const { getState } = store;\n    const state = getState();\n    const redactionSearchPatterns = selectors.getRedactionSearchPatterns(state);\n    // collect all regexes into an array\n    const searchOptionsMap = Object.keys(redactionSearchPatterns).reduce((map, key) => {\n      const { regex, type } = redactionSearchPatterns[key];\n      map[type] = regex;\n      return map;\n    }, {});\n\n\n    const options = {\n      regex: true,\n    };\n\n    const { textSearch } = searchTerms;\n    const searchArray = [...textSearch];\n\n    // Now we can map type to regex\n    Object.keys(searchTerms).forEach(searchType => {\n      const searchRegex = searchOptionsMap[searchType];\n      if (searchRegex) {\n        searchArray.push(searchRegex.source);\n      }\n    });\n\n    const searchString = searchArray.join('|');\n\n    // If search string is empty we return and clear searches or we send the search logic\n    // into an infinte loop\n    if (searchString === '') {\n      core.clearSearchResults();\n      return;\n    }\n\n    const searchTextFull = searchTextFullFactory();\n    searchTextFull(searchString, options);\n  };\n}\n\nexport default multiSearch;","import React, { useContext } from 'react';\nimport { useStore, useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\n\nimport RedactionSearchOverlay from './RedactionSearchOverlay';\nimport { RedactionPanelContext } from '../RedactionPanel/RedactionPanelContext';\nimport multiSearchFactory from '../../helpers/multiSearch';\n\n\nfunction executeRedactionSearch(options, store) {\n  const multiSearch = multiSearchFactory(store);\n  multiSearch(options);\n}\n\nconst RedactionSearchOverlayContainer = (props) => {\n\n  const { setIsRedactionSearchActive } = useContext(RedactionPanelContext);\n  const store = useStore();\n  const activeTheme = useSelector(state => selectors.getActiveTheme(state));\n  const redactionSearchPatterns = useSelector(state => selectors.getRedactionSearchPatterns(state), shallowEqual);\n  const redactionSearchOptions = Object.values(redactionSearchPatterns).map(pattern => ({\n    ...pattern,\n    value: pattern.type,\n  }));\n\n  return (\n    <RedactionSearchOverlay\n      setIsRedactionSearchActive={setIsRedactionSearchActive}\n      executeRedactionSearch={(options = {}) => executeRedactionSearch(options, store)}\n      activeTheme={activeTheme}\n      redactionSearchOptions={redactionSearchOptions}\n      {...props}\n    />);\n};\n\nexport default RedactionSearchOverlayContainer;","import RedactionSearchOverlay from './RedactionSearchOverlayContainer';\n\nexport default RedactionSearchOverlay;","import React from 'react';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport Icon from 'components/Icon'\nimport './RedactionSearchResult.scss'\nimport classNames from 'classnames';\nimport { redactionTypeMap } from 'constants/redactionTypes';\n\n// Alternatively wrap this in useCallback and declare inside component\nconst displayRedactionSearchResult = (props) => {\n  const { ambientStr, resultStrStart, resultStrEnd, resultStr, type } = props;\n  if (type === redactionTypeMap['TEXT']) {\n    const searchValue = ambientStr === '' ? resultStr : ambientStr.slice(resultStrStart, resultStrEnd);\n    const textBeforeSearchValue = ambientStr.slice(0, resultStrStart);\n    const textAfterSearchValue = ambientStr.slice(resultStrEnd);\n    return (\n      <>\n        {textBeforeSearchValue}\n        <span className=\"search-value\">{searchValue}</span>\n        {textAfterSearchValue}\n      </>\n    );\n  } else {\n    return resultStr;\n  };\n};\n\nconst RedactionSearchResult = (props) => {\n  const {\n    isChecked,\n    onChange,\n    onClickResult,\n    isActive,\n    icon,\n  } = props;\n\n  const displayResult = displayRedactionSearchResult(props);\n  const searchResultClassname = classNames('redaction-search-result', { active: isActive });\n\n  return (\n    <div className={searchResultClassname} role=\"listitem\" onClick={onClickResult}>\n      <div style={{ paddingRight: '14px' }}>\n        <Choice\n          checked={isChecked}\n          onChange={onChange}\n        />\n      </div>\n      <div style={{ paddingRight: '14px' }}>\n        <Icon glyph={icon} />\n      </div>\n      <div className=\"redaction-search-result-info\">\n        {displayResult}\n      </div>\n    </div >\n  )\n};\n\nexport default React.memo(RedactionSearchResult);","import RedactionSearchResult from './RedactionSearchResultContainer';\n\nexport default RedactionSearchResult;","import React, { useCallback, useContext, useMemo } from 'react';\nimport RedactionSearchResult from './RedactionSearchResult';\nimport { RedactionPanelContext } from 'components/RedactionPanel/RedactionPanelContext';\nimport core from 'core';\nconst RedactionSearchResultContainer = (props) => {\n  const {\n    searchResult,\n    checked,\n    checkResult,\n  } = props;\n\n  const { activeSearchResultIndex } = useContext(RedactionPanelContext);\n\n  const { ambientStr, resultStrStart, resultStrEnd, resultStr, icon, index, type } = searchResult;\n\n  const onChange = useCallback((event) => {\n    checkResult(event, index)\n  }, [index, checkResult]);\n\n  const onClickResult = useCallback(() => {\n    core.setActiveSearchResult(searchResult);\n  }, [searchResult]);\n\n  return (\n    <RedactionSearchResult\n      ambientStr={ambientStr}\n      resultStrStart={resultStrStart}\n      resultStrEnd={resultStrEnd}\n      resultStr={resultStr}\n      icon={icon}\n      type={type}\n      isChecked={checked}\n      onChange={onChange}\n      onClickResult={onClickResult}\n      isActive={activeSearchResultIndex === index}\n    />\n  );\n};\n\nexport default RedactionSearchResultContainer;","import React, { useCallback, useEffect, useState } from 'react';\nimport RedactionSearchResult from './RedactionSearchResult';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport { useTranslation } from 'react-i18next';\nimport CollapsiblePanelGroup from 'components/CollapsiblePanelGroup';\nimport './RedactionSearchResultGroup.scss';\n\nconst RedactionSearchResultGroup = (props) => {\n  const {\n    pageNumber,\n    searchResults,\n    selectedSearchResultIndexes,\n    setSelectedSearchResultIndexes,\n  } = props;\n\n  const { t } = useTranslation();\n  const groupResultIndexes = searchResults.map(result => result.index);\n  const [allItemsChecked, setAllItemsChecked] = useState(false);\n\n  useEffect(() => {\n    const allResultsSelected = groupResultIndexes.reduce((allSelected, currentIndex) => {\n      return selectedSearchResultIndexes[currentIndex] && allSelected\n    }, true);\n\n    setAllItemsChecked(allResultsSelected);\n  }, [selectedSearchResultIndexes, groupResultIndexes])\n\n  const checkAllResults = useCallback((event) => {\n    const checked = event.target.checked;\n    groupResultIndexes.forEach(resultIndex => {\n      selectedSearchResultIndexes[resultIndex] = checked;\n    });\n    setAllItemsChecked(checked);\n    setSelectedSearchResultIndexes({ ...selectedSearchResultIndexes });\n  }, [selectedSearchResultIndexes, groupResultIndexes]);\n\n  const checkResult = useCallback((event, index) => {\n    const checked = event.target.checked;\n    selectedSearchResultIndexes[index] = checked;\n    setSelectedSearchResultIndexes({ ...selectedSearchResultIndexes })\n  }, [selectedSearchResultIndexes]);\n\n  const header = () => {\n    return (\n      <Choice\n        checked={allItemsChecked}\n        onChange={checkAllResults}\n        label={`${t('option.shared.page')} ${pageNumber}`}\n        className='redaction-search-results-page-number'\n      />\n    )\n  };\n\n  const style = {\n    paddingLeft: '12px',\n    paddingRight: '12px',\n    paddingTop: '8px',\n    paddingBottom: '4px',\n  }\n\n  return (\n    <CollapsiblePanelGroup header={header} role=\"row\" style={style}>\n      <div role=\"list\">\n        {searchResults.map((searchResult, index) => (\n          <RedactionSearchResult\n            checked={selectedSearchResultIndexes[searchResult.index]}\n            checkResult={checkResult}\n            searchResult={searchResult}\n            key={`${index}-${pageNumber}`}\n          />)\n        )}\n      </div>\n    </CollapsiblePanelGroup>\n  )\n};\n\nexport default RedactionSearchResultGroup;","import RedactionSearchResultGroup from \"./RedactionSearchResultGroup\";\n\nexport default RedactionSearchResultGroup;","export default {\n  SEARCH_NOT_INITIATED: 'SEARCH_NOT_INITIATED',\n  SEARCH_IN_PROGRESS: 'SEARCH_IN_PROGRESS',\n  SEARCH_DONE: 'SEARCH_DONE',\n};","import React, { useState, useEffect, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport RedactionSearchResultGroup from 'components/RedactionSearchResultGroup';\nimport Spinner from 'components/Spinner';\nimport './RedactionSearchResults.scss'\nimport classNames from 'classnames';\nimport { Virtuoso } from 'react-virtuoso';\nimport SearchStatus from 'constants/searchStatus';\nimport { RedactionPanelContext } from '../RedactionPanel/RedactionPanelContext';\n\nfunction RedactionSearchResults(props) {\n  const {\n    redactionSearchResults,\n    searchStatus,\n    onCancelSearch,\n    isProcessingRedactionResults,\n    markSelectedResultsForRedaction,\n    redactSelectedResults,\n  } = props;\n\n  const { t } = useTranslation();\n  const [redactionSearchResultPageMap, setRedactionSearchResultPageMap] = useState({});\n  const [selectedSearchResultIndexesMap, setSelectedSearchResultIndexesMap] = useState({});\n  const [selectedIndexes, setSelectedIndexes] = useState([]);\n  // The following prop is needed only for the tests to actually render a list of results\n  // it only is ever injected in the tests\n  const { isTestMode } = useContext(RedactionPanelContext);\n\n\n  useEffect(() => {\n    const redactionSearchResultPageMap = {};\n    redactionSearchResults.forEach((result, index) => {\n      const pageNumber = result.pageNum;\n      result.index = index;\n      if (redactionSearchResultPageMap[pageNumber] === undefined) {\n        redactionSearchResultPageMap[pageNumber] = [result];\n      } else {\n        redactionSearchResultPageMap[pageNumber] = [...redactionSearchResultPageMap[pageNumber], result];\n      }\n    });\n\n    setRedactionSearchResultPageMap(redactionSearchResultPageMap);\n\n    const selectedIndexesMap = {};\n    redactionSearchResults.forEach((value, index) => selectedIndexesMap[index] = false);\n    setSelectedSearchResultIndexesMap(selectedIndexesMap);\n  }, [redactionSearchResults]);\n\n\n  useEffect(() => {\n    const selectedIndexes = redactionSearchResults.filter((redactionSearchResult, index) => {\n      return selectedSearchResultIndexesMap[index];\n    });\n\n    setSelectedIndexes(selectedIndexes);\n\n  }, [selectedSearchResultIndexesMap])\n\n\n  const renderSearchResults = () => {\n    const resultGroupPageNumbers = Object.keys(redactionSearchResultPageMap);\n    if (resultGroupPageNumbers.length > 0) {\n      // Needed for the tests to actually render a list of results\n      const testModeProps = isTestMode ? { initialItemCount: resultGroupPageNumbers.length } : {}\n      return (\n        <Virtuoso\n          data={resultGroupPageNumbers}\n          itemContent={(index, pageNumber) => {\n            return (\n              <RedactionSearchResultGroup\n                key={index}\n                pageNumber={pageNumber}\n                searchResults={redactionSearchResultPageMap[pageNumber]}\n                selectedSearchResultIndexes={selectedSearchResultIndexesMap}\n                setSelectedSearchResultIndexes={setSelectedSearchResultIndexesMap}\n              />)\n          }}\n          {...testModeProps}\n        />);\n    }\n  };\n\n  const renderStartSearch = () => (\n    <div aria-label={t('redactionPanel.search.start')}>\n      {t('redactionPanel.search.start')}\n    </div>\n  );\n\n  const noResults = (\n    <div aria-label={t('message.noResults')}>\n      {t('message.noResults')}\n    </div>\n  );\n\n  const renderSearchInProgress = () => (\n    <div >\n      <Spinner height=\"25px\" width=\"25px\" />\n    </div>\n  );\n\n  const onCancelHandler = () => {\n    setRedactionSearchResultPageMap({});\n    onCancelSearch();\n  };\n\n  const selectAllResults = () => {\n    const searchResultIndexMap = {};\n    redactionSearchResults.forEach((value, index) => searchResultIndexMap[index] = true);\n    setSelectedSearchResultIndexesMap(searchResultIndexMap);\n  };\n\n  const unselectAllResults = () => {\n    const searchResultIndexMap = {};\n    redactionSearchResults.forEach((value, index) => searchResultIndexMap[index] = false);\n    setSelectedSearchResultIndexesMap(searchResultIndexMap);\n  };\n\n  const onMarkAllForRedaction = () => {\n    markSelectedResultsForRedaction(selectedIndexes);\n    onCancelSearch();\n  };\n\n  const onRedactSelectedResults = () => {\n    redactSelectedResults(selectedIndexes);\n  };\n\n  const isEmptyList = redactionSearchResults.length === 0;\n\n  const resultsContainerClass = classNames('redaction-search-results-container', { emptyList: isEmptyList });\n  const redactAllButtonClass = classNames('redact-all-selected', { disabled: selectedIndexes.length === 0 });\n  const markAllForRedactionButtonClass = classNames('mark-all-selected', { disabled: selectedIndexes.length === 0 });\n  const shouldShowResultsCounterOptions = (searchStatus === SearchStatus['SEARCH_DONE'] && !isProcessingRedactionResults) || searchStatus === SearchStatus['SEARCH_NOT_INITIATED'];\n\n  return (\n    <>\n      <div className=\"redaction-search-counter-controls\">\n        {searchStatus === SearchStatus['SEARCH_IN_PROGRESS'] && (\n          <div style={{ flexGrow: 1 }}>\n            <Spinner height=\"18px\" width=\"18px\" />\n          </div>)}\n        {shouldShowResultsCounterOptions && (\n          <>\n            <div className=\"redaction-search-results-counter\">\n              <span>{t('redactionPanel.searchResults')}</span> ({redactionSearchResults.length})\n            </div>\n            <button\n              onClick={selectAllResults}\n              disabled={isEmptyList}\n              aria-label={t('action.selectAll')}>\n              {t('action.selectAll')}\n            </button>\n            <button\n              disabled={isEmptyList}\n              onClick={unselectAllResults}\n              aria-label={t('action.unselect')}>\n              {t('action.unselect')}\n            </button>\n          </>)}\n      </div>\n      <div className={resultsContainerClass} role=\"list\">\n        {searchStatus === SearchStatus['SEARCH_NOT_INITIATED'] && renderStartSearch()}\n        {(searchStatus === SearchStatus['SEARCH_IN_PROGRESS'] && isEmptyList && isProcessingRedactionResults) && renderSearchInProgress()}\n        {searchStatus === SearchStatus['SEARCH_DONE'] && isEmptyList && !isProcessingRedactionResults && noResults}\n        {(searchStatus === SearchStatus['SEARCH_IN_PROGRESS'] || searchStatus === SearchStatus['SEARCH_DONE']) && renderSearchResults()}\n      </div>\n      <div className=\"redaction-search-panel-controls\" >\n        <button\n          onClick={onCancelHandler}\n          aria-label={t('action.cancel')}\n          className='cancel'\n        >\n          {t('action.cancel')}\n        </button>\n        <button\n          disabled={selectedIndexes.length === 0}\n          aria-label={t('annotation.redact')}\n          className={redactAllButtonClass}\n          onClick={onRedactSelectedResults}\n        >\n          {t('annotation.redact')}\n        </button>\n        <button\n          disabled={selectedIndexes.length === 0}\n          aria-label={t('action.addMark')}\n          className={markAllForRedactionButtonClass}\n          onClick={onMarkAllForRedaction}\n        >\n          {t('action.addMark')}\n        </button>\n      </div >\n    </>\n  );\n};\n\nexport default RedactionSearchResults;","import React, { useCallback } from 'react';\nimport RedactionSearchResults from './RedactionSearchResults';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors'\nimport applyRedactions from 'helpers/applyRedactions';\nimport core from 'core';\n\nfunction createRedactionAnnotations(searchResults, activeToolStyles) {\n  const { StrokeColor, OverlayText } = activeToolStyles\n  const redactionAnnotations = searchResults.map(result => {\n    const redaction = new Annotations.RedactionAnnotation();\n    redaction.PageNumber = result.page_num;\n    redaction.Quads = result.quads.map((quad) => quad.getPoints());\n    redaction.StrokeColor = StrokeColor;\n    redaction.OverlayText = OverlayText;\n    redaction.setContents(result.result_str);\n    redaction.type = result.type;\n    redaction.Author = core.getCurrentUser();\n\n    if (result.type === 'text') {\n      redaction.setCustomData('trn-annot-preview', result.result_str);\n    }\n\n    redaction.setCustomData('trn-redaction-type', result.type)\n\n    return redaction;\n  })\n\n  return redactionAnnotations;\n}\n\nconst defaultRedactionStyles = { OverlayText: '', StrokeColor: new Annotations.Color(255, 0, 0) };\n\nfunction RedactionSearchResultsContainer(props) {\n  const { onCancelSearch } = props;\n  const dispatch = useDispatch();\n  // activeToolStyles is an object so we do a shallowEqual to check equality \n  const [activeToolStyles, activeToolName] = useSelector(\n    state => [\n      selectors.getActiveToolStyles(state),\n      selectors.getActiveToolName(state)\n    ], shallowEqual);\n\n  const redactSelectedResults = (searchResults) => {\n    const redactionAnnotations = createRedactionAnnotations(searchResults, defaultRedactionStyles);\n    dispatch(applyRedactions(redactionAnnotations, onCancelSearch));\n  };\n\n  const markSelectedResultsForRedaction = useCallback((searchResults) => {\n    const redactionStyles = activeToolName.includes('Redaction') ? activeToolStyles : defaultRedactionStyles;\n    const redactionAnnotations = createRedactionAnnotations(searchResults, redactionStyles);\n    const annotationManager = core.getAnnotationManager();\n    annotationManager.addAnnotations(redactionAnnotations);\n  }, [activeToolStyles, activeToolName]);\n\n  return (\n    <RedactionSearchResults\n      markSelectedResultsForRedaction={markSelectedResultsForRedaction}\n      redactSelectedResults={redactSelectedResults}\n      {...props} />);\n};\n\nexport default RedactionSearchResultsContainer;","import RedactionSearchResults from './RedactionSearchResultsContainer';\nexport default RedactionSearchResults;","import React, { useContext, useState } from 'react';\nimport RedactionSearchOverlay from 'src/components/RedactionSearchOverlay';\nimport { RedactionPanelContext } from 'components/RedactionPanel/RedactionPanelContext';\nimport RedactionSearchResults from 'components/RedactionSearchResults';\n\nconst RedactionSearchPanel = (props) => {\n  const [searchTerms, setSearchTerms] = useState([]);\n  const { isRedactionSearchActive, setIsRedactionSearchActive } = useContext(RedactionPanelContext)\n  const onCancelSearch = () => {\n    setSearchTerms([]);\n    clearRedactionSearchResults();\n    setIsRedactionSearchActive(false)\n  };\n\n  const {\n    redactionSearchResults,\n    isProcessingRedactionResults,\n    clearRedactionSearchResults,\n    searchStatus,\n  } = props;\n\n  return (\n    <>\n      <RedactionSearchOverlay\n        searchTerms={searchTerms}\n        setSearchTerms={setSearchTerms}\n      />\n      {isRedactionSearchActive &&\n        <RedactionSearchResults\n          redactionSearchResults={redactionSearchResults}\n          onCancelSearch={onCancelSearch}\n          searchStatus={searchStatus}\n          isProcessingRedactionResults={isProcessingRedactionResults}\n        />\n      }\n    </>\n  );\n};\n\nexport default RedactionSearchPanel;","import { useEffect, useState, useCallback, useMemo } from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport core from 'core';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport SearchStatus from 'constants/searchStatus';\n\nfunction useOnRedactionSearchCompleted() {\n\n  const [searchStatus, setSearchStatus] = useState(SearchStatus['SEARCH_NOT_INITIATED']);\n  const [redactionSearchResults, setRedactionSearchResults] = useState([]);\n  const [isProcessingRedactionResults, setIsProcessingRedactionResults] = useState(false);\n  const redactionSearchPatterns = useSelector(state => selectors.getRedactionSearchPatterns(state), shallowEqual);\n\n  const searchPatterns = useMemo(() => {\n    return Object.keys(redactionSearchPatterns).reduce((map, key) => {\n      const { regex, type, icon } = redactionSearchPatterns[key];\n      map[type] = {\n        regex,\n        icon\n      };\n      return map;\n    }, {})\n  }, [redactionSearchPatterns]);\n\n  const mapResultToType = useCallback((result) => {\n    // Iterate through the patterns and return the first match\n    const { resultStr } = result;\n    const searchPatternKeys = Object.keys(searchPatterns);\n\n    const resultType = searchPatternKeys.find(key => {\n      const { regex } = searchPatterns[key];\n      return regex.test(resultStr);\n    });\n\n    // If it didn't match any of the patterns, return the default type which is text\n    result.type = resultType === undefined ? redactionTypeMap['TEXT'] : resultType;\n    // And also set the icon to display in the panel. If no icon provided use the text icon\n    const { icon = 'icon-form-field-text' } = searchPatterns[result.type] || {};\n    result.icon = icon;\n    return result;\n\n  }, [searchPatterns]);//Dependency is an object but it is memoized so it will not re-create unless the patterns change\n\n  const clearRedactionSearchResults = useCallback(() => {\n    setRedactionSearchResults([]);\n    core.clearSearchResults();\n    setIsProcessingRedactionResults(false);\n  });\n\n  useEffect(() => {\n    function onSearchResultsChanged(results) {\n      const mappedResults = results.map(mapResultToType);\n      setIsProcessingRedactionResults(true);\n      setRedactionSearchResults(mappedResults)\n    };\n\n    core.addEventListener('searchResultsChanged', onSearchResultsChanged);\n    return () => {\n      core.removeEventListener('searchResultsChanged', onSearchResultsChanged);\n    }\n  }, [searchStatus]);\n\n  useEffect(() => {\n    function searchInProgressEventHandler(isSearching) {\n      if (isSearching === undefined || isSearching === null) {\n        // if isSearching is not passed at all, we consider that to mean that search was reset to original state\n        setSearchStatus(SearchStatus['SEARCH_NOT_INITIATED']);\n      } else if (isSearching) {\n        setSearchStatus(SearchStatus['SEARCH_IN_PROGRESS']);\n      } else {\n        setSearchStatus(SearchStatus['SEARCH_DONE']);\n        // Need a timeout due to timing issue as SEARCH_DONE is fired\n        // before final call to onSearchResultsChanged, otherwise we briefly show\n        // the NO RESULTS message before showing actual results.\n        setTimeout(() => {\n          setIsProcessingRedactionResults(false);\n        }, 100)\n      }\n    }\n\n    core.addEventListener('searchInProgress', searchInProgressEventHandler);\n\n    return () => {\n      core.removeEventListener('searchInProgress', searchInProgressEventHandler);\n    }\n  }, []);\n\n  return {\n    redactionSearchResults,\n    isProcessingRedactionResults,\n    clearRedactionSearchResults,\n    searchStatus,\n  }\n};\n\nexport default useOnRedactionSearchCompleted;","import useOnRedactionSearchCompleted from './useOnRedactionSearchCompleted';\n\nexport default useOnRedactionSearchCompleted;","import RedactionSearchPanel from './RedactionSearchPanelContainer';\n\nexport default RedactionSearchPanel;","import React from 'react';\nimport RedactionSearchPanel from './RedactionSearchPanel';\nimport useOnRedactionSearchCompleted from 'hooks/useOnRedactionSearchCompleted';\n\nconst ReactionSearchPanelContainer = () => {\n\n  const {\n    redactionSearchResults,\n    isProcessingRedactionResults,\n    clearRedactionSearchResults,\n    searchStatus,\n  } = useOnRedactionSearchCompleted();\n\n  return (\n    <RedactionSearchPanel\n      redactionSearchResults={redactionSearchResults}\n      isProcessingRedactionResults={isProcessingRedactionResults}\n      clearRedactionSearchResults={clearRedactionSearchResults}\n      searchStatus={searchStatus}\n    />\n  );\n};\n\nexport default ReactionSearchPanelContainer","import React, { useContext, useMemo } from 'react';\nimport RedactionPanel from './RedactionPanel';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport applyRedactions from 'helpers/applyRedactions';\nimport { RedactionPanelContext, RedactionPanelProvider } from './RedactionPanelContext';\nimport useOnRedactionAnnotationChanged from '../../hooks/useOnRedactionAnnotationChanged';\nimport useMedia from 'hooks/useMedia';\nimport DataElementWrapper from '../DataElementWrapper';\nimport Icon from 'components/Icon'\nimport RedactionSearchPanel from 'components/RedactionSearchPanel';\nimport { defaultRedactionTypes } from 'constants/redactionTypes';\n\nexport const RedactionPanelContainer = () => {\n  const [\n    isOpen,\n    isDisabled,\n    redactionPanelWidth,\n    isInDesktopOnlyMode,\n    customApplyRedactionsHandler,\n    redactionSearchPatterns,\n  ] = useSelector(\n    state => [\n      selectors.isElementOpen(state, 'redactionPanel'),\n      selectors.isElementDisabled(state, 'redactionPanel'),\n      selectors.getRedactionPanelWidth(state),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.getCustomApplyRedactionsHandler(state),\n      selectors.getRedactionSearchPatterns(state),\n    ], shallowEqual);\n\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const redactionAnnotationsList = useOnRedactionAnnotationChanged();\n\n  const redactionTypesDictionary = useMemo(() => {\n    const storedRedactionTypes = Object.keys(redactionSearchPatterns).reduce((map, key) => {\n      const { label, type, icon } = redactionSearchPatterns[key];\n      map[type] = {\n        label,\n        icon\n      };\n      return map;\n    }, {})\n\n    return { ...storedRedactionTypes, ...defaultRedactionTypes };\n  }, [redactionSearchPatterns]);\n\n  const deleteAllRedactionAnnotations = () => {\n    core.deleteAnnotations(redactionAnnotationsList);\n  };\n\n  const dispatch = useDispatch();\n  const applyAllRedactions = () => {\n    const originalApplyRedactions = () => {\n      dispatch(applyRedactions(redactionAnnotationsList));\n    };\n    if (customApplyRedactionsHandler) {\n      customApplyRedactionsHandler(redactionAnnotationsList, originalApplyRedactions);\n    } else {\n      originalApplyRedactions();\n    }\n  };\n  const closeRedactionPanel = () => {\n    dispatch(actions.closeElement('redactionPanel'));\n  };\n\n  const renderMobileCloseButton = () => {\n    return (\n      <div\n        className=\"close-container\"\n      >\n        <div\n          className=\"close-icon-container\"\n          onClick={closeRedactionPanel}\n        >\n          <Icon\n            glyph=\"ic_close_black_24px\"\n            className=\"close-icon\"\n          />\n        </div>\n      </div>\n    );\n  };\n\n  const style = !isInDesktopOnlyMode && isMobile ? {} : { width: `${redactionPanelWidth}px`, minWidth: `${redactionPanelWidth}px`, };\n\n  const { isRedactionSearchActive } = useContext(RedactionPanelContext);\n\n  if (isDisabled || !isOpen) {\n    return null;\n  } else {\n    return (\n      <DataElementWrapper\n        dataElement=\"redactionPanel\"\n        className=\"Panel RedactionPanel\"\n        style={style}\n      >\n        {(!isInDesktopOnlyMode && isMobile) && renderMobileCloseButton()}\n        <RedactionSearchPanel />\n        {!isRedactionSearchActive &&\n          <RedactionPanel\n            redactionAnnotations={redactionAnnotationsList}\n            redactionTypesDictionary={redactionTypesDictionary}\n            applyAllRedactions={applyAllRedactions}\n            deleteAllRedactionAnnotations={deleteAllRedactionAnnotations} />}\n      </DataElementWrapper>\n    );\n  }\n};\n\nconst RedactionPanelContainerWithProvider = () => {\n  return (\n    <RedactionPanelProvider>\n      <RedactionPanelContainer />\n    </RedactionPanelProvider>\n  )\n}\n\nexport default RedactionPanelContainerWithProvider;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n    // find the complete implementation of crypto (msCrypto) on IE11.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","import RedactionPanel from './RedactionPanelContainer';\n\nexport default RedactionPanel;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (var i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return stringify(rnds);\n}\n\nexport default v4;","import React from 'react';\nimport './PropertyKeyValuePair.scss';\n\nconst PropertyKeyValuePair = props => {\n  const { name, value } = props;\n\n  return (\n    <div data-element=\"propertyKeyValuePair\" className=\"property-pair\" key={name}>\n      <span className=\"property-key\">{name}</span>\n      <span className=\"property-value\">{value}</span>\n    </div>\n  );\n};\n\nexport default PropertyKeyValuePair;\n","import React from 'react';\nimport PropertyKeyValuePair from '../PropertyKeyValuePair/PropertyKeyValuePair';\n\nconst GeneralValuesSection = props => {\n  const { entities } = props;\n\n  const elements = [];\n\n  for (let entity in entities) {\n    elements.push(<PropertyKeyValuePair key={entity} name={entity} value={entities[entity]} />);\n  }\n\n  return <div data-element=\"generalValues\">{elements}</div>;\n};\n\nexport default GeneralValuesSection;\n","import React, { useState, useMemo } from 'react';\nimport Icon from 'components/Icon';\nimport PropertyKeyValuePair from '../PropertyKeyValuePair/PropertyKeyValuePair';\nimport './Group.scss';\n\nconst Group = props => {\n  const { name, data, open } = props;\n\n  const [isActive, setIsActive] = useState(open);\n  const downArrow = 'ic_chevron_down_black_24px';\n  const rightArrow = 'ic_chevron_right_black_24px';\n\n  const onClick = () => {\n    setIsActive(!isActive);\n  };\n\n  const elements = useMemo(() => {\n    return Object.entries(data).map(entity => (\n      <PropertyKeyValuePair key={entity[0]} name={entity[0]} value={entity[1]} />\n    ));\n  }, [data]);\n\n  return (\n    <div data-element=\"Group\">\n      <div className=\"group-title\">\n        <div onClick={onClick}>\n          <Icon glyph={`${isActive ? downArrow : rightArrow}`} />\n        </div>\n        <span>{name}</span>\n      </div>\n\n      <div className={`dropdown ${isActive ? 'active' : 'inactive'}`}>{elements}</div>\n    </div>\n  );\n};\n\nexport default React.memo(Group);\n","import React from 'react';\nimport Group from '../Group/Group';\n\nfunction addOrderedGroups(orderedGroup, groups) {\n  const orderArray = [];\n  for (let group in orderedGroup) {\n    const groupName = orderedGroup[group];\n\n    if (groupName in groups) {\n      orderArray.push(<Group name={groupName} key={groupName} data={groups[groupName]} open={true} />);\n    }\n  }\n\n  return orderArray;\n}\n\nconst GroupsContainer = props => {\n  const { groups, groupOrder } = props;\n\n  let combinedGroups = [];\n\n  if (groupOrder && groupOrder.length > 0) {\n    combinedGroups = addOrderedGroups(groupOrder, groups);\n\n    for (let group in groups) {\n      if (!groupOrder.includes(group)) {\n        combinedGroups.push(<Group name={group} key={group} data={groups[group]} open={true} />);\n      }\n    }\n  } else {\n    for (let group in groups) {\n      combinedGroups.push(<Group name={group} key={group} data={groups[group]} open={true} />);\n    }\n  }\n\n  return <div data-element=\"groupsContainer\">{combinedGroups}</div>;\n};\n\nexport default GroupsContainer;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport './HeaderTitle.scss';\n\nconst HeaderTitle = attributes => {\n  const { title } = attributes;\n  const { t } = useTranslation();\n\n  return (\n    <h1 data-element=\"headerTitle\">\n      <span>{t('wv3dPropertiesPanel.propertiesHeader')}</span>\n      <span> </span>\n      <span className=\"header-value\">{title}</span>\n    </h1>\n  );\n};\n\nexport default HeaderTitle;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport GeneralValuesSection from '../GeneralValuesSection/GeneralValuesSection';\nimport GroupsContainer from '../GroupsContainer/GroupsContainer';\nimport Group from '../Group/Group';\nimport HeaderTitle from '../HeaderTitle/HeaderTitle';\n\nfunction createDataSet(dataMap, propertySet, removeEmptyRows) {\n  const combinedMap = {};\n\n  if (removeEmptyRows) {\n    for (let item in dataMap) {\n      const dataPoint = propertySet[dataMap[item]];\n      if (dataPoint !== undefined && dataPoint !== '') {\n        combinedMap[item] = dataPoint;\n      }\n    }\n  } else {\n    for (let item in dataMap) {\n      combinedMap[item] = propertySet[dataMap[item]];\n    }\n  }\n\n  return combinedMap;\n}\n\nfunction checkForEmptyKeys(data) {\n  for (let key in data) {\n    const value = data[key];\n    if (value !== undefined && value !== '') {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction generateGroupDataSet(dataMap, propertySet, removeEmptyRows, removeEmptyGroups) {\n  const combinedGroupMap = {};\n\n  if (removeEmptyGroups) {\n    for (let group in dataMap) {\n      const dataset = createDataSet(dataMap[group], propertySet, removeEmptyRows);\n      if (Object.keys(dataset).length > 0) {\n        if (!checkForEmptyKeys(dataset)) {\n          combinedGroupMap[group] = dataset;\n        }\n      }\n    }\n  } else {\n    for (let group in dataMap) {\n      combinedGroupMap[group] = createDataSet(dataMap[group], propertySet, removeEmptyRows);\n    }\n  }\n\n  return combinedGroupMap;\n}\n\nconst PropertiesElement = props => {\n  const { element, schema } = props;\n\n  const {\n    headerName,\n    defaultValues,\n    groups,\n    groupOrder,\n    removeEmptyRows,\n    removeEmptyGroups,\n    createRawValueGroup,\n  } = schema;\n\n  const { t } = useTranslation();\n\n  const defaultItems = createDataSet(defaultValues, element, removeEmptyRows);\n  const groupsItems = generateGroupDataSet(groups, element, removeEmptyRows, removeEmptyGroups);\n  const name = element[headerName];\n\n  return (\n    <section data-element=\"propertiesElement\">\n      <HeaderTitle title={name} />\n      <GeneralValuesSection entities={defaultItems} />\n      <GroupsContainer groups={groupsItems} groupOrder={groupOrder} />\n      {createRawValueGroup ? (\n        <Group data-element=\"Group\" name={t('wv3dPropertiesPanel.miscValuesHeader')} data={element} open={false} />\n      ) : null}\n    </section>\n  );\n};\n\nexport default PropertiesElement;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport DataElementWrapper from '../DataElementWrapper';\nimport './Wv3dPropertiesPanel.scss';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport PropertiesElement from './PropertiesElement/PropertiesElement';\n\nconst Wv3dPropertiesPanel = props => {\n  const { currentWidth, isInDesktopOnlyMode, isMobile = false, closeWv3dPropertiesPanel, schema, modelData } = props;\n\n  const { t } = useTranslation();\n  const style = !isInDesktopOnlyMode && isMobile ? {} : { width: `${currentWidth}px`, minWidth: `${currentWidth}px` };\n\n  const renderMobileCloseButton = () => {\n    return (\n      <div className=\"close-container\">\n        <div className=\"close-icon-container\" onClick={closeWv3dPropertiesPanel}>\n          <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n        </div>\n      </div>\n    );\n  };\n\n  let propertiesCollection = modelData.map(element => (\n    <PropertiesElement key={`${element.handle}-${uuidv4()}`} element={element} schema={schema} />\n  ));\n\n  if (modelData.length < 1) {\n    propertiesCollection = t('wv3dPropertiesPanel.emptyPanelMessage');\n  }\n\n  return (\n    <DataElementWrapper dataElement=\"wv3dPropertiesPanel\" className=\"Panel wv3d-properties-panel\" style={style}>\n      {!isInDesktopOnlyMode && isMobile && renderMobileCloseButton()}\n      {propertiesCollection}\n    </DataElementWrapper>\n  );\n};\n\nexport default Wv3dPropertiesPanel;\n","import React from 'react';\nimport Wv3dPropertiesPanel from './Wv3dPropertiesPanel';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\n\nimport useMedia from 'hooks/useMedia';\n\nconst Wv3dPropertiesPanelContainer = () => {\n  const [isOpen, isDisabled, wv3dPropertiesPanelWidth, isInDesktopOnlyMode, modelData, schema] = useSelector(\n    state => [\n      selectors.isElementOpen(state, 'wv3dPropertiesPanel'),\n      selectors.isElementDisabled(state, 'wv3dPropertiesPanel'),\n      selectors.getWv3dPropertiesPanelWidth(state),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.getWv3dPropertiesPanelModelData(state),\n      selectors.getWv3dPropertiesPanelSchema(state),\n    ],\n    shallowEqual,\n  );\n\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const dispatch = useDispatch();\n\n  const closeWv3dPropertiesPanel = () => {\n    dispatch(actions.closeElement('wv3dPropertiesPanel'));\n  };\n\n  if (isDisabled || !isOpen) {\n    return null;\n  } else {\n    return (\n      <Wv3dPropertiesPanel\n        isInDesktopOnlyMode={isInDesktopOnlyMode}\n        isMobile={isMobile}\n        currentWidth={wv3dPropertiesPanelWidth}\n        closeWv3dPropertiesPanel={closeWv3dPropertiesPanel}\n        modelData={modelData}\n        schema={schema}\n      />\n    );\n  }\n};\n\nexport default Wv3dPropertiesPanelContainer;\n","import Wv3dPropertiesPanel from './Wv3dPropertiesPanelContainer';\n\nexport default Wv3dPropertiesPanel;\n","import useOnClickPrepareSoundAnnotation from './useOnClickPrepareSoundAnnotation';\n\nexport default useOnClickPrepareSoundAnnotation;","import { useEffect } from 'react'\nimport core from 'core';\n\nexport default function useOnClickPrepareSoundAnnotation() {\n  function onAnnotationSelected(annotations, action) {\n    if(action === 'selected' && annotations[0] instanceof window.Annotations.SoundAnnotation) {\n      const annotationHasAudioPrepared = (annotations[0].audio.blob);\n      if(!annotationHasAudioPrepared) {\n        annotations[0].prepareAudioBlob();\n      }\n    }\n  }\n\n  useEffect(() => {\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n}","import React, { useEffect, useState, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Button from '../Button';\nimport classNames from 'classnames';\nimport './AudioPlaybackPopup.scss';\n\nconst PLAY_AUDIO_SVG = 'ic_play_24px';\nconst PAUSE_AUDIO_SVG = 'ic_pause_24px';\nconst CLOSE_SVG = 'ic_close_black_24px';\n\nfunction AudioPlaybackPopup({\n  autoplay,\n  annotation,\n  handleAudioPlaybackError,\n  handleAudioInitializeError,\n  handleCloseAudioPlaybackPopup\n}) {\n\n  const [isPlayingAudio, setIsPlayingAudio] = useState(false);\n  const [durationValue, setDurationValue] = useState(0);\n  const [durationString, setDurationString] = useState('00:00');\n  const [currentTimeValue, setCurrentTimeValue] = useState(0);\n  const [currentTimeString, setCurrentTimeString] = useState('00:00');\n\n  const audioElementRef = useRef();\n\n  const { t } = useTranslation();\n\n  useEffect(() => {\n    const audioContext = new AudioContext();\n    audioContext\n      .createMediaElementSource(audioElementRef.current)\n      .connect(audioContext.destination);\n\n    return () => {\n      audioContext.close();\n    };\n  }, []);\n\n  useEffect(() => {\n    if(!annotation || !annotation.audio || !annotation.audio.blob) {\n      handleAudioInitializeError('No audio data found. Cannot play this annotation\\'s audio.');\n      return;\n    }\n\n    audioElementRef.current.src = URL.createObjectURL(annotation.audio.blob);\n\n    if(autoplay) {\n      playAudio();\n    }\n  }, [annotation]);\n\n  async function toggleAudio() {\n    let isPlaying = false;\n\n    if(isPlayingAudio) {\n      await audioElementRef.current.pause();\n    } else {\n      isPlaying = true;\n      await audioElementRef.current.play()\n        .catch(error => {\n          isPlaying = false;\n          handleAudioPlaybackError(error);\n        });\n    }\n\n    setIsPlayingAudio(isPlaying);\n  }\n\n  async function playAudio() {\n    let isPlaying = true;\n    await audioElementRef.current.play()\n      .catch(error => {\n        isPlaying = false;\n        handleAudioPlaybackError(error);\n      });\n\n    setIsPlayingAudio(isPlaying);\n  }\n\n  function handleLoadedAudioMetadata(e) {\n    const duration = e.target.duration\n    const timeStampString = getTimeStampStringFromSeconds(duration);\n    setDurationValue(duration);\n    setDurationString(timeStampString);\n  }\n\n  function handleAudioTimeUpdate(e) {\n    const currentTime = e.target.currentTime;\n    const timeStampString = getTimeStampStringFromSeconds(currentTime);\n    setCurrentTimeValue(currentTime);\n    setCurrentTimeString(timeStampString);\n  }\n\n  function getTimeStampStringFromSeconds(totalSeconds) {\n    const minutes = `${parseInt(`${(totalSeconds / 60) % 60}`, 10)}`.padStart(2, '0');\n    const seconds = `${parseInt(`${totalSeconds % 60}`, 10)}`.padStart(2, '0');\n    return `${minutes}:${seconds}`;\n  }\n\n  function handleOnProgressBarClick(e) {\n    audioElementRef.current.currentTime = e.target.value;\n  }\n\n  function handleAudioFinished() {\n    setIsPlayingAudio(false);\n  }\n\n  return (\n    <div className={classNames({\n      Popup: true,\n      AudioPlaybackPopup: true\n    })}>\n      <div className=\"audio-popup-draggable-header\">\n        <svg width=\"12\" height=\"2\" viewBox=\"0 0 12 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <rect width=\"12\" height=\"2\" rx=\"1\" fill=\"#CFD4DA\"/>\n        </svg>\n      </div>\n      <div className=\"audio-popup-ui\">\n        <audio\n          data-testid=\"hidden-audio-element\"\n          ref={audioElementRef}\n          style={{ display: 'none'}}\n          onLoadedMetadata={handleLoadedAudioMetadata}\n          onTimeUpdate={handleAudioTimeUpdate}\n          onEnded={handleAudioFinished}\n        />\n\n        <Button\n          onClick={toggleAudio}\n          title={(isPlayingAudio ? t('action.pauseAudio') : t('action.playAudio'))}\n          img={(isPlayingAudio ? PAUSE_AUDIO_SVG : PLAY_AUDIO_SVG)}\n        />\n\n        <span className=\"current-time\">{currentTimeString}</span>\n        <input\n          className=\"audio-playback-progress\"\n          type=\"range\"\n          step=\"any\"\n          max={durationValue}\n          value={currentTimeValue}\n          onChange={handleOnProgressBarClick}\n        />\n        <span className=\"duration\">{durationString}</span>\n\n        <Button\n          title=\"action.close\"\n          img={CLOSE_SVG}\n          onClick={handleCloseAudioPlaybackPopup}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default AudioPlaybackPopup;","import React, { useEffect, useRef } from 'react';\nimport core from 'core';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport Draggable from 'react-draggable';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport classNames from 'classnames';\nimport useOnClickPrepareSoundAnnotation from 'src/hooks/useOnClickPrepareSoundAnnotation';\nimport useMedia from '../../hooks/useMedia';\nimport DataElementWrapper from '../DataElementWrapper';\nimport AudioPlaybackPopup from './AudioPlaybackPopup';\n\nfunction AudioPlaybackPopupContainer() {\n  const [\n    isOpen,\n    shouldResetAudioPlaybackPosition,\n    activeSoundAnnotation\n  ] = useSelector(state => [\n    selectors.isElementOpen(state, 'audioPlaybackPopup'),\n    selectors.shouldResetAudioPlaybackPosition(state),\n    selectors.getActiveSoundAnnotation(state)\n  ], shallowEqual);\n\n  const dispatch = useDispatch();\n  const draggableRef = useRef();\n  const isMobile = useMedia(['(max-width: 640px)'], [true], false);\n\n  useOnClickPrepareSoundAnnotation();\n\n  useEffect(() => {\n    resetAudioPlaybackPosition();\n  }, [shouldResetAudioPlaybackPosition]);\n\n  useEffect(() => {\n    function onSoundAnnotationDeleted(annotations, action) {\n      if(action === 'delete') {\n        const shouldClosePopup = annotations.some(annotation => {\n          return (\n            !activeSoundAnnotation ||\n            (\n              annotation instanceof window.Annotations.SoundAnnotation &&\n              annotation.Id === activeSoundAnnotation.Id\n            )\n          );\n        });\n\n        if(shouldClosePopup) {\n          closeAudioPlaybackPopup();\n        }\n      }\n    }\n\n    core.addEventListener('annotationChanged', onSoundAnnotationDeleted);\n    return () => {\n      core.removeEventListener('annotationChanged', onSoundAnnotationDeleted);\n    };\n  }, [activeSoundAnnotation]);\n\n  function resetAudioPlaybackPosition() {\n    if(shouldResetAudioPlaybackPosition && draggableRef.current) {\n      dispatch(actions.triggerResetAudioPlaybackPosition(false));\n      draggableRef.current.state.x = 0;\n      draggableRef.current.state.y = 0;\n    }\n  }\n\n  function closeAudioPlaybackPopup() {\n    dispatch(actions.closeElement('audioPlaybackPopup'));\n  }\n\n  function handleAudioPlaybackError(error) {\n    if(error.toString().includes('no supported source')) {\n      console.error('Error playing annotation audio. The audio type is not supported in this browser.');\n    } else {\n      console.error('Error playing annotation audio.');\n    }\n  }\n\n  function handleAudioInitializeError(error) {\n    console.error(error);\n    closeAudioPlaybackPopup();\n  }\n\n  const renderAudioPlaybackPopup = () => (\n    <DataElementWrapper\n      data-element=\"audioPlaybackPopup\"\n      className={classNames({\n        Popup: true,\n        AudioPlaybackPopupContainer: true,\n        open: isOpen,\n        closed: !isOpen\n      })}\n    >\n      <AudioPlaybackPopup\n        autoplay={true}\n        annotation={activeSoundAnnotation}\n        handleAudioPlaybackError={handleAudioPlaybackError}\n        handleAudioInitializeError={handleAudioInitializeError}\n        handleCloseAudioPlaybackPopup={closeAudioPlaybackPopup}>\n      </AudioPlaybackPopup>\n    </DataElementWrapper>\n  );\n\n  if(!isOpen) {\n    return null;\n  }\n\n  if(isMobile) {\n    return renderAudioPlaybackPopup();\n  }\n\n  return (\n    <Draggable ref={draggableRef} cancel=\".Button, .audio-playback-progress\">\n      {renderAudioPlaybackPopup()}\n    </Draggable>\n  );\n}\n\nexport default AudioPlaybackPopupContainer;","import AudioPlaybackPopup from './AudioPlaybackPopupContainer';\n\nexport default AudioPlaybackPopup;","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Icon from 'components/Icon';\nimport './Selector.scss';\n\nconst propTypes = {\n  items: PropTypes.arrayOf(PropTypes.string).isRequired,\n  selectedItem: PropTypes.string,\n  onItemSelected: PropTypes.func.isRequired,\n  placeHolder: PropTypes.string,\n  selectedItemStyle: PropTypes.object,\n};\n\nconst Selector = ({ items = [], selectedItem = '', onItemSelected, placeHolder, selectedItemStyle }) => {\n  return (\n    <div className=\"customSelector\">\n      <button className=\"customSelector__selectedItem\" style={selectedItemStyle}>\n        {!selectedItem && placeHolder ? placeHolder : selectedItem}\n        <Icon className=\"down-arrow\" glyph={'icon-chevron-down'} />\n      </button>\n      <ul>\n        <li>\n          <div style={selectedItemStyle}>{!selectedItem && placeHolder ? placeHolder : selectedItem}</div>\n          <Icon className=\"up-arrow\" glyph={'icon-chevron-up'} />\n        </li>\n        {items.map((value, i) => (\n          <li key={value + i}>\n            <button\n              className={classNames({\n                options: true,\n                optionSelected: selectedItem === value,\n              })}\n              onMouseDown={() => onItemSelected(value)}\n            >\n              {value}\n            </button>\n          </li>\n        ))}\n      </ul>\n    </div>\n  );\n};\n\nSelector.propTypes = propTypes;\n\nexport default Selector;\n","import Selector from './Selector'\n\nexport default Selector;","import React from 'react';\nimport Icon from 'components/Icon';\nimport Selector from 'components/Selector';\nimport { useTranslation } from 'react-i18next';\nimport { isIE11 } from 'helpers/device';\n\nconst DimensionsInput = ({\n  yOffset,\n  height,\n  xOffset,\n  width,\n  unit,\n  autoTrim,\n  supportedUnits,\n  autoTrimOptions,\n  onDimensionChange,\n  onUnitChange,\n  autoTrimActive,\n  setAutoTrimActive,\n  onAutoTrimChange,\n}) => {\n  // Resizes number input boxes so that units of measurement can be shown next to them as if they are also in the same box\n  const resizeInput = input => {\n    let maxLength = 5;\n    let length = input.toString().length;\n    let decimalSize = 0.3;\n    if (isIE11) {\n      const IE_ADJUSTMENT = 1.25;\n      length *= IE_ADJUSTMENT;\n      maxLength *= IE_ADJUSTMENT;\n      decimalSize *= IE_ADJUSTMENT;\n    }\n    if (input.toString().includes('.')) {\n      if (length > maxLength) {\n        return maxLength + decimalSize;\n      }\n    }\n    if (length > maxLength) {\n      return maxLength;\n    }\n    return length;\n  };\n\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"crop-dimensions\">\n      <div className=\"crop-dimensions-input-container\">\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">W</span>\n          <div className=\"input-field-container\">\n            <input\n              name=\"width\"\n              data-testid=\"width-input\"\n              type=\"number\"\n              min=\"0\"\n              className=\"dimension-input-field\"\n              style={{ width: resizeInput(width) + 'ch' }}\n              onChange={e => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              onKeyUp={e => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              value={width}\n            />\n            <span className=\"dimension-input-unit\">{width > 0 && supportedUnits[unit]}</span>\n          </div>\n        </label>\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">H</span>\n          <div className=\"input-field-container\">\n            <input\n              name=\"height\"\n              data-testid=\"height-input\"\n              type=\"number\"\n              min=\"0\"\n              className=\"dimension-input-field\"\n              style={{ width: resizeInput(height) + 'ch' }}\n              onChange={e => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              onKeyUp={e => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              value={height}\n            />\n            <span className=\"dimension-input-unit\">{height > 0 && supportedUnits[unit]}</span>\n          </div>\n        </label>\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">X</span>\n          <div className=\"input-field-container\">\n            <input\n              name=\"xOffset\"\n              data-testid=\"xOffset-input\"\n              type=\"number\"\n              min=\"0\"\n              className=\"dimension-input-field\"\n              style={{ width: resizeInput(xOffset) + 'ch' }}\n              onChange={e => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              onKeyUp={e => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              value={xOffset}\n            />\n            <span className=\"dimension-input-unit\">{xOffset > 0 && supportedUnits[unit]}</span>\n          </div>\n        </label>\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">Y</span>\n          <div className=\"input-field-container\">\n            <input\n              name=\"yOffset\"\n              data-testid=\"yOffset-input\"\n              type=\"number\"\n              min=\"0\"\n              className=\"dimension-input-field\"\n              style={{ width: resizeInput(yOffset) + 'ch' }}\n              onChange={e => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              onKeyUp={e => {\n                onDimensionChange(e.target.value, e.target.name);\n                setAutoTrimActive(false);\n              }}\n              value={yOffset}\n            />\n            <span className=\"dimension-input-unit\">{yOffset > 0 && supportedUnits[unit]}</span>\n          </div>\n        </label>\n      </div>\n      <div className=\"crop-dimensions-settings\">\n        <div className=\"dimensions-settings-title-container\">\n          <span className=\"dimensions-settings-title\">{t('cropPopUp.dimensionInput.unitOfMeasurement')}</span>\n        </div>\n        <div className=\"custom-select unit-selector\">\n          <Selector items={Object.keys(supportedUnits)} selectedItem={unit} onItemSelected={onUnitChange} />\n        </div>\n      </div>\n      <div className=\"crop-dimensions-settings\">\n        <div className=\"dimensions-settings-title-container\">\n          <span className=\"dimensions-settings-title\">{t('cropPopUp.dimensionInput.autoTrim')}</span>\n        </div>\n        <div className=\"custom-select auto-trim-selector\">\n          <Selector\n            items={autoTrimOptions}\n            selectedItem={autoTrim && autoTrimActive ? autoTrim : ''}\n            onItemSelected={onAutoTrimChange}\n            placeHolder={autoTrim ? autoTrim : autoTrimOptions[0]}\n            selectedItemStyle={{ color: autoTrimActive ? 'var(--text-color)' : 'var(--gray-6)' }}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default DimensionsInput;\n","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { useTranslation } from 'react-i18next';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport DimensionsInput from './DimensionsInput';\nimport Dropdown from 'components/Dropdown';\nimport PageNumberInput from 'components/PageReplacementModal/PageNumberInput';\nimport core from 'core';\nimport actions from 'actions';\nimport { useDispatch } from 'react-redux';\n\nimport './DocumentCropPopup.scss';\n\nconst DocumentCropPopup = ({\n  cropAnnotation,\n  cropMode,\n  onCropModeChange,\n  closeDocumentCropPopup,\n  applyCrop,\n  isCropping,\n  getPageHeight,\n  getPageWidth,\n  isPageRotated,\n  redrawCropAnnotations,\n  isInDesktopOnlyMode,\n  isMobile,\n  getPageCount,\n  getCurrentPage,\n  selectedPages,\n  onSelectedPagesChange,\n  presetCropDimensions\n}) => {\n  const { t } = useTranslation();\n\n  const className = classNames({\n    Popup: true,\n    DocumentCropPopup: true,\n    mobile: isMobile,\n  });\n\n  const loadedDocumentPageCount = getPageCount();\n\n  const [pages, setPages] = useState('');\n\n  const handlePageNumbersChanged = pageNumbers => {\n    if (pageNumbers.length > 0) {\n      setPages(pageNumbers);\n    }\n  };\n\n  const handlePageNumberError = pageNumber => {\n    if (pageNumber) {\n      setPageNumberError('Invalid page number. Limit is ' + documentViewer.getPageCount());\n    }\n  };\n\n  useEffect(() => {\n    const timeOutWhileTyping = setTimeout(() => {\n      onSelectedPagesChange(pages);\n      if (pages) {\n        setPageNumberError(null);\n      }\n    }, 2000);\n    return () => clearTimeout(timeOutWhileTyping);\n  }, [pages]);\n\n  const cropNames = {\n    'ALL_PAGES': t('cropPopUp.allPages'),\n    'SINGLE_PAGE': t('cropPopUp.singlePage'),\n    'MULTI_PAGE': t('cropPopUp.multiPage'),\n  };\n\n  const supportedUnits = {\n    'Inches (in)': '\"',\n    'Centimeters (cm)': 'cm',\n    'Millimeters (mm)': 'mm',\n  };\n\n  const unitConversions = {\n    '\"': 1,\n    'cm': 2.54,\n    'mm': 25.4,\n    'pt': 72,\n  };\n\n  // set default to whichever unit is listed first in unitConversions\n  const [unit, setUnit] = useState(Object.getOwnPropertyNames(supportedUnits)[0]);\n\n  const [autoTrimActive, setAutoTrimActive] = useState(false);\n\n  // dimensions used to place auto trim crop annotations.\n  // default values are using inches\n  const autoTrimDimensions = presetCropDimensions;\n\n  const [autoTrim, setAutoTrim] = useState(null);\n\n  const [isCropDimensionsContainerActive, setCropDimensionsContainerActive] = useState(false);\n\n  const toggleCropDimensions = () => {\n    if (isCropping) {\n      setCropDimensionsContainerActive(!isCropDimensionsContainerActive);\n    }\n  };\n\n  const convertUnitsToPt = val => {\n    const unitToConvertTo = unitConversions[supportedUnits[unit]];\n    const pt = unitConversions['pt'];\n    return (val / unitToConvertTo) * pt;\n  };\n\n  const convertPtToUnits = (val, unitToConvertTo) => {\n    val /= unitConversions['pt'];\n    return val * unitConversions[supportedUnits[unitToConvertTo]];\n  };\n\n  const truncateInput = input => {\n    const INPUT_MAX_LENGTH = 5;\n    if (input) {\n      input = input.toString();\n\n      // if there is a decimal, allow an additional char to keep amount of other chars at INPUT_MAX_LENGTH\n      let specialChars = 0;\n      if (input.includes('.')) {\n        specialChars++;\n      }\n      if (input.length > INPUT_MAX_LENGTH + specialChars) {\n        input = input.slice(0, INPUT_MAX_LENGTH + specialChars);\n      }\n    }\n    return input;\n  };\n\n  const validateInput = (input, dimension) => {\n    if (input < 0) {\n      return 0;\n    }\n\n    const pageNumber = cropAnnotation ? cropAnnotation.getPageNumber() : getCurrentPage();\n\n    if (dimension) {\n      switch (dimension) {\n        case 'xOffset':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getWidth(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getWidth(), unit));\n          }\n          break;\n        case 'width':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getX(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getX(), unit));\n          }\n          break;\n        case 'yOffset':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getHeight(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getHeight(), unit));\n          }\n          break;\n        case 'height':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getY(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getY(), unit));\n          }\n          break;\n      }\n    }\n\n    input = Math.max(Number(input), 0);\n\n    return input;\n  };\n\n  const [yOffset, setYOffset] = useState();\n  const [height, setHeight] = useState();\n  const [xOffset, setXOffset] = useState();\n  const [width, setWidth] = useState();\n\n  useEffect(() => {\n    if (cropAnnotation) {\n      // when user changes the input units or adjusts the crop annotation using the mouse, the input fields need to be updated\n      onUnitChange(unit);\n      const onCropAnnotationChanged = () => {\n        setYOffset(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getY(), unit))));\n        setHeight(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getHeight(), unit))));\n        setXOffset(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getX(), unit))));\n        setWidth(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getWidth(), unit))));\n\n        setAutoTrimActive(false);\n      };\n      core.addEventListener('annotationChanged', onCropAnnotationChanged);\n      return () => {\n        core.removeEventListener('annotationChanged', onCropAnnotationChanged);\n      };\n    }\n  }, [unit, cropAnnotation]);\n\n  useEffect(() => {\n    if (cropAnnotation) {\n      redrawCropAnnotations(cropAnnotation.getRect());\n    }\n  }, [autoTrimActive]);\n\n  useEffect(() => {\n    if (cropAnnotation) {\n      const onPagesUpdated = () => {\n        setYOffset(truncateInput(convertPtToUnits(cropAnnotation.getY(), unit)));\n        setHeight(truncateInput(convertPtToUnits(cropAnnotation.getHeight(), unit)));\n        setXOffset(truncateInput(convertPtToUnits(cropAnnotation.getX(), unit)));\n        setWidth(truncateInput(convertPtToUnits(cropAnnotation.getWidth(), unit)));\n      };\n      core.addEventListener('pagesUpdated', onPagesUpdated);\n\n      return () => {\n        core.removeEventListener('pagesUpdated', onPagesUpdated);\n      };\n    }\n  }, []);\n\n  const onDimensionChange = (input, position) => {\n    if (!input) {\n      input = 0;\n    }\n\n    input = validateInput(input, position);\n\n    switch (position) {\n      case 'yOffset':\n        cropAnnotation.setY(convertUnitsToPt(input));\n        setYOffset(truncateInput(input));\n        break;\n      case 'height':\n        cropAnnotation.setHeight(convertUnitsToPt(input));\n        setHeight(truncateInput(input));\n        break;\n      case 'xOffset':\n        cropAnnotation.setX(convertUnitsToPt(input));\n        setXOffset(truncateInput(input));\n        break;\n      case 'width':\n        cropAnnotation.setWidth(convertUnitsToPt(input));\n        setWidth(truncateInput(input));\n        break;\n    }\n    if (cropAnnotation) {\n      redrawCropAnnotations(cropAnnotation.getRect());\n    }\n  };\n\n  const onUnitChange = unit => {\n    setUnit(unit);\n    setYOffset(truncateInput(convertPtToUnits(cropAnnotation.getY(), unit)));\n    setHeight(truncateInput(convertPtToUnits(cropAnnotation.getHeight(), unit)));\n    setXOffset(truncateInput(convertPtToUnits(cropAnnotation.getX(), unit)));\n    setWidth(truncateInput(convertPtToUnits(cropAnnotation.getWidth(), unit)));\n  };\n\n  const onAutoTrimChange = autoTrim => {\n    if (autoTrim) {\n      setAutoTrim(autoTrim);\n      setAutoTrimActive(true);\n\n      const y = autoTrimDimensions[autoTrim]['yOffset'] * unitConversions[supportedUnits[unit]];\n      const h = Math.max(0, autoTrimDimensions[autoTrim]['height'] * unitConversions[supportedUnits[unit]]);\n      const x = autoTrimDimensions[autoTrim]['xOffset'] * unitConversions[supportedUnits[unit]];\n      const w = Math.max(0, autoTrimDimensions[autoTrim]['width'] * unitConversions[supportedUnits[unit]]);\n\n      cropAnnotation.setY(convertUnitsToPt(y));\n      setYOffset(truncateInput(y));\n      cropAnnotation.setX(convertUnitsToPt(x));\n      setXOffset(truncateInput(x));\n      cropAnnotation.setHeight(convertUnitsToPt(h));\n      setHeight(truncateInput(h));\n      cropAnnotation.setWidth(convertUnitsToPt(w));\n      setWidth(truncateInput(w));\n\n      if (cropAnnotation) {\n        redrawCropAnnotations(cropAnnotation.getRect());\n      }\n    } else {\n      // if no auto-trim is chosen or if auto-trim gets disabled by adjusting the crop dimensions, reset it\n      setAutoTrim(undefined);\n    }\n  };\n\n  const handleButtonPressed = button => {\n    switch (button) {\n      case 'apply':\n        openCropConfirmationWarning();\n        break;\n      case 'cancel':\n        if (isCropping) {\n          openCropCancellationWarning();\n        } else {\n          closeDocumentCropPopup();\n        }\n        break;\n    }\n  };\n\n  const dispatch = useDispatch();\n\n  const openCropConfirmationWarning = () => {\n    const title = t('cropPopUp.cropModal.applyTitle');\n    const message = t('cropPopUp.cropModal.applyMessage');\n    const confirmationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        applyCrop();\n      },\n    };\n    dispatch(actions.showWarningMessage(confirmationWarning));\n  };\n\n  const openCropCancellationWarning = () => {\n    const title = t('cropPopUp.cropModal.cancelTitle');\n    const message = t('cropPopUp.cropModal.cancelMessage');\n    const cancellationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        closeDocumentCropPopup();\n      },\n    };\n    dispatch(actions.showWarningMessage(cancellationWarning));\n  };\n\n  const [pageNumberError, setPageNumberError] = useState('');\n\n  if (isMobile && !isInDesktopOnlyMode) {\n    return (\n      <div className={className}>\n        <div className=\"document-crop-mobile-section\">\n          <div className=\"document-crop-mobile-container\">\n            <div className=\"custom-select document-crop-selector\">\n              <Dropdown\n                items={Object.values(cropNames)}\n                onClickItem={e => onCropModeChange(Object.keys(cropNames).find(key => cropNames[key] === e))}\n                currentSelectionKey={cropNames[cropMode]}\n              />\n              {cropMode === 'MULTI_PAGE' && (\n                <div className=\"document-crop-page-input-container\">\n                  <PageNumberInput\n                    data-element=\"multiPageCropPageNumberInput\"\n                    selectedPageNumbers={selectedPages}\n                    pageCount={loadedDocumentPageCount}\n                    onSelectedPageNumbersChange={handlePageNumbersChanged}\n                    onBlurHandler={null}\n                    placeHolder={t('option.documentControls.placeholder')}\n                    onError={handlePageNumberError}\n                  />\n                </div>\n              )}\n              {pageNumberError && <div className=\"page-number-error\">{pageNumberError}</div>}\n            </div>\n            <button\n              className=\"save-button\"\n              data-element=\"cropApplyButton\"\n              onClick={() => handleButtonPressed('apply')}\n              disabled={!isCropping}\n            >\n              {t('action.apply')}\n            </button>\n          </div>\n          <button\n            className=\"cancel-button\"\n            data-element=\"cropCancelButton\"\n            onClick={() => handleButtonPressed('cancel')}\n          >\n            <Icon glyph=\"icon-close\" />\n          </button>\n        </div>\n      </div>\n    );\n  }\n  return (\n    <div className={className}>\n      <div className=\"document-crop-section\">\n        <span className=\"menu-title\">{t('cropPopUp.title')}</span>\n        <Choice\n          label={t('cropPopUp.allPages')}\n          name=\"All\"\n          data-element=\"allPagesCropRadioButton\"\n          onChange={() => onCropModeChange('ALL_PAGES')}\n          checked={cropMode === 'ALL_PAGES'}\n          radio\n        />\n        <Choice\n          label={t('cropPopUp.singlePage')}\n          name=\"SINGLE_PAGE\"\n          data-element=\"singlePageCropRadioButton\"\n          onChange={() => onCropModeChange('SINGLE_PAGE')}\n          checked={cropMode === 'SINGLE_PAGE'}\n          radio\n        />\n        <Choice\n          label={t('cropPopUp.multiPage')}\n          name=\"MULTI_PAGE\"\n          data-element=\"multiPageCropRadioButton\"\n          onChange={() => onCropModeChange('MULTI_PAGE')}\n          checked={cropMode === 'MULTI_PAGE'}\n          radio\n        />\n        {cropMode === 'MULTI_PAGE' && (\n          <div className=\"document-crop-page-input-container\">\n            <PageNumberInput\n              data-element=\"multiPageCropPageNumberInput\"\n              selectedPageNumbers={selectedPages}\n              pageCount={loadedDocumentPageCount}\n              onSelectedPageNumbersChange={handlePageNumbersChanged}\n              onBlurHandler={null}\n              placeHolder={t('option.documentControls.placeholder')}\n              onError={handlePageNumberError}\n            />\n          </div>\n        )}\n        {pageNumberError && <div className=\"page-number-error\">{pageNumberError}</div>}\n      </div>\n      <div className={isCropping && cropAnnotation ? 'crop-active' : 'crop-inactive'}>\n        <div className=\"divider\" />\n        <div className=\"document-crop-section\">\n          <div\n            className=\"collapsible-menu\"\n            style={{ pointerEvents: isCropping ? 'all' : 'none' }}\n            onClick={toggleCropDimensions}\n            onTouchStart={toggleCropDimensions}\n          >\n            <div className=\"menu-title\">{t('cropPopUp.cropDimensions')}</div>\n            <Icon\n              data-testid=\"collapsible-menu-icon\"\n              className={isCropping ? 'crop-active' : 'crop-inactive'}\n              glyph={`icon-chevron-${isCropDimensionsContainerActive && cropAnnotation ? 'up' : 'down'}`}\n            />\n          </div>\n          {isCropDimensionsContainerActive && cropAnnotation && (\n            <DimensionsInput\n              yOffset={yOffset}\n              height={height}\n              xOffset={xOffset}\n              width={width}\n              unit={unit}\n              autoTrim={autoTrim}\n              supportedUnits={supportedUnits}\n              autoTrimOptions={Object.keys(autoTrimDimensions)}\n              onDimensionChange={onDimensionChange}\n              onUnitChange={onUnitChange}\n              autoTrimActive={autoTrimActive}\n              setAutoTrimActive={setAutoTrimActive}\n              onAutoTrimChange={onAutoTrimChange}\n            />\n          )}\n        </div>\n        <div className=\"divider\" />\n      </div>\n      <div className=\"buttons\">\n        <button\n          className=\"cancel-button\"\n          data-element=\"cropCancelButton\"\n          onClick={() => handleButtonPressed('cancel')}\n        >\n          {t('action.cancel')}\n        </button>\n        <button\n          className=\"save-button\"\n          data-element=\"cropApplyButton\"\n          onClick={() => handleButtonPressed('apply')}\n          disabled={!isCropping || pageNumberError}\n        >\n          {t('action.apply')}\n        </button>\n      </div>\n    </div>\n  );\n};\n\nexport default DocumentCropPopup;\n","import useOnCropAnnotationChangedOrSelected from \"./useOnCropAnnotationChangedOrSelected\";\n\nexport default useOnCropAnnotationChangedOrSelected;","import { useEffect, useState } from 'react';\nimport core from 'core';\n\nexport default function useOnCropAnnotationChangedOrSelected(openDocumentCropPopup) {\n  const [cropAnnotation, setCropAnnotation] = useState(null);\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      const annotation = annotations[0];\n      if(action === 'add' && annotation.ToolName === window.Core.Tools.ToolNames['CROP'] && annotation instanceof window.Annotations.RectangleAnnotation) {\n        setCropAnnotation(annotation);\n        openDocumentCropPopup();\n      }\n      if(action === 'delete' && annotation.ToolName === window.Core.Tools.ToolNames['CROP'] && annotation instanceof window.Annotations.RectangleAnnotation) {\n        setCropAnnotation(null);\n      }\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      const annotation = annotations[0];\n      if(action === 'selected' && annotation.ToolName === window.Core.Tools.ToolNames['CROP'] && annotation instanceof window.Annotations.RectangleAnnotation) {\n        setCropAnnotation(annotation);\n        openDocumentCropPopup();\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n\n  return cropAnnotation;\n}\n","import React, { useEffect, useState, useRef, useCallback } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DocumentCropPopup from './DocumentCropPopup';\nimport './DocumentCropPopup.scss';\nimport Draggable from 'react-draggable';\nimport useOnCropAnnotationChangedOrSelected from '../../hooks/useOnCropAnnotationChangedOrSelected';\nimport useMedia from '../../hooks/useMedia';\n\nfunction DocumentCropPopupContainer() {\n  const cropCreateTool = core.getTool(window.Core.Tools.ToolNames['CROP']);\n  const [isOpen, isInDesktopOnlyMode, presetCropDimensions] = useSelector(state => [\n    selectors.getActiveToolName(state) === window.Core.Tools.ToolNames['CROP'] &&\n      selectors.isElementOpen(state, 'documentCropPopup'),\n    selectors.isInDesktopOnlyMode(state),\n    selectors.getPresetCropDimensions(state),\n  ]);\n  const dispatch = useDispatch();\n  const [isCropping, setIsCropping] = useState(cropCreateTool.getIsCropping());\n\n  const elementsToClose = ['leftPanel', 'searchPanel', 'notesPanel', 'redactionPanel'];\n\n  const openDocumentCropPopup = () => {\n    dispatch(actions.openElement('documentCropPopup'));\n    setSelectedPages(cropCreateTool.getPagesToCrop());\n    instance.UI.closeElements(elementsToClose);\n    setIsCropping(cropCreateTool.getIsCropping());\n  };\n\n  useEffect(() => {\n    const handleToolModeChange = (newTool, oldTool) => {\n      if (newTool instanceof Core.Tools.CropCreateTool) {\n        openDocumentCropPopup();\n      } else if (oldTool instanceof Core.Tools.CropCreateTool) {\n        setIsCropping(cropCreateTool.getIsCropping());\n        reenableHeader();\n      }\n    };\n    core.addEventListener('toolModeUpdated', handleToolModeChange);\n    return () => {\n      core.removeEventListener('toolModeUpdated', handleToolModeChange);\n    };\n  });\n\n  const disableHeader = () => {\n    const header = document.querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = 'none';\n      header.style.opacity = '0.5';\n    }\n\n    const toolsHeader = document.querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = 'none';\n      toolsHeader.style.opacity = '0.5';\n    }\n  };\n\n  const reenableHeader = () => {\n    const header = document.querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = '';\n      header.style.opacity = '1';\n    }\n\n    const toolsHeader = document.querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = '';\n      toolsHeader.style.opacity = '1';\n    }\n  };\n\n  const cropAnnotation = useOnCropAnnotationChangedOrSelected(openDocumentCropPopup);\n\n  // re-enable other tools and panels while not cropping\n  useEffect(() => {\n    if (!isCropping) {\n      reenableHeader();\n    } else {\n      disableHeader();\n    }\n  }, [isCropping]);\n\n  const [cropMode, setCropMode] = useState(null);\n\n  useEffect(() => {\n    cropCreateTool.setCropMode('ALL_PAGES');\n    setCropMode('ALL_PAGES');\n  }, []);\n\n  const onCropModeChange = cropName => {\n    cropCreateTool.setCropMode(cropName);\n    setCropMode(cropName);\n  };\n\n  const [selectedPages, setSelectedPages] = useState(cropCreateTool.getPagesToCrop());\n\n  const onSelectedPagesChange = pages => {\n    if (pages.length) {\n      setSelectedPages(pages);\n      cropCreateTool.setPagesToCrop(pages);\n      if (cropCreateTool.getIsCropping()) {\n        if (cropMode === 'MULTI_PAGE') {\n          cropCreateTool.multiSelectAnnotations(pages);\n        }\n      }\n    }\n  };\n\n  const [documentContainerWidth, documentContainerHeight] = useSelector(state => [\n    selectors.getDocumentContainerWidth(state),\n    selectors.getDocumentContainerHeight(state),\n  ]);\n\n  const cropPopupRef = useRef();\n\n  const popupWidth = cropPopupRef.current?.getBoundingClientRect().width || 0;\n  const popupHeight = cropPopupRef.current?.getBoundingClientRect().height || 0;\n  const headerHeight = document.querySelector('[data-element=header]')?.offsetHeight || 0;\n  const headerToolsHeight = document.querySelector('[data-element=toolsHeader]')?.offsetHeight || 0;\n  const yOffset = headerHeight + headerToolsHeight;\n  const xOffset = documentViewer.getViewerElement()?.getBoundingClientRect().right || 0;\n\n  const cropPopupOffset = () => {\n    const offset = {\n      x: xOffset + 35,\n      y: yOffset + 10,\n    };\n    if (cropAnnotation && cropPopupRef?.current) {\n      offset.x = Math.min(offset.x, documentContainerWidth - popupWidth);\n    }\n    return offset;\n  };\n\n  const cropPopupBounds = () => {\n    const bounds = {\n      top: 0,\n      bottom: documentContainerHeight - popupHeight,\n      left: 0 - cropPopupOffset()['x'],\n      right: documentContainerWidth - cropPopupOffset()['x'] - popupWidth,\n    };\n    return bounds;\n  };\n\n  const closeAndReset = () => {\n    cropCreateTool.reset();\n    if (cropMode === 'MULTI_PAGE') {\n      setPagesToCrop([]);\n      cropCreateTool.setPagesToCrop([]);\n    }\n    dispatch(actions.closeElement('documentCropPopup'));\n    core.setToolMode(window.Core.Tools.ToolNames.CROP);\n  };\n\n  const closeDocumentCropPopup = useCallback(() => {\n    closeAndReset();\n  }, []);\n\n  // disable/enable the 'apply' button when cropping\n  useEffect(() => {\n    setIsCropping(cropCreateTool.getIsCropping());\n  }, [cropAnnotation]);\n\n  const applyCrop = () => {\n    cropCreateTool.applyCrop();\n    cropCreateTool.reset();\n  };\n\n  const getPageHeight = useCallback(pageNumber => {\n    if (isPageRotated(pageNumber)) {\n      return core.getPageWidth(pageNumber);\n    }\n    return core.getPageHeight(pageNumber);\n  }, []);\n\n  const getPageWidth = useCallback(pageNumber => {\n    if (isPageRotated(pageNumber)) {\n      return core.getPageHeight(pageNumber);\n    }\n    return core.getPageWidth(pageNumber);\n  }, []);\n\n  const isPageRotated = useCallback(pageNumber => {\n    return documentViewer?.getDocument().getPageRotation(pageNumber) % 180 !== 0;\n  });\n\n  const getPageCount = useCallback(() => {\n    return documentViewer?.getPageCount();\n  });\n\n  const getCurrentPage = useCallback(() => {\n    return documentViewer?.getCurrentPage();\n  });\n\n  const redrawCropAnnotations = useCallback(rect => {\n    const cropAnnotations = core\n      .getAnnotationManager()\n      .getAnnotationsList()\n      .filter(annot => {\n        return annot.ToolName === window.Core.Tools.ToolNames['CROP'];\n      });\n    cropAnnotations.forEach(annot => {\n      annot.setRect(rect);\n      core.getAnnotationManager().drawAnnotationsFromList([annot]);\n    });\n  }, []);\n\n  const props = {\n    cropAnnotation,\n    cropMode,\n    onCropModeChange,\n    closeDocumentCropPopup,\n    applyCrop,\n    isCropping,\n    getPageHeight,\n    getPageWidth,\n    isPageRotated,\n    redrawCropAnnotations,\n    isInDesktopOnlyMode,\n    getPageCount,\n    getCurrentPage,\n    selectedPages,\n    onSelectedPagesChange,\n    presetCropDimensions,\n  };\n\n  const isMobile = useMedia(['(max-width: 640px)'], [true], false);\n\n  if (isOpen && core.getDocument()) {\n    if (isMobile && !isInDesktopOnlyMode) {\n      //disable draggable on mobile devices\n      return (\n        <div className=\"DocumentCropPopupContainer\" ref={cropPopupRef}>\n          <DocumentCropPopup {...props} isMobile />\n        </div>\n      );\n    } else {\n      return (\n        <Draggable\n          cancel={'input, button, .collapsible-menu, .ui__choice__label'}\n          positionOffset={cropPopupOffset()}\n          bounds={cropPopupBounds()}\n        >\n          <div className=\"DocumentCropPopupContainer\" ref={cropPopupRef}>\n            <DocumentCropPopup {...props} />\n          </div>\n        </Draggable>\n      );\n    }\n  } else {\n    return null;\n  }\n}\n\nexport default DocumentCropPopupContainer;\n","import DocumentCropPopup from './DocumentCropPopupContainer';\n\nexport default DocumentCropPopup;","import React from 'react';\nimport { useSelector } from \"react-redux\";\nimport selectors from 'selectors';\nimport FlyoutMenu from \"components/FlyoutMenu/FlyoutMenu\";\nimport PageRotationControls from \"components/PageManipulationOverlay/PageRotationControls\";\n\nfunction RotatePopup() {\n  const selectedPageIndexes = useSelector(state => selectors.getSelectedThumbnailPageIndexes(state));\n\n  return (\n    <FlyoutMenu menu=\"thumbnailsControlRotatePopup\" trigger=\"thumbnailsControlRotatePopupTrigger\" onClose={undefined}>\n      <PageRotationControls pageNumbers={selectedPageIndexes.map(i => i + 1)} warn/>\n    </FlyoutMenu>\n  );\n}\n\nexport default RotatePopup;","import React from 'react';\nimport { useSelector } from \"react-redux\";\nimport selectors from 'selectors';\nimport FlyoutMenu from \"components/FlyoutMenu/FlyoutMenu\";\nimport PageInsertionControls from \"components/PageManipulationOverlay/PageInsertionControls\";\n\nfunction InsertPopup() {\n  const selectedPageIndexes = useSelector(state => selectors.getSelectedThumbnailPageIndexes(state));\n\n  return (\n    <FlyoutMenu menu=\"thumbnailsControlInsertPopup\" trigger=\"thumbnailsControlInsertPopupTrigger\" onClose={undefined}>\n      <PageInsertionControls pageNumbers={selectedPageIndexes.map(i => i + 1)} warn/>\n    </FlyoutMenu>\n  );\n}\n\nexport default InsertPopup;","import React from 'react';\nimport { useSelector } from \"react-redux\";\nimport selectors from 'selectors';\nimport FlyoutMenu from \"components/FlyoutMenu/FlyoutMenu\";\nimport PageAdditionalControls from \"components/PageManipulationOverlay/PageAdditionalControls\";\n\nfunction MoreOptionsPopup() {\n  const selectedPageIndexes = useSelector(state => selectors.getSelectedThumbnailPageIndexes(state));\n\n  return (\n    <FlyoutMenu menu=\"thumbnailsControlManipulatePopup\" trigger=\"thumbnailsControlManipulatePopupTrigger\" onClose={undefined}>\n      <PageAdditionalControls pageNumbers={selectedPageIndexes.map(i => i + 1)} warn />\n    </FlyoutMenu>\n  );\n}\n\nexport default MoreOptionsPopup;","import React from 'react';\nimport RotatePopup from \"components/LeftPanelOverlay/RotatePopup\";\nimport InsertPopup from \"components/LeftPanelOverlay/InsertPopup\";\nimport MoreOptionsPopup from \"components/LeftPanelOverlay/MoreOptionsPopup\";\n\nfunction LeftPanelOverlayContainer() {\n  return (\n    <>\n      <RotatePopup />\n      <InsertPopup />\n      <MoreOptionsPopup />\n    </>\n  );\n}\n\nexport default LeftPanelOverlayContainer;","import LeftPanelOverlayContainer from \"components/LeftPanelOverlay/LeftPanelOverlayContainer\";\n\nexport default LeftPanelOverlayContainer;","export default {\n  pt_br: {\n    i18next: 'pt-BR',\n    dayjs: 'pt-br',\n  },\n  zh_cn: {\n    i18next: 'zh',\n    dayjs: 'zh-cn',\n  },\n  zh_tw: {\n    i18next: 'zh',\n    dayjs: 'zh-tw',\n  },\n};","/**\n * Set the language of WebViewer UI.\n * @method UI.setLanguage\n * @param {string} language The language WebViewer UI will use. By default, following languages are supported: en, zh_cn, fr.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setLanguage('fr'); // set the language to French\n  });\n */\n\nimport i18next from 'i18next';\nimport core from 'core';\nimport actions from 'actions';\nimport dayjs from 'dayjs';\nimport languageRules from 'constants/languageRules';\n\nexport default store => language => {\n  let languageObj = null;\n  let languageToImportLocaleFile = language;\n\n  if (languageRules[language]) {\n    languageObj = languageRules[language];\n    languageToImportLocaleFile = languageObj.dayjs || language;\n  }\n\n  // load locale file from \"dayjs/locale/\" folder, must match filename\n  import(`dayjs/locale/${languageToImportLocaleFile}.js`).then(() => {\n    dayjs.locale(languageToImportLocaleFile);\n  }).catch(() => {\n    dayjs.locale('en');\n  }).finally(() => {\n    store.dispatch(actions.setLanguage(language));\n    const promise = i18next.changeLanguage(language);\n    setDatePickerLocale(promise, language);\n  });\n};\n\nconst setDatePickerLocale = (i18nextPromise, language) => {\n  i18nextPromise.then(t => {\n    const { DatePickerWidgetAnnotation } = window.Annotations;\n    const obj = t('datePicker', { 'returnObjects': true });\n    const options = DatePickerWidgetAnnotation.datePickerOptions;\n    options['i18n'] = obj;\n    options['local'] = language;\n\n    DatePickerWidgetAnnotation.datePickerOptions = options;\n\n    core.getAnnotationsList()\n      .filter(annot => annot instanceof DatePickerWidgetAnnotation)\n      .forEach(widget => {\n        widget.refreshDatePicker();\n      });\n  });\n};\n","// The values in this array should match the language codes of the json files inside the i18n folder\nexport const languages = [\n  ['en', 'English'],\n  ['cs', 'česky, čeština'],\n  ['de', 'Deutsch'],\n  ['es', 'Español'],\n  ['fr', 'Français'],\n  ['hu', 'Magyar'],\n  ['it', 'Italiano'],\n  ['ja', '日本語'],\n  ['ko', '한국어'],\n  ['nl', 'Nederlands'],\n  ['pt_br', 'Português'],\n  ['pl', 'Polski'],\n  ['ru', 'Pусский'],\n  ['ro', 'Romanian'],\n  ['sv', 'Svenska'],\n  ['th', 'ไทย'],\n  ['vi', 'Tiếng Việt'],\n  ['zh_cn', '简体中文'],\n  ['zh_tw', '繁體中文'],\n];\n\nexport const availableLanguages = languages.map(language => language[0]);\n\n/**\n * Returns all available languages as a list.\n * @method UI.getAvailableLanguages\n * @return {Array<string>} All available languages\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getAvailableLanguages());\n  });\n */\nexport default () => {\n  return availableLanguages;\n};\n","import React, { useState } from 'react';\nimport { useSelector, useDispatch, useStore } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport selectors from 'selectors';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport DataElements from \"constants/dataElement\";\nimport setLanguage from '../../apis/setLanguage';\nimport Button from 'components/Button';\nimport Choice from 'components/Choice';\nimport { languages } from '../../apis/getAvailableLanguages';\nimport { FocusTrap } from '@pdftron/webviewer-react-toolkit';\nimport { Swipeable } from 'react-swipeable';\n\nimport './LanguageModal.scss';\n\nconst LanguageModal = () => {\n  const [\n    isDisabled,\n    isOpen,\n    currentLanguage\n  ] = useSelector(state => [\n    selectors.isElementDisabled(state, DataElements.LANGUAGE_MODAL),\n    selectors.isElementOpen(state, DataElements.LANGUAGE_MODAL),\n    selectors.getCurrentLanguage(state)\n  ]);\n  const [t] = useTranslation();\n  const dispatch = useDispatch();\n  const store = useStore();\n  const [uiLanguage, setUiLanguage] = useState(currentLanguage);\n\n  const className = classNames('Modal', 'LanguageModal', {\n    open: isOpen,\n    closed: !isOpen\n  });\n\n  const closeModal = (resetLang = true) => {\n    dispatch(actions.closeElement(DataElements.LANGUAGE_MODAL));\n    resetLang && setUiLanguage(currentLanguage);\n  };\n\n  const apply = () => {\n    if (uiLanguage !== currentLanguage) {\n      setLanguage(store)(uiLanguage);\n    }\n    closeModal(false);\n  };\n\n  return isDisabled ? null : (\n    <Swipeable onSwipedUp={closeModal} onSwipedDown={closeModal} preventDefaultTouchmoveEvent>\n      <FocusTrap locked={isOpen}>\n        <div className={className} data-element={DataElements.LANGUAGE_MODAL} onClick={closeModal}>\n          <div className=\"container\" onClick={e => e.stopPropagation()}>\n            <div className=\"swipe-indicator\" />\n            <div className=\"header\">\n              <div>{t('languageModal.selectLanguage')}</div>\n              <Button\n                img=\"icon-close\"\n                onClick={closeModal}\n                title=\"action.cancel\"\n              />\n            </div>\n            <div className=\"divider\"></div>\n            <div className=\"body\">\n              {languages.map(language => (\n                <div key={language[0]}>\n                  <Choice\n                    radio\n                    checked={uiLanguage === language[0]}\n                    onChange={() => setUiLanguage(language[0])}\n                    label={language[1]}\n                    name=\"ui_language\"\n                  />\n                </div>\n              ))}\n            </div>\n            <div className=\"divider\"></div>\n            <div className=\"footer\">\n              <Button\n                className=\"confirm modal-button\"\n                label=\"action.apply\"\n                onClick={apply}\n              />\n            </div>\n          </div>\n        </div>\n      </FocusTrap>\n    </Swipeable>\n  );\n};\n\nexport default LanguageModal;\n","import LanguageModal from './LanguageModal';\n\nexport default LanguageModal;","export default [\n  'viewControlsOverlay',\n  'searchOverlay',\n  'menuOverlay',\n  'zoomOverlay',\n  'toolsOverlay',\n  'toolStylePopup',\n  'stampOverlay',\n  'signatureOverlay',\n  'measurementOverlay'\n];","import { hot } from 'react-hot-loader/root';\nimport React, { useEffect } from 'react';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport selectors from 'selectors';\nimport core from 'core';\nimport actions from 'actions';\n\nimport Accessibility from 'components/Accessibility';\nimport Header from 'components/Header';\nimport ToolsHeader from 'components/Header/ToolsHeader';\nimport ViewControlsOverlay from 'components/ViewControlsOverlay';\nimport MenuOverlay from 'components/MenuOverlay';\nimport AnnotationContentOverlay from 'components/AnnotationContentOverlay';\nimport DocumentContainer from 'components/DocumentContainer';\nimport LeftPanel from 'components/LeftPanel';\nimport NotesPanel from 'components/NotesPanel';\nimport SearchPanel from 'components/SearchPanel';\nimport RightPanel from 'components/RightPanel';\nimport AnnotationPopup from 'components/AnnotationPopup';\nimport TextPopup from 'components/TextPopup';\nimport ContextMenuPopup from 'components/ContextMenuPopup';\nimport RichTextPopup from 'components/RichTextPopup';\nimport SignatureModal from 'components/SignatureModal';\nimport PrintModal from 'components/PrintModal';\nimport LoadingModal from 'components/LoadingModal';\nimport ErrorModal from 'components/ErrorModal';\nimport WarningModal from 'components/WarningModal';\nimport SignatureValidationModal from 'components/SignatureValidationModal';\nimport PasswordModal from 'components/PasswordModal';\nimport ProgressModal from 'components/ProgressModal';\nimport CalibrationModal from 'components/CalibrationModal';\nimport LinkModal from 'components/LinkModal';\nimport ContentEditModal from 'components/ContentEditModal';\nimport FilterAnnotModal from 'components/FilterAnnotModal';\nimport FilePickerHandler from 'components/FilePickerHandler';\nimport CopyTextHandler from 'components/CopyTextHandler';\nimport PrintHandler from 'components/PrintHandler';\nimport FontHandler from 'components/FontHandler';\nimport ZoomOverlay from 'components/ZoomOverlay';\nimport CreateStampModal from 'components/CreateStampModal';\nimport PageReplacementModal from 'src/components/PageReplacementModal';\nimport CustomModal from 'components/CustomModal';\nimport Model3DModal from 'components/Model3DModal';\nimport FormFieldEditPopup from 'components/FormFieldEditPopup';\nimport ColorPickerModal from 'components/ColorPickerModal';\nimport PageManipulationOverlay from 'components/PageManipulationOverlay';\nimport PageRedactionModal from 'components/PageRedactionModal';\nimport RedactionPanel from 'components/RedactionPanel';\nimport Wv3dPropertiesPanel from 'components/Wv3dPropertiesPanel';\nimport AudioPlaybackPopup from 'components/AudioPlaybackPopup';\nimport DocumentCropPopup from 'components/DocumentCropPopup';\nimport LeftPanelOverlayContainer from 'components/LeftPanelOverlay';\nimport LanguageModal from 'components/LanguageModal';\n\nimport loadDocument from 'helpers/loadDocument';\nimport getHashParameters from 'helpers/getHashParameters';\nimport fireEvent from 'helpers/fireEvent';\nimport { prepareMultiTab } from 'helpers/TabManager';\n\nimport Events from 'constants/events';\nimport overlays from 'constants/overlays';\n\nimport './App.scss';\n\n// TODO: Use constants\nconst tabletBreakpoint = window.matchMedia('(min-width: 641px) and (max-width: 900px)');\n\nconst propTypes = {\n  removeEventHandlers: PropTypes.func.isRequired,\n};\n\nconst App = ({ removeEventHandlers }) => {\n  const store = useStore();\n  const dispatch = useDispatch();\n  let timeoutReturn;\n\n  const [isInDesktopOnlyMode] = useSelector(state => [selectors.isInDesktopOnlyMode(state)]);\n\n  useEffect(() => {\n    fireEvent(Events.VIEWER_LOADED);\n    window.parent.postMessage(\n      {\n        type: 'viewerLoaded',\n        id: parseInt(getHashParameters('id'), 10),\n      },\n      '*',\n    );\n\n    function loadInitialDocument() {\n      const doesAutoLoad = getHashParameters('auto_load', true);\n      let initialDoc = getHashParameters('d', '');\n      initialDoc = initialDoc ? JSON.parse(initialDoc) : '';\n      initialDoc = Array.isArray(initialDoc) ? initialDoc : [initialDoc];\n      const isMultiDoc = initialDoc.length > 1;\n      const startOffline = getHashParameters('startOffline', false);\n      const basePath = getHashParameters('basePath', '');\n      window.Core.setBasePath(basePath);\n\n      if (isMultiDoc) {\n        prepareMultiTab(initialDoc, store);\n        initialDoc = initialDoc[0];\n        if ((initialDoc && doesAutoLoad) || startOffline) {\n          const options = {\n            externalPath: getHashParameters('p', ''),\n            documentId: getHashParameters('did', null),\n          };\n          loadDocument(dispatch, initialDoc, options);\n        }\n      } else {\n        initialDoc = initialDoc[0];\n        if ((initialDoc && doesAutoLoad) || startOffline) {\n          const options = {\n            extension: getHashParameters('extension', null),\n            filename: getHashParameters('filename', null),\n            externalPath: getHashParameters('p', ''),\n            documentId: getHashParameters('did', null),\n          };\n\n          loadDocument(dispatch, initialDoc, options);\n        }\n      }\n    }\n\n    function loadDocumentAndCleanup() {\n      loadInitialDocument();\n      window.removeEventListener('message', messageHandler);\n      clearTimeout(timeoutReturn);\n    }\n\n    function messageHandler(event) {\n      if (event.isTrusted && typeof event.data === 'object' && event.data.type === 'viewerLoaded') {\n        loadDocumentAndCleanup();\n      }\n    }\n\n    window.addEventListener('blur', () => {\n      dispatch(actions.closeElements(overlays));\n    });\n    window.addEventListener('message', messageHandler, false);\n\n    // In case WV is used outside of iframe, postMessage will not\n    // receive the message, and this timeout will trigger loadInitialDocument\n    timeoutReturn = setTimeout(loadDocumentAndCleanup, 500);\n\n    return removeEventHandlers;\n  }, []);\n\n  useEffect(() => {\n    const setTabletState = () => {\n      // TODO: Use constants\n      dispatch(actions.setLeftPanelWidth(251));\n      dispatch(actions.setNotesPanelWidth(293));\n      dispatch(actions.setSearchPanelWidth(293));\n    };\n\n    const onBreakpoint = () => {\n      if (tabletBreakpoint.matches) {\n        setTabletState();\n      }\n    };\n    tabletBreakpoint.addListener(onBreakpoint);\n  }, []);\n\n  return (\n    <React.Fragment>\n      <div className={classNames({ 'App': true, 'is-in-desktop-only-mode': isInDesktopOnlyMode })}>\n        <Accessibility />\n\n        <Header />\n        <ToolsHeader />\n        <div className=\"content\">\n          <LeftPanel />\n          <DocumentContainer />\n          <RightPanel dataElement=\"searchPanel\" onResize={width => dispatch(actions.setSearchPanelWidth(width))}>\n            <SearchPanel />\n          </RightPanel>\n          <RightPanel dataElement=\"notesPanel\" onResize={width => dispatch(actions.setNotesPanelWidth(width))}>\n            <NotesPanel />\n          </RightPanel>\n          <RightPanel dataElement=\"redactionPanel\" onResize={width => dispatch(actions.setRedactionPanelWidth(width))}>\n            <RedactionPanel />\n          </RightPanel>\n          <RightPanel\n            dataElement=\"wv3dPropertiesPanel\"\n            onResize={width => dispatch(actions.setWv3dPropertiesPanelWidth(width))}\n          >\n            <Wv3dPropertiesPanel />\n          </RightPanel>\n        </div>\n        <ViewControlsOverlay />\n        <MenuOverlay />\n        <ZoomOverlay />\n        <AnnotationContentOverlay />\n        <PageManipulationOverlay />\n        <LeftPanelOverlayContainer />\n\n        <AnnotationPopup />\n        <FormFieldEditPopup />\n        <TextPopup />\n        <ContextMenuPopup />\n        <RichTextPopup />\n        <SignatureModal />\n        <PrintModal />\n        <LoadingModal />\n        <ErrorModal />\n        <WarningModal />\n        <PasswordModal />\n        <ProgressModal />\n        <CalibrationModal />\n        <CreateStampModal />\n        <PageReplacementModal />\n        <LinkModal />\n        <ContentEditModal />\n        <FilterAnnotModal />\n        <CustomModal />\n        <Model3DModal />\n        <ColorPickerModal />\n        <PageRedactionModal />\n        <AudioPlaybackPopup />\n        <DocumentCropPopup />\n        {core.isFullPDFEnabled() && <SignatureValidationModal />}\n        <LanguageModal />\n      </div>\n\n      <PrintHandler />\n      <FilePickerHandler />\n      <CopyTextHandler />\n      <FontHandler />\n    </React.Fragment>\n  );\n};\n\nApp.propTypes = propTypes;\n\nexport default hot(App);\n","import App from './App';\n\nexport default App;","export default docType =>\n  (docType === 'auto' || docType === 'wait'\n    ? window.Core.getDefaultBackendType()\n    : Promise.resolve(docType));\n","import PropTypes from 'prop-types';\n\nconst wildCardMatch = (allowedOrigins, origin) => allowedOrigins.filter(allowedOrigin => wildcardToRegExp(allowedOrigin).test(origin)).length;\n\n// Creates a RegExp from the given string, converting asterisks to .* expressions,\n// and escaping all other characters.\nconst wildcardToRegExp = s => {\n  return new RegExp(`^${s.split(/\\*+/).map(regExpEscape).join('.*')}$`);\n};\n\n// RegExp-escapes all characters in the given string\nconst regExpEscape = s => {\n  return s.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nwildCardMatch.PropTypes = {\n  allowedOrigins: PropTypes.array,\n  origin: PropTypes.string\n};\n\nexport default wildCardMatch;","import getHashParameters from 'helpers/getHashParameters';\nimport wildCardMatch from 'helpers/wildCardMatch';\n\nconst loadScript = (scriptSrc, warning) =>\n  new Promise(resolve => {\n    if (!scriptSrc) {\n      return resolve();\n    }\n\n    const script = document.createElement('script');\n    script.type = 'text/javascript';\n    script.onload = function() {\n      resolve();\n    };\n    script.onerror = function() {\n      if (warning) {\n        console.warn(warning);\n      }\n      resolve();\n    };\n    script.src = scriptSrc;\n    document.getElementsByTagName('head')[0].appendChild(script);\n  });\n\n// communicates with the parent window to get the URL of the config file and loads it\n// ignore subsequent messages after successfully loads a config file\nconst loadConfig = () =>\n  new Promise(resolve => {\n    if (window.parent === window) {\n      // resolve immediately if we are developing the UI on its own\n      resolve();\n    } else {\n      window.addEventListener('message', async function loadConfig(e) {\n        if (e.data.type === 'responseConfig') {\n          const { value } = e.data;\n\n          try {\n            if (value) {\n              if (e.origin !== window.location.origin) {\n                const response = await fetch('configorigin.txt');\n\n                let data = '';\n                if (response.status === 200) {\n                  data = await response.text();\n                }\n\n                data = data.replace(/\\r|\\t/g, '\\n');\n                const allowedOrigins = data.split('\\n').filter(Boolean);\n                if (!wildCardMatch(allowedOrigins, `${e.origin}`)) {\n                  console.warn(`Config file requested to be loaded by origin ${e.origin}. Please include this origin inside lib/ui/configorigin.txt to allow it to request config files.`);\n                  return;\n                }\n              }\n\n              await loadScript(e.data.value, 'Config script could not be loaded');\n              window.removeEventListener('message', loadConfig);\n            }\n          } finally {\n            resolve();\n          }\n        }\n      });\n\n      window.parent.postMessage({\n        type: 'requestConfig',\n        id: parseInt(getHashParameters('id'), 10),\n      }, '*');\n    }\n  });\n\nexport default loadScript;\nexport { loadConfig };","\nexport default totalPages => new Array(totalPages).fill().map((_, index) => `${index + 1}`);","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default dispatch => checkStampAnnotation => {\n  core.setToolMode(defaultTool);\n  core.getTool(ToolNames.FORM_FILL_CHECKMARK).hidePreview();\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(checkStampAnnotation);\n};","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default dispatch => crossStampAnnotation => {\n  core.setToolMode(defaultTool);\n  core.getTool(ToolNames.FORM_FILL_CROSS).hidePreview();\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(crossStampAnnotation);\n};","export default (dataElement, state) => getLeftPanelDataElements(state).includes(dataElement);\n\nexport const getLeftPanelDataElements = state => {\n  const defaultLeftPanels = [\n    'notesPanel',\n    'thumbnailsPanel',\n    'outlinesPanel',\n    'layersPanel',\n    'bookmarksPanel',\n    'signaturePanel',\n  ];\n  const customPanels = state.viewer.customPanels.map(({ panel }) => panel.dataElement);\n\n  return [...defaultLeftPanels, ...customPanels];\n};\n","export default layers => {\n  const newLayers = [];\n  if (layers) {\n    layers.forEach((layer, index) => {\n      const newLayer = createNewLayer(layer, `${index}`, layer.locked);\n      newLayers.push(newLayer);\n      newLayer.children = setIdsForChildren(layer.children, `${newLayer.id}`, newLayer.disabled, []);\n    });\n  }\n  return newLayers;\n};\n\nconst setIdsForChildren = (layers, parentLayerId, isParentDisabled, resultSoFar) => {\n  if (!layers || layers.length === 0) {\n    return resultSoFar;\n  }\n  layers.forEach((layer, index) => {\n    const newLayer = createNewLayer(layer, `${parentLayerId}-${index}`, isParentDisabled || layer.locked);\n    if (layer.children && layer.children.length > 0) {\n      newLayer.children = setIdsForChildren(layer.children, `${newLayer.id}`, newLayer.disabled, []);\n    }\n    resultSoFar.push(newLayer);\n  });\n  return resultSoFar;\n};\n\nconst createNewLayer = (layer, layerId, isDisabled) => {\n  const newLayer = {\n    ...layer,\n    children: [],\n    prevVisibleState: !!layer.visible,\n    visible: !!layer.visible,\n    id: layerId,\n    disabled: !!isDisabled,\n    // this is how WV core knows it is a label\n    isLabel: (layer.visible === undefined && layer.obj === undefined)\n  };\n  return newLayer;\n};","import actions from 'actions';\nimport equal from 'fast-deep-equal';\nimport setUIPropertiesForLayers from 'helpers/setUIPropertiesForLayers';\n\nexport default (newOCGLayers, currentOCGLayers, dispatch) => {\n  const isEqual = equal(newOCGLayers, currentOCGLayers);\n  if (!isEqual) {\n    const layersToSet = setUIPropertiesForLayers(newOCGLayers);\n    dispatch(actions.setLayers(layersToSet));\n  }\n};","import core from 'core';\nimport getHashParameters from 'helpers/getHashParameters';\nimport fireEvent from 'helpers/fireEvent';\nimport { getLeftPanelDataElements } from 'helpers/isDataElementPanel';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { workerTypes } from 'constants/types';\nimport { PRIORITY_ONE, PRIORITY_TWO } from 'constants/actionPriority';\nimport Events from 'constants/events';\nimport { print } from 'helpers/print';\nimport outlineUtils from 'helpers/OutlineUtils';\n\nimport onLayersUpdated from './onLayersUpdated';\n\nlet onFirstLoad = true;\n\nexport default store => async () => {\n  const { dispatch, getState } = store;\n\n  dispatch(actions.openElement('pageNavOverlay'));\n  dispatch(actions.setLoadingProgress(1));\n\n  // set timeout so that progress modal can show progress bar properly\n  setTimeout(() => {\n    dispatch(actions.closeElement('progressModal'));\n    dispatch(actions.resetLoadingProgress());\n  }, 300);\n\n  if (onFirstLoad) {\n    onFirstLoad = false;\n    // redaction button starts hidden. when the user first loads a document, check HashParams the first time\n    core.enableRedaction(getHashParameters('enableRedaction', false) || core.isCreateRedactionEnabled());\n    // if redaction is already enabled for some reason (i.e. calling instance.enableRedaction() before loading a doc), keep it enabled\n\n    if (core.isCreateRedactionEnabled()) {\n      dispatch(actions.enableElement('redactionToolGroupButton', PRIORITY_ONE));\n      dispatch(actions.enableElement('pageRedactionToolGroupButton', PRIORITY_ONE));\n    } else {\n      dispatch(actions.disableElement('redactionToolGroupButton', PRIORITY_TWO));\n      dispatch(actions.disableElement('pageRedactionToolGroupButton', PRIORITY_TWO));\n    }\n  }\n\n  if (getHashParameters('a', false)) {\n    core.getDocumentViewer().enableAnnotations();\n  } else {\n    core.getDocumentViewer().disableAnnotations();\n  }\n\n  core.getOutlines(outlines => {\n    dispatch(actions.setOutlines(outlines));\n  });\n\n  const doc = core.getDocument();\n  doc.addEventListener('bookmarksUpdated', () => core.getOutlines(outlines => dispatch(actions.setOutlines(outlines))));\n\n  outlineUtils.setDoc(core.getDocument());\n\n  if (!doc.isWebViewerServerDocument()) {\n    doc.addEventListener('layersUpdated', async () => {\n      const newLayers = await doc.getLayersArray();\n      const currentLayers = selectors.getLayers(getState());\n      onLayersUpdated(newLayers, currentLayers, dispatch);\n    });\n    doc.getLayersArray().then(layers => {\n      if (layers.length === 0) {\n        dispatch(actions.disableElement('layersPanel', PRIORITY_ONE));\n        dispatch(actions.disableElement('layersPanelButton', PRIORITY_ONE));\n\n        const state = getState();\n        const activeLeftPanel = selectors.getActiveLeftPanel(state);\n        if (activeLeftPanel === 'layersPanel') {\n          // set the active left panel to another one that's not disabled so that users don't see a blank left panel\n          const nextActivePanel = getLeftPanelDataElements(state).find(\n            dataElement => !selectors.isElementDisabled(state, dataElement),\n          );\n          dispatch(actions.setActiveLeftPanel(nextActivePanel));\n        }\n      } else {\n        dispatch(actions.enableElement('layersPanel', PRIORITY_ONE));\n        dispatch(actions.enableElement('layersPanelButton', PRIORITY_ONE));\n        onLayersUpdated(layers, undefined, dispatch);\n      }\n    });\n  }\n\n  const docType = doc.getType();\n  if (docType === workerTypes.PDF || (docType === workerTypes.WEBVIEWER_SERVER && !doc.isWebViewerServerDocument())) {\n    dispatch(actions.enableElement('cropToolGroupButton', PRIORITY_ONE));\n    dispatch(actions.enableElement('contentEditButton', PRIORITY_ONE));\n  } else {\n    dispatch(actions.disableElement('cropToolGroupButton', PRIORITY_ONE));\n    dispatch(actions.disableElement('contentEditButton', PRIORITY_ONE));\n  }\n\n  if (core.isFullPDFEnabled()) {\n    const PDFNet = window.Core.PDFNet;\n    const docViewer = core.getDocumentViewer();\n    let isDocumentClosed = false;\n    const documentUnloadedHandler = () => {\n      isDocumentClosed = true;\n    };\n\n    const checkIfDocumentClosed = () => {\n      if (isDocumentClosed) {\n        docViewer.removeEventListener('documentUnloaded', documentUnloadedHandler);\n        throw new Error('setPageLabels is cancelled because the document got closed.');\n      }\n    };\n\n    docViewer.addEventListener('documentUnloaded', documentUnloadedHandler, { 'once': true });\n    checkIfDocumentClosed();\n    const pdfDoc = await docViewer.getDocument().getPDFDoc();\n    if (!pdfDoc) {\n      return;\n    }\n\n    PDFNet.initialize().then(() => {\n      const main = async () => {\n        try {\n          checkIfDocumentClosed();\n          const pageCount = await pdfDoc.getPageCount();\n          const pageLabels = [];\n\n          for (let i = 1; i <= pageCount; i++) {\n            checkIfDocumentClosed();\n            const pageLabel = await pdfDoc.getPageLabel(i);\n            checkIfDocumentClosed();\n            const label = await pageLabel.getLabelTitle(i);\n            pageLabels.push(label.length > 0 ? label : i.toString());\n          }\n\n          checkIfDocumentClosed();\n          store.dispatch(actions.setPageLabels(pageLabels));\n        } catch (e) {\n          console.warn(e);\n        }\n      };\n\n      PDFNet.runWithCleanup(main);\n    });\n  }\n\n  window.instance.UI.loadedFromServer = false;\n  window.instance.UI.serverFailed = false;\n\n  window.documentViewer\n    .getAnnotationManager()\n    .getFieldManager()\n    .setPrintHandler(() => {\n      print(\n        store.dispatch,\n        selectors.isEmbedPrintSupported(store.getState()),\n        selectors.getSortStrategy(store.getState()),\n        selectors.getColorMap(store.getState())\n      );\n    });\n\n  // init zoom level value in redux\n  dispatch(actions.setZoom(core.getZoom()));\n\n  fireEvent(Events.DOCUMENT_LOADED);\n};\n","import actions from 'actions';\nimport core from 'core';\nimport overlays from '../constants/overlays';\n\nexport default dispatch => () => {\n  dispatch(\n    actions.closeElements([\n      'pageNavOverlay',\n      'notesPanel',\n      'searchPanel',\n      'leftPanel',\n      'signatureValidationModal',\n      'audioPlaybackPopup',\n      'redactionPanel',\n      'wv3dPropertiesPanel',\n      ...overlays,\n    ]),\n  );\n  dispatch(actions.setOutlines([]));\n  dispatch(actions.setBookmarks({}));\n  dispatch(actions.setTotalPages(0));\n  dispatch(actions.setSearchValue(''));\n  dispatch(actions.setZoom(1));\n  core.clearSearchResults();\n};\n","import core from 'core';\nimport actions from 'actions';\nimport localStorageManager from 'helpers/localStorageManager';\n\nexport default dispatch => tool => {\n  const toolName = tool.name;\n  const toolStyles = tool.defaults;\n\n  if (toolStyles && localStorageManager.isLocalStorageEnabled()) {\n    storeStyle(toolName, toolStyles);\n  }\n\n  const currentTool = core.getToolMode();\n  if (currentTool && currentTool.name === toolName) {\n    dispatch(actions.setActiveToolStyles(toolStyles));\n  }\n};\n\nconst storeStyle = (toolName, toolStyles) => {\n  try {\n    localStorage.setItem(`toolData-${toolName}`, JSON.stringify(toolStyles));\n  } catch (err) {\n    console.warn(`localStorage could not be accessed. ${err.message}`);\n  }\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (dispatch, store) => (newTool, oldTool) => {\n  if (oldTool && oldTool.name === 'TextSelect') {\n    core.clearSelection();\n    dispatch(actions.closeElement('textPopup'));\n  }\n\n  dispatch(actions.setActiveToolNameAndStyle(newTool));\n\n  const state = store.getState();\n  const activeToolGroup = selectors.getActiveToolGroup(state);\n  const activeToolName = selectors.getActiveToolName(state);\n  if (activeToolName === 'AnnotationEdit' && activeToolGroup === 'signatureTools') {\n    return;\n  }\n  const { group = '' } = selectors.getToolButtonObject(state, newTool.name);\n  setActiveToolGroupAndToolsOverlay(store, group);\n};\n\nconst setActiveToolGroupAndToolsOverlay = (store, group) => {\n  if (!group) {\n    store.dispatch(actions.setActiveToolGroup(''));\n    store.dispatch(actions.closeElement('toolsOverlay'));\n  } else {\n    store.dispatch(actions.setActiveToolGroup(group));\n    store.dispatch(actions.openElement('toolsOverlay'));\n  }\n};","import getHashParameters from 'helpers/getHashParameters';\nimport core from 'core';\n\n\nexport default () => (annotations, action, info) => {\n  if (action === 'delete') {\n    deleteReplies(annotations);\n  }\n\n  const selectAnnotationOnCreation = getHashParameters('selectAnnotationOnCreation', false);\n  if (selectAnnotationOnCreation) {\n    if (action === 'add' && !info.imported) {\n      if (annotations.length > 0 && !annotations[0].InReplyTo) {\n        core.selectAnnotation(annotations[0]);\n      }\n    }\n  }\n};\n\nconst deleteReplies = annotations => {\n  annotations.forEach(annotation => {\n    core.deleteAnnotations(annotation.getReplies(), { 'imported': false, 'force': true });\n  });\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default store => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  if (!(await signatureTool.isEmptySignature())) {\n    await signatureTool.addSignature();\n  } else {\n    !selectors.isElementDisabled(store.getState(), 'toolbarGroup-Insert') && store.dispatch(actions.setToolbarGroup('toolbarGroup-Insert'));\n    // this condition is usually met when we click on a signature widget but UI doesn't know which signature to draw\n    // we check if there are saved signatures in the signature overlay to determine which component we should open\n    store.dispatch(actions.setActiveToolGroup('signatureTools'));\n    store.dispatch(actions.openElement('toolsOverlay'));\n\n    const isToolsOverlayDisabled = selectors.isElementDisabled(store.getState(), 'toolsOverlay') || selectors.isElementDisabled(store.getState(), 'toolsHeader');\n    const savedSignatures = selectors.getSavedSignatures(store.getState(), 'signatureOverlay');\n    if (savedSignatures.length === 0 || isToolsOverlayDisabled) {\n      store.dispatch(actions.openElement('signatureModal'));\n    } else {\n      core.setToolMode(window.Core.Tools.ToolNames.SIGNATURE);\n      store.dispatch(actions.openElement('toolStylePopup'));\n    }\n  }\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default dispatch => dotStampAnnotation => {\n  core.setToolMode(defaultTool);\n  core.getTool(ToolNames.FORM_FILL_DOT).hidePreview();\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(dotStampAnnotation);\n};\n","/**\n * Unmount multiple elements in the DOM. Note that this ONLY removes the DOM elements without disabling related features.\n * @method UI.disableElements\n * @param {string[]} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://www.pdftron.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // remove left panel and left panel button from the DOM\n    instance.UI.disableElements([ 'leftPanel', 'leftPanelButton' ]);\n  });\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // remove the 'Edit' toolbar group\n    instance.UI.disableElements(['toolbarGroup-Edit']);\n  });\n */\n\n\nimport actions from 'actions';\nimport { PRIORITY_THREE } from 'constants/actionPriority';\n\nexport default store => dataElements => {\n  if (typeof dataElements === 'string') {\n    store.dispatch(actions.disableElement(dataElements, PRIORITY_THREE));\n  }\n\n  store.dispatch(actions.disableElements(dataElements, PRIORITY_THREE));\n};","/**\n * Remount the hidden elements in the DOM.\n * @method UI.enableElements\n * @param {string[]} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://www.pdftron.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // remove left panel and left panel button from the DOM\n    instance.UI.enableElements([ 'leftPanel', 'leftPanelButton' ]);\n  });\n */\n\nimport actions from 'actions';\nimport { PRIORITY_THREE } from 'constants/actionPriority';\n\nexport default store => dataElements => {\n  if (typeof dataElements === 'string') {\n    return store.dispatch(actions.enableElement(dataElements, PRIORITY_THREE));\n  }\n  return store.dispatch(actions.enableElements(dataElements, PRIORITY_THREE));\n};","import core from 'core';\n\n// a flag promise that's used to make sure that function calls to getSignatureDataToStore\n// will resolve in the same order as they were called\nlet previewsPromise = Promise.resolve();\n// returns an array of objects in the shape of: { annotation, preview }\n// annotation: a copy of the annotation passed in\n// imgSrc: preview of the annotation, a base64 string\nexport default async annotations => {\n  // copy the annotation because we need to mutate the annotation object later if there're any styles changes\n  // and we don't want the original annotation to be mutated as well\n  // since it's been added to the canvas\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const newAnnotations = annotations.map(core.getAnnotationCopy);\n\n  await previewsPromise;\n\n  previewsPromise = Promise.all(\n    newAnnotations.map(annotation => {\n      const oldStrokeThickness = annotation['StrokeThickness'];\n      // Temporarily changing stroke thickness to 6 because it looks better in the preview image\n      annotation['StrokeThickness'] = 6;\n      const preview = signatureTool.getPreview(annotation);\n      annotation['StrokeThickness'] = oldStrokeThickness;\n      return preview;\n    }),\n  );\n\n  const previews = await previewsPromise;\n  return newAnnotations.map((annotation, i) => ({\n    annotation,\n    imgSrc: previews[i],\n  }));\n};\n","export default () => async (/* widget */) => {\n  if (!window.Core.isFullPDFEnabled()) {\n    return;\n  }\n\n  await window.PDFNet.initialize(undefined, window.Core.BackendTypes.WASM);\n\n  // const pdfDoc = await window.documentViewer.getDocument().getPDFDoc();\n  // const fieldName = widget.getField().name;\n  // const field = await pdfDoc.getDigitalSignatureField(fieldName);\n  /**\n   * @todo Originally implementated for the Digital Signature Validation Modal?\n   *\n   * https://github.com/PDFTron/webviewer-ui/blob/2cbf53f21a89f096284bc2902577ff86b58c75e1/src/event-listeners/onDigitalSignatureAvailable.js\n   *\n   * Still requires a return value.\n   */\n};\n","import * as eventListeners from 'src/event-listeners';\nimport hotkeysManager from 'helpers/hotkeysManager';\nimport core from 'core';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default store => {\n  const { dispatch } = store;\n  const onBeforeDocumentLoaded = eventListeners.onBeforeDocumentLoaded(dispatch);\n  const onCheckStampAnnotationAdded = eventListeners.onCheckStampAnnotationAdded(dispatch);\n  const onCrossStampAnnotationAdded = eventListeners.onCrossStampAnnotationAdded(dispatch);\n  const onDisplayModeUpdated = eventListeners.onDisplayModeUpdated(dispatch);\n  const onDocumentLoaded = eventListeners.onDocumentLoaded(store);\n  const onDocumentUnloaded = eventListeners.onDocumentUnloaded(dispatch);\n  const onFitModeUpdated = eventListeners.onFitModeUpdated(dispatch);\n  const onRotationUpdated = eventListeners.onRotationUpdated(dispatch);\n  const onToolUpdated = eventListeners.onToolUpdated(dispatch);\n  const onToolModeUpdated = eventListeners.onToolModeUpdated(dispatch, store);\n  const onZoomUpdated = eventListeners.onZoomUpdated(dispatch);\n  const onPageNumberUpdated = eventListeners.onPageNumberUpdated(dispatch);\n  const onUpdateAnnotationPermission = eventListeners.onUpdateAnnotationPermission(store);\n  const onAnnotationChanged = eventListeners.onAnnotationChanged(dispatch);\n  const onStampAnnotationAdded = eventListeners.onStampAnnotationAdded(dispatch);\n  const onSignatureAnnotationAdded = eventListeners.onSignatureAnnotationAdded(dispatch);\n  const onStickyAnnotationAdded = eventListeners.onStickyAnnotationAdded(store);\n  const onFullScreenChange = eventListeners.onFullScreenChange(store);\n  const onPagesUpdated = eventListeners.onPagesUpdated(dispatch);\n  const onLocationSelected = eventListeners.onLocationSelected(store);\n  const onDotStampAnnotationAdded = eventListeners.onDotStampAnnotationAdded(dispatch);\n  const onRubberStampAnnotationAdded = eventListeners.onRubberStampAnnotationAdded(dispatch);\n  const onReadOnlyModeChanged = eventListeners.onReadOnlyModeChanged(store);\n  const onPageComplete = eventListeners.onPageComplete(store);\n  const onFileAttachmentAnnotationAdded = eventListeners.onFileAttachmentAnnotationAdded(dispatch);\n  const onFileAttachmentDataAvailable = eventListeners.onFileAttachmentDataAvailable(dispatch);\n  const onSignatureSaved = eventListeners.onSignatureSaved(dispatch, store);\n  const onSignatureDeleted = eventListeners.onSignatureDeleted(dispatch, store);\n  const onHistoryChanged = eventListeners.onHistoryChanged(dispatch, store);\n  const onFormFieldCreationModeStarted = eventListeners.onFormFieldCreationModeStarted(dispatch);\n  const onFormFieldCreationModeEnded = eventListeners.onFormFieldCreationModeEnded(dispatch, store);\n  const onDigitalSignatureAvailable = eventListeners.onDigitalSignatureAvailable(dispatch);\n\n  return {\n    addEventHandlers: () => {\n      core.addEventListener('beforeDocumentLoaded', onBeforeDocumentLoaded);\n      core.addEventListener('beforeDocumentLoaded', onBeforeDocumentLoaded);\n      core.addEventListener('displayModeUpdated', onDisplayModeUpdated);\n      core.addEventListener('documentLoaded', onDocumentLoaded);\n      core.addEventListener('documentUnloaded', onDocumentUnloaded);\n      core.addEventListener('fitModeUpdated', onFitModeUpdated);\n      core.addEventListener('rotationUpdated', onRotationUpdated);\n      core.addEventListener('toolUpdated', onToolUpdated);\n      core.addEventListener('toolModeUpdated', onToolModeUpdated);\n      core.addEventListener('zoomUpdated', onZoomUpdated);\n      core.addEventListener('pageNumberUpdated', onPageNumberUpdated);\n      core.addEventListener('pagesUpdated', onPagesUpdated);\n      core.addEventListener('readOnlyModeChanged', onReadOnlyModeChanged);\n      core.addEventListener('updateAnnotationPermission', onUpdateAnnotationPermission);\n      core.addEventListener('annotationChanged', onAnnotationChanged);\n      core.addEventListener('historyChanged', onHistoryChanged);\n      core.addEventListener('pageComplete', onPageComplete);\n      core.addEventListener('fileAttachmentDataAvailable', onFileAttachmentDataAvailable);\n      core.addEventListener('formFieldCreationModeStarted', onFormFieldCreationModeStarted);\n      core.addEventListener('formFieldCreationModeEnded', onFormFieldCreationModeEnded);\n      core.addEventListener('digitalSignatureAvailable', onDigitalSignatureAvailable);\n      core.getTool('AnnotationCreateStamp').addEventListener('annotationAdded', onStampAnnotationAdded);\n      core.getTool('AnnotationCreateSticky').addEventListener('annotationAdded', onStickyAnnotationAdded);\n      core.getTool('AnnotationCreateSticky2').addEventListener('annotationAdded', onStickyAnnotationAdded);\n      core.getTool('AnnotationCreateSticky3').addEventListener('annotationAdded', onStickyAnnotationAdded);\n      core.getTool('AnnotationCreateSticky4').addEventListener('annotationAdded', onStickyAnnotationAdded);\n      core.getTool('AnnotationCreateSignature').addEventListener('locationSelected', onLocationSelected);\n      core.getTool('AnnotationCreateSignature').addEventListener('annotationAdded', onSignatureAnnotationAdded);\n      core.getTool('AnnotationCreateSignature').addEventListener('signatureSaved', onSignatureSaved);\n      core.getTool('AnnotationCreateSignature').addEventListener('signatureDeleted', onSignatureDeleted);\n      core.getTool(ToolNames.FORM_FILL_DOT).addEventListener('annotationAdded', onDotStampAnnotationAdded);\n      core.getTool('AnnotationCreateRubberStamp').addEventListener('annotationAdded', onRubberStampAnnotationAdded);\n      core.getTool('AnnotationCreateFileAttachment').addEventListener('annotationAdded', onFileAttachmentAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CROSS).addEventListener('annotationAdded', onCrossStampAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CHECKMARK).addEventListener('annotationAdded', onCheckStampAnnotationAdded);\n      document.addEventListener('fullscreenchange', onFullScreenChange);\n      document.addEventListener('mozfullscreenchange', onFullScreenChange);\n      document.addEventListener('webkitfullscreenchange', onFullScreenChange);\n      document.addEventListener('MSFullscreenChange', onFullScreenChange);\n    },\n    removeEventHandlers: () => {\n      core.removeEventListener('beforeDocumentLoaded', onBeforeDocumentLoaded);\n      core.removeEventListener('displayModeUpdated', onDisplayModeUpdated);\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded);\n      core.removeEventListener('fitModeUpdated', onFitModeUpdated);\n      core.removeEventListener('rotationUpdated', onRotationUpdated);\n      core.removeEventListener('toolUpdated', onToolUpdated);\n      core.removeEventListener('toolModeUpdated', onToolModeUpdated);\n      core.removeEventListener('zoomUpdated', onZoomUpdated);\n      core.removeEventListener('pageNumberUpdated', onPageNumberUpdated);\n      core.removeEventListener('pagesUpdated', onPagesUpdated);\n      core.removeEventListener('updateAnnotationPermission', onUpdateAnnotationPermission);\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('pageComplete', onPageComplete);\n      core.removeEventListener('fileAttachmentDataAvailable', onFileAttachmentDataAvailable);\n      core.removeEventListener('formFieldCreationModeStarted', onFormFieldCreationModeStarted);\n      core.removeEventListener('formFieldCreationModeEnded', onFormFieldCreationModeEnded);\n      core.removeEventListener('digitalSignatureAvailable', onDigitalSignatureAvailable);\n      core.getTool('AnnotationCreateStamp').removeEventListener('annotationAdded', onStampAnnotationAdded);\n      core.getTool('AnnotationCreateSticky').removeEventListener('annotationAdded', onStickyAnnotationAdded);\n      core.getTool('AnnotationCreateSticky2').removeEventListener('annotationAdded', onStickyAnnotationAdded);\n      core.getTool('AnnotationCreateSticky3').removeEventListener('annotationAdded', onStickyAnnotationAdded);\n      core.getTool('AnnotationCreateSticky4').removeEventListener('annotationAdded', onStickyAnnotationAdded);\n      core.getTool('AnnotationCreateSignature').removeEventListener('locationSelected', onLocationSelected);\n      core.getTool(ToolNames.FORM_FILL_DOT).removeEventListener('annotationAdded', onDotStampAnnotationAdded);\n      core.getTool('AnnotationCreateRubberStamp').removeEventListener('annotationAdded', onRubberStampAnnotationAdded);\n      core.getTool('AnnotationCreateFileAttachment').removeEventListener('annotationAdded', onFileAttachmentAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CROSS).removeEventListener('annotationAdded', onCrossStampAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CHECKMARK).removeEventListener('annotationAdded', onCheckStampAnnotationAdded);\n      hotkeysManager.off();\n      document.removeEventListener('fullscreenchange', onFullScreenChange);\n      document.removeEventListener('mozfullscreenchange', onFullScreenChange);\n      document.removeEventListener('webkitfullscreenchange', onFullScreenChange);\n      document.removeEventListener('MSFullscreenChange', onFullScreenChange);\n    },\n  };\n};","function _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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { defaults, makePromise } from './utils.js';\nimport request from './request.js';\n\nvar getDefaults = function getDefaults() {\n  return {\n    loadPath: '/locales/{{lng}}/{{ns}}.json',\n    addPath: '/locales/add/{{lng}}/{{ns}}',\n    allowMultiLoading: false,\n    parse: function parse(data) {\n      return JSON.parse(data);\n    },\n    stringify: JSON.stringify,\n    parsePayload: function parsePayload(namespace, key, fallbackValue) {\n      return _defineProperty({}, key, fallbackValue || '');\n    },\n    request: request,\n    reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n    customHeaders: {},\n    queryStringParams: {},\n    crossDomain: false,\n    withCredentials: false,\n    overrideMimeType: false,\n    requestOptions: {\n      mode: 'cors',\n      credentials: 'same-origin',\n      cache: 'default'\n    }\n  };\n};\n\nvar Backend = function () {\n  function Backend(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    _classCallCheck(this, Backend);\n\n    this.services = services;\n    this.options = options;\n    this.allOptions = allOptions;\n    this.type = 'backend';\n    this.init(services, options, allOptions);\n  }\n\n  _createClass(Backend, [{\n    key: \"init\",\n    value: function init(services) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      this.services = services;\n      this.options = defaults(options, this.options || {}, getDefaults());\n      this.allOptions = allOptions;\n\n      if (this.services && this.options.reloadInterval) {\n        setInterval(function () {\n          return _this.reload();\n        }, this.options.reloadInterval);\n      }\n    }\n  }, {\n    key: \"readMulti\",\n    value: function readMulti(languages, namespaces, callback) {\n      this._readAny(languages, languages, namespaces, namespaces, callback);\n    }\n  }, {\n    key: \"read\",\n    value: function read(language, namespace, callback) {\n      this._readAny([language], language, [namespace], namespace, callback);\n    }\n  }, {\n    key: \"_readAny\",\n    value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n      var _this2 = this;\n\n      var loadPath = this.options.loadPath;\n\n      if (typeof this.options.loadPath === 'function') {\n        loadPath = this.options.loadPath(languages, namespaces);\n      }\n\n      loadPath = makePromise(loadPath);\n      loadPath.then(function (resolvedLoadPath) {\n        if (!resolvedLoadPath) return callback(null, {});\n\n        var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n          lng: languages.join('+'),\n          ns: namespaces.join('+')\n        });\n\n        _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n      });\n    }\n  }, {\n    key: \"loadUrl\",\n    value: function loadUrl(url, callback, languages, namespaces) {\n      var _this3 = this;\n\n      this.options.request(this.options, url, undefined, function (err, res) {\n        if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n        if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n        if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n        if (err) return callback(err, false);\n        var ret, parseErr;\n\n        try {\n          if (typeof res.data === 'string') {\n            ret = _this3.options.parse(res.data, languages, namespaces);\n          } else {\n            ret = res.data;\n          }\n        } catch (e) {\n          parseErr = 'failed parsing ' + url + ' to json';\n        }\n\n        if (parseErr) return callback(parseErr, false);\n        callback(null, ret);\n      });\n    }\n  }, {\n    key: \"create\",\n    value: function create(languages, namespace, key, fallbackValue, callback) {\n      var _this4 = this;\n\n      if (!this.options.addPath) return;\n      if (typeof languages === 'string') languages = [languages];\n      var payload = this.options.parsePayload(namespace, key, fallbackValue);\n      var finished = 0;\n      var dataArray = [];\n      var resArray = [];\n      languages.forEach(function (lng) {\n        var addPath = _this4.options.addPath;\n\n        if (typeof _this4.options.addPath === 'function') {\n          addPath = _this4.options.addPath(lng, namespace);\n        }\n\n        var url = _this4.services.interpolator.interpolate(addPath, {\n          lng: lng,\n          ns: namespace\n        });\n\n        _this4.options.request(_this4.options, url, payload, function (data, res) {\n          finished += 1;\n          dataArray.push(data);\n          resArray.push(res);\n\n          if (finished === languages.length) {\n            if (callback) callback(dataArray, resArray);\n          }\n        });\n      });\n    }\n  }, {\n    key: \"reload\",\n    value: function reload() {\n      var _this5 = this;\n\n      var _this$services = this.services,\n          backendConnector = _this$services.backendConnector,\n          languageUtils = _this$services.languageUtils,\n          logger = _this$services.logger;\n      var currentLanguage = backendConnector.language;\n      if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n      var toLoad = [];\n\n      var append = function append(lng) {\n        var lngs = languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(function (l) {\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n\n      append(currentLanguage);\n      if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n        return append(l);\n      });\n      toLoad.forEach(function (lng) {\n        _this5.allOptions.ns.forEach(function (ns) {\n          backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n            if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n            if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n            backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n          });\n        });\n      });\n    }\n  }]);\n\n  return Backend;\n}();\n\nBackend.type = 'backend';\nexport default Backend;","import i18next from 'i18next';\nimport HttpApi from 'i18next-http-backend';\nimport languageRules from '../constants/languageRules';\nimport { availableLanguages } from '../apis/getAvailableLanguages';\n\n// https://github.com/isaachinman/next-i18next/issues/562\ni18next.languages = availableLanguages;\n\n// this is required for Cordova https://github.com/i18next/i18next-http-backend/issues/23#issuecomment-718929822\nconst requestWithXmlHttpRequest = (options, url, payload, callback) => {\n  try {\n    const request = new XMLHttpRequest();\n    request.open('GET', url, 1);\n    if (!options.crossDomain) {\n      request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n    request.withCredentials = !!options.withCredentials;\n    if (payload) {\n      request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n    if (request.overrideMimeType) {\n      request.overrideMimeType('application/json');\n    }\n    let headers = options.customHeaders;\n    headers = typeof headers === 'function' ? headers() : headers;\n    if (headers) {\n      for (const i in headers) {\n        request.setRequestHeader(i, headers[i]);\n      }\n    }\n    request.onreadystatechange = () => {\n      // in android webview loading a file is status status 0\n      request.readyState > 3 && callback(request.status >= 400 ? request.statusText : null, { status: request.status || 200, data: request.responseText });\n    };\n    request.send(payload);\n  } catch (e) {\n    console.warn(e);\n  }\n};\n\nexport default state => {\n  const options = {\n    fallbackLng: 'en',\n    react: {\n      useSuspense: false,\n    },\n  };\n  const callback = (err, t) => {\n    window.Annotations.Utilities.setAnnotationSubjectHandler(type =>\n      t(`annotation.${type}`),\n    );\n\n    window.Core.Tools.SignatureCreateTool.setTextHandler(() =>\n      t('message.signHere'),\n    );\n\n    window.Core.Tools.FreeTextCreateTool.setTextHandler(() =>\n      t('message.insertTextHere'),\n    );\n\n    window.Core.Tools.CalloutCreateTool.setTextHandler(() =>\n      t('message.insertTextHere'),\n    );\n  };\n\n  if (state.advanced.disableI18n) {\n    i18next.init(options, callback);\n  } else {\n    i18next.use(HttpApi).init(\n      {\n        ...options,\n        backend: {\n          loadPath: './i18n/{{ns}}-{{lng}}.json',\n          request: requestWithXmlHttpRequest,\n        },\n      },\n      callback,\n    );\n  }\n\n  // set custom rules. since i18next doesn't support (i.e 'zh-ch', 'zh-tw', or 'pt-br')\n  // have to look inside the i18n source code \"getRule\" function to see what rule we can copy\n  Object.keys(languageRules).forEach(lang => {\n    if (languageRules[lang].i18next) {\n      const rule = i18next.services.pluralResolver.getRule(languageRules[lang].i18next);\n      i18next.services.pluralResolver.addRule(lang, rule);\n    }\n  });\n};\n","import core from 'core';\n\nconst setupDocViewer = () => {\n  const docViewer = core.getDocumentViewer();\n\n  // at 100% zoom level, adjust this whenever zoom/fitmode is updated\n  docViewer.DEFAULT_MARGIN = 10;\n  addToolsToDocViewer(docViewer);\n};\n\nconst addToolsToDocViewer = docViewer => {\n  const toolModeMap = core.getToolModeMap();\n  const { ToolNames } = window.Core.Tools;\n\n  toolModeMap.AnnotationCreateTextHighlight2 = new window.Core.Tools.TextHighlightCreateTool(docViewer, ToolNames.HIGHLIGHT2);\n  toolModeMap.AnnotationCreateTextHighlight3 = new window.Core.Tools.TextHighlightCreateTool(docViewer, ToolNames.HIGHLIGHT3);\n  toolModeMap.AnnotationCreateTextHighlight4 = new window.Core.Tools.TextHighlightCreateTool(docViewer, ToolNames.HIGHLIGHT4);\n  toolModeMap.AnnotationCreateFreeHand2 = new window.Core.Tools.FreeHandCreateTool(docViewer, ToolNames.FREEHAND2);\n  toolModeMap.AnnotationCreateFreeHand3 = new window.Core.Tools.FreeHandCreateTool(docViewer, ToolNames.FREEHAND3);\n  toolModeMap.AnnotationCreateFreeHand4 = new window.Core.Tools.FreeHandCreateTool(docViewer, ToolNames.FREEHAND4);\n  toolModeMap.AnnotationCreateFreeHandHighlight2 = new window.Core.Tools.FreeHandHighlightCreateTool(docViewer, ToolNames.FREEHAND_HIGHLIGHT2);\n  toolModeMap.AnnotationCreateFreeHandHighlight3 = new window.Core.Tools.FreeHandHighlightCreateTool(docViewer, ToolNames.FREEHAND_HIGHLIGHT3);\n  toolModeMap.AnnotationCreateFreeHandHighlight4 = new window.Core.Tools.FreeHandHighlightCreateTool(docViewer, ToolNames.FREEHAND_HIGHLIGHT4);\n  toolModeMap.AnnotationCreateFreeText2 = new window.Core.Tools.FreeTextCreateTool(docViewer, ToolNames.FREETEXT2);\n  toolModeMap.AnnotationCreateFreeText3 = new window.Core.Tools.FreeTextCreateTool(docViewer, ToolNames.FREETEXT3);\n  toolModeMap.AnnotationCreateFreeText4 = new window.Core.Tools.FreeTextCreateTool(docViewer, ToolNames.FREETEXT4);\n  toolModeMap.AnnotationCreateDateFreeText2 = new window.Core.Tools.DateFreeTextCreateTool(docViewer, ToolNames.DATEFREETEXT2);\n  toolModeMap.AnnotationCreateDateFreeText3 = new window.Core.Tools.DateFreeTextCreateTool(docViewer, ToolNames.DATEFREETEXT3);\n  toolModeMap.AnnotationCreateDateFreeText4 = new window.Core.Tools.DateFreeTextCreateTool(docViewer, ToolNames.DATEFREETEXT4);\n  toolModeMap.AnnotationCreateCallout2 = new window.Core.Tools.CalloutCreateTool(docViewer, ToolNames.CALLOUT2);\n  toolModeMap.AnnotationCreateCallout3 = new window.Core.Tools.CalloutCreateTool(docViewer, ToolNames.CALLOUT3);\n  toolModeMap.AnnotationCreateCallout4 = new window.Core.Tools.CalloutCreateTool(docViewer, ToolNames.CALLOUT4);\n  toolModeMap.AnnotationCreateSticky2 = new window.Core.Tools.StickyCreateTool(docViewer, ToolNames.STICKY2);\n  toolModeMap.AnnotationCreateSticky3 = new window.Core.Tools.StickyCreateTool(docViewer, ToolNames.STICKY3);\n  toolModeMap.AnnotationCreateSticky4 = new window.Core.Tools.StickyCreateTool(docViewer, ToolNames.STICKY4);\n  toolModeMap.AnnotationCreateTextUnderline2 = new window.Core.Tools.TextUnderlineCreateTool(docViewer, ToolNames.UNDERLINE2);\n  toolModeMap.AnnotationCreateTextUnderline3 = new window.Core.Tools.TextUnderlineCreateTool(docViewer, ToolNames.UNDERLINE3);\n  toolModeMap.AnnotationCreateTextUnderline4 = new window.Core.Tools.TextUnderlineCreateTool(docViewer, ToolNames.UNDERLINE4);\n  toolModeMap.AnnotationCreateTextStrikeout2 = new window.Core.Tools.TextStrikeoutCreateTool(docViewer, ToolNames.STRIKEOUT2);\n  toolModeMap.AnnotationCreateTextStrikeout3 = new window.Core.Tools.TextStrikeoutCreateTool(docViewer, ToolNames.STRIKEOUT3);\n  toolModeMap.AnnotationCreateTextStrikeout4 = new window.Core.Tools.TextStrikeoutCreateTool(docViewer, ToolNames.STRIKEOUT4);\n  toolModeMap.AnnotationCreateTextSquiggly2 = new window.Core.Tools.TextSquigglyCreateTool(docViewer, ToolNames.SQUIGGLY2);\n  toolModeMap.AnnotationCreateTextSquiggly3 = new window.Core.Tools.TextSquigglyCreateTool(docViewer, ToolNames.SQUIGGLY3);\n  toolModeMap.AnnotationCreateTextSquiggly4 = new window.Core.Tools.TextSquigglyCreateTool(docViewer, ToolNames.SQUIGGLY4);\n  toolModeMap.AnnotationCreateRectangle2 = new window.Core.Tools.RectangleCreateTool(docViewer, ToolNames.RECTANGLE2);\n  toolModeMap.AnnotationCreateRectangle3 = new window.Core.Tools.RectangleCreateTool(docViewer, ToolNames.RECTANGLE3);\n  toolModeMap.AnnotationCreateRectangle4 = new window.Core.Tools.RectangleCreateTool(docViewer, ToolNames.RECTANGLE4);\n  toolModeMap.AnnotationCreateEllipse2 = new window.Core.Tools.EllipseCreateTool(docViewer, ToolNames.ELLIPSE2);\n  toolModeMap.AnnotationCreateEllipse3 = new window.Core.Tools.EllipseCreateTool(docViewer, ToolNames.ELLIPSE3);\n  toolModeMap.AnnotationCreateEllipse4 = new window.Core.Tools.EllipseCreateTool(docViewer, ToolNames.ELLIPSE4);\n  toolModeMap.AnnotationCreatePolygon2 = new window.Core.Tools.PolygonCreateTool(docViewer, ToolNames.POLYGON2);\n  toolModeMap.AnnotationCreatePolygon3 = new window.Core.Tools.PolygonCreateTool(docViewer, ToolNames.POLYGON3);\n  toolModeMap.AnnotationCreatePolygon4 = new window.Core.Tools.PolygonCreateTool(docViewer, ToolNames.POLYGON4);\n  toolModeMap.AnnotationCreatePolygonCloud2 = new window.Core.Tools.PolygonCloudCreateTool(docViewer, ToolNames.POLYGON_CLOUD2);\n  toolModeMap.AnnotationCreatePolygonCloud3 = new window.Core.Tools.PolygonCloudCreateTool(docViewer, ToolNames.POLYGON_CLOUD3);\n  toolModeMap.AnnotationCreatePolygonCloud4 = new window.Core.Tools.PolygonCloudCreateTool(docViewer, ToolNames.POLYGON_CLOUD4);\n  toolModeMap.AnnotationCreateLine2 = new window.Core.Tools.LineCreateTool(docViewer, ToolNames.LINE2);\n  toolModeMap.AnnotationCreateLine3 = new window.Core.Tools.LineCreateTool(docViewer, ToolNames.LINE3);\n  toolModeMap.AnnotationCreateLine4 = new window.Core.Tools.LineCreateTool(docViewer, ToolNames.LINE4);\n  toolModeMap.AnnotationCreatePolyline2 = new window.Core.Tools.PolylineCreateTool(docViewer, ToolNames.POLYLINE2);\n  toolModeMap.AnnotationCreatePolyline3 = new window.Core.Tools.PolylineCreateTool(docViewer, ToolNames.POLYLINE3);\n  toolModeMap.AnnotationCreatePolyline4 = new window.Core.Tools.PolylineCreateTool(docViewer, ToolNames.POLYLINE4);\n  toolModeMap.AnnotationCreateArrow2 = new window.Core.Tools.ArrowCreateTool(docViewer, ToolNames.ARROW2);\n  toolModeMap.AnnotationCreateArrow3 = new window.Core.Tools.ArrowCreateTool(docViewer, ToolNames.ARROW3);\n  toolModeMap.AnnotationCreateArrow4 = new window.Core.Tools.ArrowCreateTool(docViewer, ToolNames.ARROW4);\n  toolModeMap.AnnotationCreateCountMeasurement2 = new window.Core.Tools.CountMeasurementCreateTool(docViewer, ToolNames.COUNT_MEASUREMENT2);\n  toolModeMap.AnnotationCreateCountMeasurement3 = new window.Core.Tools.CountMeasurementCreateTool(docViewer, ToolNames.COUNT_MEASUREMENT3);\n  toolModeMap.AnnotationCreateCountMeasurement4 = new window.Core.Tools.CountMeasurementCreateTool(docViewer, ToolNames.COUNT_MEASUREMENT4);\n  toolModeMap.AnnotationCreateDistanceMeasurement2 = new window.Core.Tools.DistanceMeasurementCreateTool(docViewer, ToolNames.DISTANCE_MEASUREMENT2);\n  toolModeMap.AnnotationCreateDistanceMeasurement3 = new window.Core.Tools.DistanceMeasurementCreateTool(docViewer, ToolNames.DISTANCE_MEASUREMENT3);\n  toolModeMap.AnnotationCreateDistanceMeasurement4 = new window.Core.Tools.DistanceMeasurementCreateTool(docViewer, ToolNames.DISTANCE_MEASUREMENT4);\n  toolModeMap.AnnotationCreatePerimeterMeasurement2 = new window.Core.Tools.PerimeterMeasurementCreateTool(docViewer, ToolNames.PERIMETER_MEASUREMENT2);\n  toolModeMap.AnnotationCreatePerimeterMeasurement3 = new window.Core.Tools.PerimeterMeasurementCreateTool(docViewer, ToolNames.PERIMETER_MEASUREMENT3);\n  toolModeMap.AnnotationCreatePerimeterMeasurement4 = new window.Core.Tools.PerimeterMeasurementCreateTool(docViewer, ToolNames.PERIMETER_MEASUREMENT4);\n  toolModeMap.AnnotationCreateAreaMeasurement2 = new window.Core.Tools.AreaMeasurementCreateTool(docViewer, ToolNames.AREA_MEASUREMENT2);\n  toolModeMap.AnnotationCreateAreaMeasurement3 = new window.Core.Tools.AreaMeasurementCreateTool(docViewer, ToolNames.AREA_MEASUREMENT3);\n  toolModeMap.AnnotationCreateAreaMeasurement4 = new window.Core.Tools.AreaMeasurementCreateTool(docViewer, ToolNames.AREA_MEASUREMENT4);\n  toolModeMap.AnnotationCreateEllipseMeasurement2 = new window.Core.Tools.EllipseMeasurementCreateTool(docViewer, ToolNames.ELLIPSE_MEASUREMENT2);\n  toolModeMap.AnnotationCreateEllipseMeasurement3 = new window.Core.Tools.EllipseMeasurementCreateTool(docViewer, ToolNames.ELLIPSE_MEASUREMENT3);\n  toolModeMap.AnnotationCreateEllipseMeasurement4 = new window.Core.Tools.EllipseMeasurementCreateTool(docViewer, ToolNames.ELLIPSE_MEASUREMENT4);\n  toolModeMap.AnnotationCreateRectangularAreaMeasurement2 = new window.Core.Tools.RectangularAreaMeasurementCreateTool(docViewer, ToolNames.RECTANGULAR_AREA_MEASUREMENT2);\n  toolModeMap.AnnotationCreateRectangularAreaMeasurement3 = new window.Core.Tools.RectangularAreaMeasurementCreateTool(docViewer, ToolNames.RECTANGULAR_AREA_MEASUREMENT3);\n  toolModeMap.AnnotationCreateRectangularAreaMeasurement4 = new window.Core.Tools.RectangularAreaMeasurementCreateTool(docViewer, ToolNames.RECTANGULAR_AREA_MEASUREMENT4);\n  toolModeMap.TextFormFieldCreateTool2 = new window.Core.Tools.TextFormFieldCreateTool(docViewer, ToolNames.TEXT_FORM_FIELD2);\n  toolModeMap.TextFormFieldCreateTool3 = new window.Core.Tools.TextFormFieldCreateTool(docViewer, ToolNames.TEXT_FORM_FIELD3);\n  toolModeMap.TextFormFieldCreateTool4 = new window.Core.Tools.TextFormFieldCreateTool(docViewer, ToolNames.TEXT_FORM_FIELD4);\n  toolModeMap.SignatureFormFieldCreateTool2 = new window.Core.Tools.SignatureFormFieldCreateTool(docViewer, ToolNames.SIG_FORM_FIELD2);\n  toolModeMap.SignatureFormFieldCreateTool3 = new window.Core.Tools.SignatureFormFieldCreateTool(docViewer, ToolNames.SIG_FORM_FIELD3);\n  toolModeMap.SignatureFormFieldCreateTool4 = new window.Core.Tools.SignatureFormFieldCreateTool(docViewer, ToolNames.SIG_FORM_FIELD4);\n  toolModeMap.ListBoxFormFieldCreateTool2 = new window.Core.Tools.ListBoxFormFieldCreateTool(docViewer, ToolNames.LIST_BOX_FIELD2);\n  toolModeMap.ListBoxFormFieldCreateTool3 = new window.Core.Tools.ListBoxFormFieldCreateTool(docViewer, ToolNames.LIST_BOX_FIELD3);\n  toolModeMap.ListBoxFormFieldCreateTool4 = new window.Core.Tools.ListBoxFormFieldCreateTool(docViewer, ToolNames.LIST_BOX_FIELD4);\n  toolModeMap.ComboBoxFormFieldCreateTool2 = new window.Core.Tools.ComboBoxFormFieldCreateTool(docViewer, ToolNames.COMBO_BOX_FIELD2);\n  toolModeMap.ComboBoxFormFieldCreateTool3 = new window.Core.Tools.ComboBoxFormFieldCreateTool(docViewer, ToolNames.COMBO_BOX_FIELD3);\n  toolModeMap.ComboBoxFormFieldCreateTool4 = new window.Core.Tools.ComboBoxFormFieldCreateTool(docViewer, ToolNames.COMBO_BOX_FIELD4);\n  toolModeMap.AnnotationCreateCloudyRectangularAreaMeasurement2 = new window.Core.Tools.CloudyRectangularAreaMeasurementCreateTool(docViewer, ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT2);\n  toolModeMap.AnnotationCreateCloudyRectangularAreaMeasurement3 = new window.Core.Tools.CloudyRectangularAreaMeasurementCreateTool(docViewer, ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT3);\n  toolModeMap.AnnotationCreateCloudyRectangularAreaMeasurement4 = new window.Core.Tools.CloudyRectangularAreaMeasurementCreateTool(docViewer, ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT4);\n  toolModeMap.AnnotationCreateArcMeasurement2 = new window.Core.Tools.ArcMeasurementCreateTool(docViewer, ToolNames.ARC_MEASUREMENT2);\n  toolModeMap.AnnotationCreateArcMeasurement3 = new window.Core.Tools.ArcMeasurementCreateTool(docViewer, ToolNames.ARC_MEASUREMENT3);\n  toolModeMap.AnnotationCreateArcMeasurement4 = new window.Core.Tools.ArcMeasurementCreateTool(docViewer, ToolNames.ARC_MEASUREMENT4);\n  toolModeMap.AnnotationCreateArc2 = new window.Core.Tools.ArcCreateTool(docViewer, ToolNames.ARC2);\n  toolModeMap.AnnotationCreateArc3 = new window.Core.Tools.ArcCreateTool(docViewer, ToolNames.ARC3);\n  toolModeMap.AnnotationCreateArc4 = new window.Core.Tools.ArcCreateTool(docViewer, ToolNames.ARC4);\n  toolModeMap[ToolNames.REDACTION2] = new window.Core.Tools.RedactionCreateTool(docViewer, ToolNames.REDACTION2);\n  toolModeMap[ToolNames.REDACTION3] = new window.Core.Tools.RedactionCreateTool(docViewer, ToolNames.REDACTION3);\n  toolModeMap[ToolNames.REDACTION4] = new window.Core.Tools.RedactionCreateTool(docViewer, ToolNames.REDACTION4);\n  toolModeMap.AnnotationCreateChangeViewTool = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW);\n  toolModeMap.AnnotationCreateChangeViewTool2 = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW2);\n  toolModeMap.AnnotationCreateChangeViewTool3 = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW3);\n  toolModeMap.AnnotationCreateChangeViewTool4 = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW4);\n};\n\nexport default setupDocViewer;\n","// default styles of a tool is determined by core\n// following are the tools that we want to change the default styles due to design\n// we could change the default styles in core but we don't want the legacy UI to be affected, so we do it here\nexport default {\n  AnnotationCreateCountMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateCountMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateCountMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateCountMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateArcMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateArcMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateArcMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateArcMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateArc: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateArc2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateArc3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateArc4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateArrow: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateArrow2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateArrow3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateArrow4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateLine: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateLine2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateLine3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateLine4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePolyline: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePolyline2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePolyline3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePolyline4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePolygonCloud: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePolygonCloud2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePolygonCloud3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePolygonCloud4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePolygon: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePolygon2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePolygon3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePolygon4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateRectangle: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateRectangle2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateRectangle3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateRectangle4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateEllipse: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateEllipse2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateEllipse3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateEllipse4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateFreeHand: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateFreeHand2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateFreeHand3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateFreeHand4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateFreeText: {\n    TextColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateFreeText2: {\n    TextColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateFreeText3: {\n    TextColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateFreeText4: {\n    TextColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateDateFreeText: {\n    TextColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateDateFreeText2: {\n    TextColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateDateFreeText3: {\n    TextColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateDateFreeText4: {\n    TextColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateCallout: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateCallout2: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateCallout3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateCallout4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateSticky: {\n    StrokeColor: { R: 255, G: 205, B: 69, A: 1 },\n  },\n  AnnotationCreateSticky2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateSticky3: {\n    StrokeColor: { R: 255, G: 141, B: 0, A: 1 },\n  },\n  AnnotationCreateSticky4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateTextHighlight: {\n    StrokeColor: { R: 255, G: 205, B: 69, A: 1 },\n  },\n  AnnotationCreateTextHighlight2: {\n    StrokeColor: { R: 37, G: 210, B: 209, A: 1 },\n  },\n  AnnotationCreateTextHighlight3: {\n    StrokeColor: { R: 0, G: 204, B: 99, A: 1 },\n  },\n  AnnotationCreateTextHighlight4: {\n    StrokeColor: { R: 226, G: 161, B: 230, A: 1 },\n  },\n  AnnotationCreateTextUnderline: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateTextUnderline2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateTextUnderline3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateTextUnderline4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateTextSquiggly: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateTextSquiggly2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateTextSquiggly3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateTextSquiggly4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateTextStrikeout: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateTextStrikeout2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateTextStrikeout3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateTextStrikeout4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  TextFormFieldCreateTool: {\n    TextColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  TextFormFieldCreateTool2: {\n    TextColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  TextFormFieldCreateTool3: {\n    TextColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  TextFormFieldCreateTool4: {\n    TextColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  SignatureFormFieldCreateTool: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  SignatureFormFieldCreateTool2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  SignatureFormFieldCreateTool3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  SignatureFormFieldCreateTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  ListBoxFormFieldCreateTool: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  ListBoxFormFieldCreateTool2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  ListBoxFormFieldCreateTool3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  ListBoxFormFieldCreateTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateRedaction: {\n    StrokeColor: { R: 255, G: 0, B: 0, A: 1 }\n  },\n  AnnotationCreateRedaction2: {\n    StrokeColor: { R: 0, G: 0, B: 255, A: 1 }\n  },\n  AnnotationCreateRedaction3: {\n    StrokeColor: { R: 255, G: 255, B: 0, A: 1 }\n  },\n  AnnotationCreateRedaction4: {\n    StrokeColor: { R: 0, G: 128, B: 0, A: 1 }\n  },\n  AnnotationCreateChangeViewTool: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateChangeViewTool2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateChangeViewTool3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateChangeViewTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n};\n","import core from 'core';\nimport defaultToolStylesMap from 'constants/defaultToolStylesMap';\nimport localStorageManager from 'helpers/localStorageManager';\n\nconst setDefaultToolStyle = toolName => {\n  let toolStyles = null;\n  const toolModeMap = core.getToolModeMap();\n\n  try {\n    toolStyles = localStorage.getItem(`toolData-${toolName}`);\n  } catch (ex) {\n    console.warn(`Disabling \"localStorage\" because it could not be accessed.`);\n    localStorageManager.disableLocalStorage();\n  }\n\n  if (!toolStyles && defaultToolStylesMap[toolName]) {\n    toolStyles = JSON.stringify(defaultToolStylesMap[toolName]);\n  }\n\n  if (toolStyles) {\n    const tool = toolModeMap[toolName];\n\n    toolStyles = getParsedToolStyles(toolStyles);\n    tool.setStyles(toolStyles);\n  }\n};\n\nconst setDefaultToolStyles = () => {\n  const toolModeMap = core.getToolModeMap();\n\n  Object.keys(toolModeMap).forEach(toolName => {\n    setDefaultToolStyle(toolName);\n  });\n};\n\nconst getParsedToolStyles = toolStyles =>\n  JSON.parse(toolStyles, (_, styles) => {\n    if (styles) {\n      Object.entries(styles).forEach(([key, style]) => {\n        if (isKeyColorProperty(key) && typeof style === 'object') {\n          styles[key] = new window.Annotations.Color(\n            style.R,\n            style.G,\n            style.B,\n            style.A,\n          );\n        }\n      });\n    }\n    return styles;\n  });\n\nconst isKeyColorProperty = key =>\n  ['TextColor', 'StrokeColor', 'FillColor'].includes(key);\n\nexport default setDefaultToolStyles;\n\nexport { setDefaultToolStyle };\n","import React, { useState, useEffect } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport core from 'core';\nimport classNames from 'classnames';\n\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport ActionButton from 'components/ActionButton';\nimport { zoomTo, zoomIn, zoomOut } from 'helpers/zoom';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport useMedia from 'hooks/useMedia';\nimport zoomFactors from 'constants/zoomFactors';\n\nimport './ToggleZoomOverlay.scss';\nimport { useTranslation } from 'react-i18next';\n\nconst ToggleZoomOverlay = () => {\n  const [t] = useTranslation();\n\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const [isActive] = useSelector(\n    state => [selectors.isElementOpen(state, 'zoomOverlay')],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const [value, setValue] = useState('100');\n\n  useEffect(() => {\n    const onDocumentLoaded = () =>\n      setValue(Math.ceil(core.getZoom() * 100).toString());\n    const onZoomUpdated = () =>\n      setValue(Math.ceil(core.getZoom() * 100).toString());\n    const onDocumentUnloaded = () => \n      setValue('100');\n\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('zoomUpdated', onZoomUpdated);\n    core.addEventListener('documentUnloaded', onDocumentUnloaded);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('zoomUpdated', onZoomUpdated);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded);\n    };\n  }, []);\n\n  const onKeyPress = e => {\n    if (e.nativeEvent.key === 'Enter' || e.nativeEvent.keyCode === 13) {\n      const zoom = Math.ceil(core.getZoom() * 100).toString();\n      if (e.target.value === zoom) {\n        return;\n      }\n      if (e.target.value === '') {\n        setValue(zoom);\n      } else {\n        let zoomValue = (e.target.value) / 100;\n        zoomValue = Math.max(zoomValue, zoomFactors.getMinZoomLevel());\n        zoomValue = Math.min(zoomValue, zoomFactors.getMaxZoomLevel());\n        zoomTo(zoomValue);\n      }\n    }\n  };\n\n  const onChange = e => {\n    const re = /^(\\d){0,4}$/;\n    if (re.test(e.target.value) || e.target.value === '') {\n      setValue(e.target.value);\n    }\n  };\n\n  const onBlur = e => {\n    const zoom = Math.ceil(core.getZoom() * 100).toString();\n    if (e.target.value === zoom) {\n      return;\n    }\n    if (e.target.value === '' || isNaN(Number(e.target.value))) {\n      setValue(zoom);\n    } else {\n      setValue(Number(e.target.value).toString());\n      zoomTo(e.target.value / 100);\n    }\n  };\n\n  const inputWidth = value ? (value.length + 1) * 8 : 0;\n\n  return (\n    <div className=\"zoom-overlay\">\n      {!isMobile &&\n        <div className=\"ToggleZoomOverlay\">\n          <div\n            className={classNames({\n              OverlayContainer: true,\n              active: isActive,\n            })}\n          >\n            <div\n              className=\"OverlayText\"\n              onClick={() => dispatch(actions.toggleElement('zoomOverlay'))}\n            >\n              <input\n                type=\"text\"\n                className=\"textarea\"\n                value={value}\n                onChange={onChange}\n                onKeyPress={onKeyPress}\n                onBlur={onBlur}\n                tabIndex={-1}\n                style={{ width: inputWidth }}\n                aria-label={t('action.zoomSet')}\n              />\n              <span>%</span>\n            </div>\n            <ToggleElementButton\n              className=\"OverlayButton\"\n              img={`icon-chevron-${isActive ? 'up' : 'down'}`}\n              element=\"zoomOverlay\"\n              dataElement=\"zoomOverlay\"\n              ariaLabel={t('action.zoomControls')}\n            />\n          </div>\n        </div>}\n      <ActionButton\n        img=\"icon-header-zoom-out-line\"\n        onClick={zoomOut}\n        title=\"action.zoomOut\"\n        dataElement=\"zoomOutButton\"\n      />\n      <ActionButton\n        img=\"icon-header-zoom-in-line\"\n        onClick={zoomIn}\n        title=\"action.zoomIn\"\n        dataElement=\"zoomInButton\"\n      />\n    </div>\n  );\n};\n\nexport default ToggleZoomOverlay;\n","import ToggleZoomOverlay from './ToggleZoomOverlay';\n\nexport default ToggleZoomOverlay;\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport classNames from 'classnames';\nimport Dropdown from 'components/Dropdown';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport core from 'core';\n\nimport Measure from 'react-measure';\n\nimport \"./Ribbons.scss\";\n\nconst Ribbons = () => {\n  const toolbarGroups = useSelector(selectors.getEnabledToolbarGroups);\n  const currentToolbarGroup = useSelector(selectors.getCurrentToolbarGroup);\n  const toolbarHeaders = useSelector(selectors.getToolbarHeaders);\n  const { t, ready: tReady } = useTranslation();\n  const [ribbonsWidth, setRibbonsWidth] = useState(0);\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [hasEnoughCenteredSpace, setHasEnoughCenteredSpace] = useState(false);\n  const ribbonsRef = useRef();\n  const containerRef = useRef();\n  const dispatch = useDispatch();\n\n  const setToolbarGroup = useCallback((group, pickTool) => {\n    dispatch(actions.setToolbarGroup(group, pickTool));\n  }, [dispatch])\n\n  // don't pick tool for the edit group because the first button in the group is the form editing button,\n  // which is an action button that does not have an active background\n  const shouldPickTool = toolbarGroup => toolbarGroup !== 'toolbarGroup-Edit';\n\n  const toggleFormFieldCreationMode = toolGroup => {\n    const formFieldCreationManager = core.getFormFieldCreationManager();\n    if (toolGroup === 'toolbarGroup-Forms') {\n      if (!formFieldCreationManager.isInFormFieldCreationMode()) {\n        formFieldCreationManager.startFormFieldCreationMode();\n      }\n    } else if (formFieldCreationManager.isInFormFieldCreationMode()) {\n      formFieldCreationManager.endFormFieldCreationMode();\n    }\n  };\n\n  useEffect(() => {\n    // When we initialize the Viewer we don't want to start off in the Forms tab as\n    // this may confuse users, since in Forms creation mode regular annotations are hidden.\n    // If for some reason we are in this mode on init, we default to switching to the Annotate tab\n    if (currentToolbarGroup === 'toolbarGroup-Forms') {\n      setToolbarGroup('toolbarGroup-Annotate', shouldPickTool('toolbarGroup-Annotate'));\n    }\n  }, [])\n\n  useEffect(() => {\n    if (ribbonsRef?.current && containerRef?.current) {\n      const ribbonsWidth = ribbonsRef.current.getBoundingClientRect().width + 4;\n      const containerWidth = containerRef.current.getBoundingClientRect().width;\n\n      const spaceLeftOfContainer = window.innerWidth / 2 - containerRef.current.getBoundingClientRect().left;\n      const spaceForLeftHalfOfRibbons = ribbonsWidth / 2;\n      // If there is enough space for the Ribbon to fit in half the screen, move it to the center\n      // otherwise keep it next to the buttons on the left\n      const spaceForRibbons = Math.max(spaceLeftOfContainer, spaceForLeftHalfOfRibbons);\n\n      ribbonsRef.current.style.left = spaceForRibbons + 'px';\n\n      if (ribbonsWidth < containerWidth) {\n        setHasEnoughCenteredSpace(true);\n      } else {\n        setHasEnoughCenteredSpace(false);\n      }\n    }\n  }, [ribbonsWidth, containerWidth, ribbonsRef, containerRef]);\n\n  if (toolbarGroups.length === 0 || !tReady) {\n    return null;\n  }\n\n  const getToolbarTranslationString = (toolbarGroup) => {\n    const toolbarGroupItems = toolbarHeaders[toolbarGroup];\n    if (toolbarGroupItems && toolbarGroupItems.name) {\n      return toolbarGroupItems.name;\n    }\n    return `option.toolbarGroup.${toolbarGroup}`;\n  }\n\n  return (\n    <Measure\n      bounds\n      innerRef={containerRef}\n      onResize={({ bounds }) => {\n        setContainerWidth(bounds.width);\n      }}\n    >\n      {({ measureRef }) => (\n        <DataElementWrapper\n          dataElement=\"ribbons\"\n          className={classNames('ribbons-container centered-on-empty-space')}\n          ref={measureRef}\n        >\n          <Measure\n            bounds\n            innerRef={ribbonsRef}\n            onResize={({ bounds }) => {\n              setRibbonsWidth(bounds.width);\n            }}\n          >\n            {({ measureRef }) => (\n              <div\n                ref={measureRef}\n                className={classNames({\n                  'ribbons': true,\n                  'is-hidden': !hasEnoughCenteredSpace,\n                })}\n              >\n                {toolbarGroups.map(toolbarGroup => (\n                  <button\n                    key={toolbarGroup}\n                    data-element={`${toolbarGroup}`}\n                    className={classNames({\n                      'ribbon-group': true,\n                      'active': toolbarGroup === currentToolbarGroup,\n                    })}\n                    onClick={() => {\n                      toggleFormFieldCreationMode(toolbarGroup);\n                      setToolbarGroup(toolbarGroup, shouldPickTool(toolbarGroup));\n                    }}\n                  >\n                    {t(getToolbarTranslationString(toolbarGroup))}\n                  </button>\n                ))\n                }\n              </div>\n            )}\n          </Measure>\n          <div\n            className={classNames({\n              'ribbons': true,\n              'is-hidden': hasEnoughCenteredSpace,\n            })}\n          >\n            <Dropdown\n              dataElement=\"ribbonsDropdown\"\n              items={toolbarGroups}\n              getTranslationLabel={getToolbarTranslationString}\n              currentSelectionKey={currentToolbarGroup}\n              onClickItem={toolbarGroup => {\n                toggleFormFieldCreationMode(toolbarGroup);\n                setToolbarGroup(toolbarGroup, shouldPickTool(toolbarGroup));\n              }}\n            />\n          </div>\n        </DataElementWrapper>\n      )}\n    </Measure>\n  );\n};\n\nexport default Ribbons;","import Ribbons from './Ribbons';\n\nexport default Ribbons;","import ApplyFormFieldButton from './ApplyFormFieldButton';\n\nexport default ApplyFormFieldButton;","import React, { useCallback } from 'react';\nimport Button from 'components/Button';\nimport core from 'core';\nimport actions from 'actions';\nimport { useDispatch } from 'react-redux';\nimport './ApplyFormFieldButton.scss'\n\nconst ApplyFormFieldButton = () => {\n  const dispatch = useDispatch();\n  const formFieldCreationManager = core.getFormFieldCreationManager();\n\n  const applyFormFields = useCallback(() => {\n    formFieldCreationManager.endFormFieldCreationMode();\n    dispatch(actions.setToolbarGroup('toolbarGroup-View'));\n  }, [formFieldCreationManager, dispatch])\n\n  return (\n    <Button\n      dataElement='applyFormFieldButton'\n      label='formField.apply'\n      className='apply-form-field-button'\n      onClick={applyFormFields}\n    />\n  );\n}\n\nexport default ApplyFormFieldButton;","import core from 'core';\n\nexport const undoButton = {\n  type: 'actionButton',\n  style: { 'marginLeft': '0px' },\n  dataElement: 'undoButton',\n  title: 'action.undo',\n  img: 'icon-operation-undo',\n  onClick: () => {\n    core.undo();\n  },\n  isNotClickableSelector: state => !state.viewer.canUndo\n};\n\nexport const redoButton = {\n  type: 'actionButton',\n  dataElement: 'redoButton',\n  title: 'action.redo',\n  img: 'icon-operation-redo',\n  onClick: () => {\n    core.redo();\n  },\n  isNotClickableSelector: state => !state.viewer.canRedo\n};\n","import localStorageManager from 'helpers/localStorageManager';\n\n// return true if user already seen the warning model and agree to hide it\nfunction isContentEditWarningHidden() {\n  if (localStorageManager.isLocalStorageEnabled() && window.localStorage.getItem('hideContentEditWarning')) {\n    return JSON.parse(window.localStorage.getItem('hideContentEditWarning'));\n  }\n  return false;\n}\n\nexport default isContentEditWarningHidden;","import React from 'react';\nimport actions from 'actions';\nimport core from 'core';\nimport ToggleZoomOverlay from 'components/ToggleZoomOverlay';\nimport ToolsOverlay from 'components/ToolsOverlay';\nimport Ribbons from 'components/Ribbons';\nimport ApplyFormFieldButton from 'components/ApplyFormFieldButton';\nimport DataElements from 'constants/dataElement';\nimport defaultTool from 'constants/defaultTool';\nimport { defaultZoomList } from 'constants/zoomFactors';\nimport { copyMapWithDataProperties } from 'constants/map';\nimport { defaultNoteDateFormat, defaultPrintedNoteDateFormat } from 'constants/defaultTimeFormat';\nimport getHashParameters from 'helpers/getHashParameters';\nimport localStorageManager from 'helpers/localStorageManager';\nimport { undoButton, redoButton } from 'helpers/commonToolbarElements';\nimport defaultFonts from 'constants/defaultFonts';\nimport isContentEditWarningHidden from 'helpers/isContentEditWarningHidden';\nimport presetCropDimensions from 'constants/presetCropDimensions';\nimport defaultDateTimeFormats from 'constants/defaultDateTimeFormats';\nimport { redactionTypeMap } from 'constants/redactionTypes';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default {\n  viewer: {\n    TabManager: null,\n    tabs: [],\n    activeTab: 0, // ID of active Tab (multi-tab)\n    isMultiTab: false,\n    thumbnailSelectingPages: false,\n    isInDesktopOnlyMode: false,\n    canUndo: false,\n    canRedo: false,\n    toolbarGroup: 'toolbarGroup-Annotate',\n    activeTheme: 'light',\n    currentLanguage: 'en',\n    disabledElements: {},\n    openElements: {\n      header: true,\n      toolsHeader: true,\n      [DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER]: true,\n      [DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER]: true,\n    },\n    panelWidths: {\n      leftPanel: 264,\n      searchPanel: 293,\n      notesPanel: 293,\n      redactionPanel: 330,\n      wv3dPropertiesPanel: 330,\n    },\n    documentContainerWidth: null,\n    documentContainerHeight: null,\n    lastPickedToolForGroup: {},\n    lastPickedToolGroup: {},\n    highContrastMode: getHashParameters('highContrastMode', false),\n    notesInLeftPanel: getHashParameters('notesInLeftPanel', false),\n    autoFocusNoteOnAnnotationSelection: getHashParameters('autoFocusNoteOnAnnotationSelection', true),\n    fadePageNavigationComponent: true,\n    pageDeletionConfirmationModalEnabled: true,\n    outlineControlVisibility: false,\n    hideContentEditWarning: isContentEditWarningHidden(),\n    currentContentBeingEdited: null,\n    headers: {\n      default: [\n        {\n          type: 'toggleElementButton',\n          img: 'icon-header-sidebar-line',\n          element: 'leftPanel',\n          dataElement: 'leftPanelButton',\n          title: 'component.leftPanel',\n        },\n        { type: 'divider' },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-header-page manipulation-line',\n          element: 'viewControlsOverlay',\n          dataElement: 'viewControlsButton',\n          title: 'component.viewControlsOverlay',\n        },\n        {\n          type: 'customElement',\n          render: () => <ToggleZoomOverlay />,\n          dataElement: 'zoomOverlayButton',\n          element: 'zoomOverlay',\n          hiddenOnMobileDevice: true,\n        },\n        { type: 'divider', hidden: ['small-mobile', 'mobile', 'tablet'] },\n        { type: 'toolButton', toolName: 'Pan' },\n        // For mobile\n        { type: 'toolButton', toolName: 'TextSelect' },\n        { type: 'toolButton', toolName: 'AnnotationEdit', hidden: ['small-mobile', 'mobile'] },\n        {\n          type: 'customElement',\n          render: () => <Ribbons />,\n          className: 'custom-ribbons-container',\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'searchButton',\n          element: 'searchPanel',\n          img: 'icon-header-search',\n          title: 'component.searchPanel',\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'toggleNotesButton',\n          img: 'icon-header-chat-line',\n          title: 'component.notesPanel',\n          element: 'notesPanel',\n          onClick: dispatch => {\n            dispatch(actions.toggleElement('notesPanel'));\n            // Trigger with a delay so we ensure the panel is open before we compute correct coordinates of annotation\n            setTimeout(() => dispatch(actions.toggleElement('annotationNoteConnectorLine')), 400);\n          },\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'menuButton',\n          element: 'menuOverlay',\n          img: 'icon-header-settings-line',\n          title: 'component.menuOverlay',\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'actionButton',\n          dataElement: 'moreButton',\n          title: 'action.more',\n          img: 'icon-tools-more',\n          onClick: dispatch => {\n            dispatch(actions.setActiveHeaderGroup('small-mobile-more-buttons'));\n            core.setToolMode(defaultTool);\n          },\n          hidden: ['mobile', 'tablet', 'desktop'],\n        },\n      ],\n      'small-mobile-more-buttons': [\n        {\n          type: 'toggleElementButton',\n          dataElement: 'searchButton',\n          element: 'searchPanel',\n          img: 'icon-header-search',\n          title: 'component.searchPanel',\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'toggleNotesButton',\n          element: 'notesPanel',\n          img: 'icon-header-chat-line',\n          title: 'component.notesPanel',\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'menuButton',\n          element: 'menuOverlay',\n          img: 'icon-header-settings-line',\n          title: 'component.menuOverlay',\n        },\n        { type: 'spacer' },\n        {\n          type: 'actionButton',\n          dataElement: 'defaultHeaderButton',\n          titile: 'action.close',\n          img: 'ic_close_black_24px',\n          onClick: dispatch => {\n            dispatch(actions.setActiveHeaderGroup('default'));\n            core.setToolMode(defaultTool);\n          },\n        },\n      ],\n      'toolbarGroup-View': [],\n      'toolbarGroup-Annotate': [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'highlightTools',\n          dataElement: 'highlightToolGroupButton',\n          title: 'annotation.highlight',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'underlineTools',\n          dataElement: 'underlineToolGroupButton',\n          title: 'annotation.underline',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'strikeoutTools',\n          dataElement: 'strikeoutToolGroupButton',\n          title: 'annotation.strikeout',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'squigglyTools',\n          dataElement: 'squigglyToolGroupButton',\n          title: 'annotation.squiggly',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'stickyTools',\n          dataElement: 'stickyToolGroupButton',\n          title: 'annotation.stickyNote',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeTextTools',\n          dataElement: 'freeTextToolGroupButton',\n          title: 'annotation.freetext',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleTools',\n          dataElement: 'shapeToolGroupButton',\n          title: 'annotation.rectangle',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandTools',\n          dataElement: 'freeHandToolGroupButton',\n          title: 'annotation.freehand',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandHighlightTools',\n          dataElement: 'freeHandHighlightToolGroupButton',\n          title: 'annotation.freeHandHighlight',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        {\n          ...undoButton,\n          hideOnClick: true,\n        },\n        {\n          ...redoButton,\n          hideOnClick: true,\n        },\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      'toolbarGroup-Shapes': [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandTools',\n          dataElement: 'freeHandToolGroupButton',\n          title: 'annotation.freehand',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandHighlightTools',\n          dataElement: 'freeHandHighlightToolGroupButton',\n          title: 'annotation.freeHandHighlight',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleTools',\n          dataElement: 'shapeToolGroupButton',\n          title: 'annotation.rectangle',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'ellipseTools',\n          dataElement: 'ellipseToolGroupButton',\n          title: 'annotation.ellipse',\n        },\n        { type: 'toolGroupButton', toolGroup: 'arcTools', dataElement: 'arcToolGroupButton', title: 'annotation.arc' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'polygonTools',\n          dataElement: 'polygonToolGroupButton',\n          title: 'annotation.polygon',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'cloudTools',\n          dataElement: 'polygonCloudToolGroupButton',\n          title: 'annotation.polygonCloud',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'lineTools',\n          dataElement: 'lineToolGroupButton',\n          title: 'annotation.line',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'polyLineTools',\n          dataElement: 'polyLineToolGroupButton',\n          title: 'annotation.polyline',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'arrowTools',\n          dataElement: 'arrowToolGroupButton',\n          title: 'annotation.arrow',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      'toolbarGroup-Redact': [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'redactionTools',\n          dataElement: 'redactionToolGroupButton',\n          title: 'annotation.redact',\n        },\n        {\n          type: 'actionButton',\n          toolGroup: 'pageRedactionTools',\n          dataElement: 'pageRedactionToolGroupButton',\n          title: 'action.redactPages',\n          showColor: 'never',\n          img: 'icon-tool-page-redact',\n          onClick: dispatch => dispatch(actions.openElement(DataElements.PAGE_REDACT_MODAL)),\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-redact-panel',\n          element: DataElements.REDACTION_PANEL,\n          dataElement: DataElements.REDACTION_PANEL_TOGGLE,\n          title: 'component.redactionPanel',\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      'toolbarGroup-Insert': [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'signatureTools',\n          img: 'icon-tool-signature',\n          dataElement: 'signatureToolGroupButton',\n          title: 'annotation.signature',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rubberStampTools',\n          img: 'icon-tool-stamp-line',\n          dataElement: 'rubberStampToolGroupButton',\n          title: 'annotation.rubberStamp',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'stampTools',\n          img: 'icon-tool-image-line',\n          dataElement: 'stampToolGroupButton',\n          title: 'annotation.image',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'fileAttachmentTools',\n          img: 'ic_fileattachment_24px',\n          dataElement: 'fileAttachmentToolGroupButton',\n          title: 'annotation.fileattachment',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'calloutTools',\n          dataElement: 'calloutToolGroupButton',\n          title: 'annotation.callout',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'model3DTools',\n          img: 'icon-tool-model3d',\n          dataElement: 'threeDToolGroupButton',\n          title: 'annotation.3D',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'changeViewTools',\n          dataElement: 'changeViewToolGroupButton',\n          title: 'annotation.changeView',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      'toolbarGroup-Measure': [\n        { type: 'spacer' },\n        // @todo: add \"measurement\" to data-element names in 9.0. Note: do not rename arcMeasurementTools to arcTools as it is being used elsewhere.\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'distanceTools',\n          dataElement: 'distanceToolGroupButton',\n          title: 'annotation.distanceMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'arcMeasurementTools',\n          dataElement: 'arcMeasurementToolGroupButton',\n          title: 'annotation.arcMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'perimeterTools',\n          dataElement: 'perimeterToolGroupButton',\n          title: 'annotation.perimeterMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'areaTools',\n          dataElement: 'areaToolGroupButton',\n          title: 'annotation.areaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'ellipseAreaTools',\n          dataElement: 'ellipseAreaToolGroupButton',\n          title: 'annotation.areaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleAreaTools',\n          dataElement: 'rectangleAreaToolGroupButton',\n          title: 'annotation.areaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'cloudyRectangleAreaTools',\n          dataElement: 'cloudyRectangleAreaToolGroupButton',\n          title: 'annotation.areaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'countTools',\n          dataElement: 'countToolGroupButton',\n          title: 'annotation.countMeasurement',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      'toolbarGroup-Edit': [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'cropTools',\n          dataElement: 'cropToolGroupButton',\n          title: 'annotation.crop',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'contentEditTools',\n          dataElement: 'contentEditButton',\n          title: 'action.edit',\n        },\n        { type: 'spacer', hidden: ['mobile', 'small-mobile'] },\n      ],\n      'toolbarGroup-FillAndSign': [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'signatureTools',\n          img: 'icon-tool-signature',\n          dataElement: 'signatureToolGroupButton',\n          title: 'annotation.signature',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeTextTools',\n          dataElement: 'freeTextToolGroupButton',\n          title: 'annotation.freetext',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'crossStampTools',\n          img: 'icon-tool-cross-stamp',\n          dataElement: 'crossStampToolButton',\n          title: 'annotation.formFillCross',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'checkStampTools',\n          img: 'icon-tool-check-stamp',\n          dataElement: 'checkStampToolButton',\n          title: 'annotation.formFillCheckmark',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'dotStampTools',\n          img: 'icon-tool-dot-stamp',\n          dataElement: 'dotStampToolButton',\n          title: 'annotation.formFillDot',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rubberStampTools',\n          img: 'icon-tool-stamp-line',\n          dataElement: 'rubberStampToolGroupButton',\n          title: 'annotation.rubberStamp',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'dateFreeTextTools',\n          dataElement: 'dateFreeTextToolButton',\n          title: 'annotation.dateFreeText',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      'toolbarGroup-Forms': [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'formFieldTools',\n          dataElement: 'textFieldToolGroupButton',\n          title: 'annotation.textField',\n          showColor: 'always',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'sigFieldTools',\n          dataElement: 'signatureFieldToolGroupButton',\n          title: 'annotation.signatureFormField',\n          showColor: 'always',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'checkBoxFieldTools',\n          dataElement: 'checkBoxFieldToolGroupButton',\n          title: 'annotation.checkBoxFormField',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'radioButtonFieldTools',\n          dataElement: 'radioButtonFieldToolGroupButton',\n          title: 'annotation.radioButtonFormField',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'listBoxFieldTools',\n          dataElement: 'listBoxFieldToolGroupButton',\n          title: 'annotation.listBoxFormField',\n          showColor: 'always',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'comboBoxFieldTools',\n          dataElement: 'comboBoxFieldToolGroupButton',\n          title: 'annotation.comboBoxFormField',\n          showColor: 'always',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        {\n          type: 'customElement',\n          dataElement: 'applyFormFieldsButton',\n          render: () => <ApplyFormFieldButton />,\n        },\n        { type: 'spacer', hidden: ['mobile', 'small-mobile'] },\n      ],\n    },\n    annotationPopup: [\n      { dataElement: 'viewFileButton' },\n      { dataElement: 'annotationCommentButton' },\n      { dataElement: 'annotationStyleEditButton' },\n      { dataElement: 'annotationDateEditButton' },\n      { dataElement: 'annotationRedactButton' },\n      { dataElement: 'annotationCropButton' },\n      { dataElement: 'annotationContentEditButton' },\n      { dataElement: 'annotationGroupButton' },\n      { dataElement: 'annotationUngroupButton' },\n      { dataElement: 'formFieldEditButton' },\n      { dataElement: 'calibrateButton' },\n      { dataElement: 'linkButton' },\n      { dataElement: 'fileAttachmentDownload' },\n      { dataElement: 'annotationDeleteButton' },\n      { dataElement: 'shortCutKeysFor3D' },\n      { dataElement: 'playSoundButton' },\n    ],\n    textPopup: [\n      { dataElement: 'copyTextButton' },\n      { dataElement: 'textHighlightToolButton' },\n      { dataElement: 'textUnderlineToolButton' },\n      { dataElement: 'textSquigglyToolButton' },\n      { dataElement: 'textStrikeoutToolButton' },\n      { dataElement: 'textRedactToolButton' },\n      { dataElement: 'linkButton' },\n    ],\n    contextMenuPopup: [\n      { dataElement: 'panToolButton' },\n      { dataElement: 'stickyToolButton' },\n      { dataElement: 'highlightToolButton' },\n      { dataElement: 'freeHandToolButton' },\n      { dataElement: 'freeHandHighlightToolButton' },\n      { dataElement: 'freeTextToolButton' },\n    ],\n    menuOverlay: [\n      { dataElement: 'filePickerButton' },\n      { dataElement: 'fullscreenButton' },\n      { dataElement: 'downloadButton' },\n      { dataElement: 'printButton' },\n      { dataElement: 'themeChangeButton' },\n      { dataElement: 'languageButton' },\n    ],\n    pageManipulationOverlay: [\n      { dataElement: 'pageAdditionalControls' },\n      { type: 'divider' },\n      { dataElement: 'pageRotationControls' },\n      { type: 'divider' },\n      { dataElement: 'pageInsertionControls' },\n      { type: 'divider' },\n      { dataElement: 'pageManipulationControls' },\n    ],\n    thumbnailControlMenu: [{ dataElement: 'thumbRotateClockwise' }, { dataElement: 'thumbDelete' }],\n    toolButtonObjects: {\n      AnnotationCreateCountMeasurement: {\n        dataElement: 'countMeasurementToolButton',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCountMeasurement2: {\n        dataElement: 'countMeasurementToolButton2',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCountMeasurement3: {\n        dataElement: 'countMeasurementToolButton3',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCountMeasurement4: {\n        dataElement: 'countMeasurementToolButton4',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement: {\n        dataElement: 'distanceMeasurementToolButton',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement2: {\n        dataElement: 'distanceMeasurementToolButton2',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement3: {\n        dataElement: 'distanceMeasurementToolButton3',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement4: {\n        dataElement: 'distanceMeasurementToolButton4',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement: {\n        dataElement: 'perimeterMeasurementToolButton',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement2: {\n        dataElement: 'perimeterMeasurementToolButton2',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement3: {\n        dataElement: 'perimeterMeasurementToolButton3',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement4: {\n        dataElement: 'perimeterMeasurementToolButton4',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement: {\n        dataElement: 'arcMeasurementToolButton',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement2: {\n        dataElement: 'arcMeasurementToolButton2',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement3: {\n        dataElement: 'arcMeasurementToolButton3',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement4: {\n        dataElement: 'arcMeasurementToolButton4',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement: {\n        dataElement: 'areaMeasurementToolButton',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement2: {\n        dataElement: 'areaMeasurementToolButton2',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement3: {\n        dataElement: 'areaMeasurementToolButton3',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement4: {\n        dataElement: 'areaMeasurementToolButton4',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement: {\n        dataElement: 'ellipseMeasurementToolButton',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement2: {\n        dataElement: 'ellipseMeasurementToolButton2',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement3: {\n        dataElement: 'ellipseMeasurementToolButton3',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement4: {\n        dataElement: 'ellipseMeasurementToolButton4',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement: {\n        dataElement: 'rectangularAreaMeasurementToolButton',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement2: {\n        dataElement: 'rectangularAreaMeasurementToolButton2',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement3: {\n        dataElement: 'rectangularAreaMeasurementToolButton3',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement4: {\n        dataElement: 'rectangularAreaMeasurementToolButton4',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement2: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton2',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement3: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton3',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement4: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton4',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand: {\n        dataElement: 'freeHandToolButton',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand2: {\n        dataElement: 'freeHandToolButton2',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand3: {\n        dataElement: 'freeHandToolButton3',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand4: {\n        dataElement: 'freeHandToolButton4',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight: {\n        dataElement: 'freeHandHighlightToolButton',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight2: {\n        dataElement: 'freeHandHighlightToolButton2',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight3: {\n        dataElement: 'freeHandHighlightToolButton3',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight4: {\n        dataElement: 'freeHandHighlightToolButton4',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight: {\n        dataElement: 'highlightToolButton',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight2: {\n        dataElement: 'highlightToolButton2',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight3: {\n        dataElement: 'highlightToolButton3',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight4: {\n        dataElement: 'highlightToolButton4',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline: {\n        dataElement: 'underlineToolButton',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline2: {\n        dataElement: 'underlineToolButton2',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline3: {\n        dataElement: 'underlineToolButton3',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline4: {\n        dataElement: 'underlineToolButton4',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly: {\n        dataElement: 'squigglyToolButton',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly2: {\n        dataElement: 'squigglyToolButton2',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly3: {\n        dataElement: 'squigglyToolButton3',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly4: {\n        dataElement: 'squigglyToolButton4',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout: {\n        dataElement: 'strikeoutToolButton',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout2: {\n        dataElement: 'strikeoutToolButton2',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout3: {\n        dataElement: 'strikeoutToolButton3',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout4: {\n        dataElement: 'strikeoutToolButton4',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText: {\n        dataElement: 'freeTextToolButton',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText2: {\n        dataElement: 'freeTextToolButton2',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText3: {\n        dataElement: 'freeTextToolButton3',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText4: {\n        dataElement: 'freeTextToolButton4',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText: {\n        dataElement: 'dateFreeTextToolButton',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText2: {\n        dataElement: 'dateFreeTextToolButton2',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText3: {\n        dataElement: 'dateFreeTextToolButton3',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText4: {\n        dataElement: 'dateFreeTextToolButton4',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout: {\n        dataElement: 'calloutToolButton',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout2: {\n        dataElement: 'calloutToolButton2',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout3: {\n        dataElement: 'calloutToolButton3',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout4: {\n        dataElement: 'calloutToolButton4',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky: {\n        dataElement: 'stickyToolButton',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky2: {\n        dataElement: 'stickyToolButton2',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky3: {\n        dataElement: 'stickyToolButton3',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky4: {\n        dataElement: 'stickyToolButton4',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle: {\n        dataElement: 'rectangleToolButton',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle2: {\n        dataElement: 'rectangleToolButton2',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle3: {\n        dataElement: 'rectangleToolButton3',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle4: {\n        dataElement: 'rectangleToolButton4',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse: {\n        dataElement: 'ellipseToolButton',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse2: {\n        dataElement: 'ellipseToolButton2',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse3: {\n        dataElement: 'ellipseToolButton3',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse4: {\n        dataElement: 'ellipseToolButton4',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc: {\n        dataElement: 'arcToolButton',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc2: {\n        dataElement: 'arcToolButton2',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc3: {\n        dataElement: 'arcToolButton3',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc4: {\n        dataElement: 'arcToolButton4',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine: {\n        dataElement: 'lineToolButton',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine2: {\n        dataElement: 'lineToolButton2',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine3: {\n        dataElement: 'lineToolButton3',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine4: {\n        dataElement: 'lineToolButton4',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline: {\n        dataElement: 'polylineToolButton',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline2: {\n        dataElement: 'polylineToolButton2',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline3: {\n        dataElement: 'polylineToolButton3',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline4: {\n        dataElement: 'polylineToolButton4',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon: {\n        dataElement: 'polygonToolButton',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon2: {\n        dataElement: 'polygonToolButton2',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon3: {\n        dataElement: 'polygonToolButton3',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon4: {\n        dataElement: 'polygonToolButton4',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud: {\n        dataElement: 'cloudToolButton',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud2: {\n        dataElement: 'cloudToolButton2',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud3: {\n        dataElement: 'cloudToolButton4',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud4: {\n        dataElement: 'cloudToolButton5',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow: {\n        dataElement: 'arrowToolButton',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow2: {\n        dataElement: 'arrowToolButton2',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow3: {\n        dataElement: 'arrowToolButton3',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow4: {\n        dataElement: 'arrowToolButton4',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSignature: {\n        dataElement: 'signatureToolButton',\n        title: 'annotation.signature',\n        img: 'icon-tool-signature',\n        group: 'signatureTools',\n        showColor: 'never',\n      },\n      AnnotationCreateFileAttachment: {\n        dataElement: 'fileAttachmentToolButton',\n        title: 'annotation.fileattachment',\n        img: 'ic_fileattachment_24px',\n        group: 'fileAttachmentTools',\n        showColor: 'never',\n      },\n      AnnotationCreateThreeD: {\n        dataElement: 'threeDToolGroupButton',\n        title: 'annotation.3D',\n        img: 'icon-tool-model3d',\n        group: 'model3DTools',\n        showColor: 'never',\n      },\n      AnnotationCreateStamp: {\n        dataElement: 'stampToolButton',\n        title: 'annotation.stamp',\n        img: 'icon-tool-image-line',\n        group: 'stampTools',\n        showColor: 'active',\n      },\n      AnnotationCreateRubberStamp: {\n        dataElement: 'rubberStampToolButton',\n        title: 'annotation.rubberStamp',\n        img: 'icon-tool-stamp-line',\n        group: 'rubberStampTools',\n        showColor: 'active',\n      },\n      [ToolNames.FORM_FILL_CROSS]: {\n        dataElement: 'crossStampToolButton',\n        title: 'annotation.formFillCross',\n        img: 'icon-tool-cross-stamp',\n        group: 'crossStampTools',\n        showColor: 'active',\n      },\n      [ToolNames.FORM_FILL_CHECKMARK]: {\n        dataElement: 'checkStampToolButton',\n        title: 'annotation.formFillCheckmark',\n        img: 'icon-tool-check-stamp',\n        group: 'checkStampTools',\n        showColor: 'active',\n      },\n      [ToolNames.FORM_FILL_DOT]: {\n        dataElement: 'dotStampToolButton',\n        title: 'annotation.formFillDot',\n        img: 'icon-tool-dot-stamp',\n        group: 'dotStampTools',\n        showColor: 'active',\n      },\n      CropPage: {\n        dataElement: 'cropToolButton',\n        title: 'annotation.crop',\n        img: 'ic_crop_black_24px',\n        showColor: 'never',\n        group: 'cropTools',\n      },\n      ContentEditTool: {\n        dataElement: 'contentEditToolButton',\n        title: 'action.edit',\n        img: 'ic_edit_page_24px',\n        showColor: 'never',\n        group: 'contentEditTools',\n      },\n      AnnotationCreateRedaction: {\n        dataElement: 'redactionButton',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRedaction2: {\n        dataElement: 'redactionButton2',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRedaction3: {\n        dataElement: 'redactionButton3',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRedaction4: {\n        dataElement: 'redactionButton4',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      Pan: { dataElement: 'panToolButton', title: 'tool.pan', img: 'icon-header-pan', showColor: 'never' },\n      AnnotationEdit: {\n        dataElement: 'selectToolButton',\n        title: 'tool.select',\n        img: 'multi select',\n        showColor: 'never',\n      },\n      TextSelect: { dataElement: 'textSelectButton', img: 'icon - header - select - line', showColor: 'never' },\n      MarqueeZoomTool: { dataElement: 'marqueeToolButton', showColor: 'never' },\n      AnnotationEraserTool: {\n        dataElement: 'eraserToolButton',\n        title: 'annotation.eraser',\n        img: 'icon-operation-eraser',\n        showColor: 'never',\n      },\n      TextFormFieldCreateTool: {\n        dataElement: 'textFieldToolButton',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      TextFormFieldCreateTool2: {\n        dataElement: 'textFieldToolButton2',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      TextFormFieldCreateTool3: {\n        dataElement: 'textFieldToolButton3',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      TextFormFieldCreateTool4: {\n        dataElement: 'textFieldToolButton4',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool: {\n        dataElement: 'signatureFieldToolButton',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool2: {\n        dataElement: 'signatureFieldToolButton2',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool3: {\n        dataElement: 'signatureFieldToolButton3',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool4: {\n        dataElement: 'signatureFieldToolButton4',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      CheckBoxFormFieldCreateTool: {\n        dataElement: 'checkBoxFieldCreateToolButton',\n        title: 'annotation.checkBoxFormField',\n        img: 'icon-form-field-checkbox',\n        group: 'checkBoxFieldTools',\n        showColor: 'never',\n      },\n      RadioButtonFormFieldCreateTool: {\n        dataElement: 'radioButtonFieldCreateToolButton',\n        title: 'annotation.radioButtonFormField',\n        img: 'icon-form-field-radiobutton',\n        group: 'radioButtonFieldTools',\n        showColor: 'never',\n      },\n      ListBoxFormFieldCreateTool: {\n        dataElement: 'listBoxFieldCreateToolButton',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ListBoxFormFieldCreateTool2: {\n        dataElement: 'listBoxFieldCreateToolButton2',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ListBoxFormFieldCreateTool3: {\n        dataElement: 'listBoxFieldCreateToolButton3',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ListBoxFormFieldCreateTool4: {\n        dataElement: 'listBoxFieldCreateToolButton4',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool: {\n        dataElement: 'comboBoxFieldCreateToolButton',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool2: {\n        dataElement: 'comboBoxFieldCreateToolButton2',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool3: {\n        dataElement: 'comboBoxFieldCreateToolButton3',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool4: {\n        dataElement: 'comboBoxFieldCreateToolButton4',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool: {\n        dataElement: 'changeViewCreateToolButton',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool2: {\n        dataElement: 'changeViewCreateToolButton2',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool3: {\n        dataElement: 'changeViewCreateToolButton3',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool4: {\n        dataElement: 'changeViewCreateToolButton4',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n    },\n    tab: {\n      signatureModal: 'inkSignaturePanelButton',\n      pageReplacementModal: 'urlInputPanelButton',\n      linkModal: 'URLPanelButton',\n      rubberStampTab: 'standardStampPanelButton',\n      filterAnnotModal: DataElements.ANNOTATION_USER_FILTER_PANEL_BUTTON,\n    },\n    customElementOverrides: {},\n    activeHeaderGroup: 'default',\n    activeToolName: 'AnnotationEdit',\n    activeToolStyles: {},\n    customColors:\n      localStorageManager.isLocalStorageEnabled() && window.localStorage.getItem('customColors')\n        ? JSON.parse(window.localStorage.getItem('customColors'))\n        : [],\n    activeLeftPanel: 'thumbnailsPanel',\n    activeToolGroup: '',\n    notePopupId: '',\n    isNoteEditing: false,\n    fitMode: '',\n    zoom: 1,\n    rotation: 0,\n    displayMode: 'Single',\n    currentPage: 1,\n    sortStrategy: 'position',\n    isFullScreen: false,\n    isMultipleViewerMerging: false,\n    isThumbnailMerging: true,\n    isThumbnailReordering: true,\n    isThumbnailMultiselect: true,\n    isOutlineEditing: true,\n    enableNotesPanelVirtualizedList: true,\n    notesShowLastUpdatedDate: false,\n    allowPageNavigation: true,\n    enableToolGroupReordering: true,\n    enableNoteSubmissionWithEnter: false,\n    isNotesPanelTextCollapsingEnabled: true,\n    isNotesPanelRepliesCollapsingEnabled: true,\n    isCommentThreadExpansionEnabled: false,\n    enableMouseWheelZoom: true,\n    doesAutoLoad: getHashParameters('auto_load', true),\n    isReadOnly: getHashParameters('readonly', false),\n    customModals: [],\n    customPanels: [],\n    useEmbeddedPrint: false,\n    pageLabels: [],\n    selectedThumbnailPageIndexes: [],\n    shiftKeyThumbnailPivotIndex: null,\n    noteDateFormat: defaultNoteDateFormat,\n    printedNoteDateFormat: defaultPrintedNoteDateFormat,\n    colorMap: copyMapWithDataProperties('currentPalette', 'iconColor'),\n    warning: {},\n    customNoteFilter: null,\n    zoomList: defaultZoomList,\n    isAccessibleMode: getHashParameters('accessibleMode', false),\n    measurementUnits: {\n      from: ['in', 'mm', 'cm', 'pt'],\n      to: ['in', 'mm', 'cm', 'pt', 'ft', 'ft-in', 'm', 'yd', 'km', 'mi'],\n    },\n    maxSignaturesCount: 4,\n    signatureFonts: ['GreatVibes-Regular'],\n    isReplyDisabledFunc: null,\n    userData: [],\n    customMeasurementOverlay: [],\n    noteTransformFunction: null,\n    standardStamps: [],\n    customStamps: [],\n    selectedStampIndex: 0,\n    savedSignatures: [],\n    displayedSavedSignatures: [],\n    displayedSignaturesFilterFunction: () => true,\n    selectedDisplayedSignatureIndex: 0,\n    annotationContentOverlayHandler: null,\n    isSnapModeEnabled: false,\n    isReaderMode: false,\n    unreadAnnotationIdSet: new Set(),\n    certificates: [],\n    trustLists: [],\n    validationModalWidgetName: '',\n    verificationResult: {},\n    watermarkModalOptions: null,\n    fonts: defaultFonts,\n    shouldResetAudioPlaybackPosition: false,\n    activeSoundAnnotation: null,\n    presetCropDimensions,\n    dateTimeFormats: defaultDateTimeFormats,\n    thumbnailSelectionMode: 'checkbox',\n    annotationFilters: {\n      includeReplies: true,\n      authorFilter: [],\n      colorFilter: [],\n      typeFilter: [],\n      statusFilter: [],\n    },\n    zoomStepFactors: [\n      {\n        step: 7.5,\n        startZoom: 0,\n      },\n      {\n        step: 25,\n        startZoom: 80,\n      },\n      {\n        step: 50,\n        startZoom: 150,\n      },\n      {\n        step: 100,\n        startZoom: 250,\n      },\n      {\n        step: 200,\n        startZoom: 400,\n      },\n      {\n        step: 400,\n        startZoom: 800,\n      },\n      {\n        step: 800,\n        startZoom: 3200,\n      },\n      {\n        step: 1600,\n        startZoom: 6400,\n      },\n    ],\n  },\n  search: {\n    value: '',\n    isCaseSensitive: false,\n    isWholeWord: false,\n    isWildcard: false,\n    isRegex: false,\n    isSearchUp: false,\n    isAmbientString: false,\n    clearSearchPanelOnClose: false,\n    results: [],\n    redactionSearchPatterns: {\n      creditCards: {\n        label: 'redactionPanel.search.creditCards',\n        icon: 'redact-icons-credit-card',\n        type: redactionTypeMap['CREDIT_CARD'],\n        regex: /\\b(?:\\d[ -]*?){13,16}\\b/,\n      },\n      phoneNumbers: {\n        label: 'redactionPanel.search.phoneNumbers',\n        icon: 'redact-icons-phone-number',\n        type: redactionTypeMap['PHONE'],\n        regex: /\\d?(\\s?|-?|\\+?|\\.?)((\\(\\d{1,4}\\))|(\\d{1,3})|\\s?)(\\s?|-?|\\.?)((\\(\\d{1,3}\\))|(\\d{1,3})|\\s?)(\\s?|-?|\\.?)((\\(\\d{1,3}\\))|(\\d{1,3})|\\s?)(\\s?|-?|\\.?)\\d{3}(-|\\.|\\s)\\d{4,5}/,\n      },\n      emails: {\n        label: 'redactionPanel.search.emails',\n        icon: 'redact-icons-email',\n        type: redactionTypeMap['EMAIL'],\n        regex: /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}\\b/,\n      },\n    },\n  },\n  document: {\n    totalPages: 0,\n    outlines: [],\n    bookmarks: {},\n    layers: [],\n    printQuality: 1,\n    passwordAttempts: -1,\n    loadingProgress: 0,\n  },\n  user: {\n    name: getHashParameters('user', 'Guest'),\n    isAdmin: getHashParameters('admin', false),\n  },\n  advanced: {\n    customCSS: getHashParameters('css', null),\n    defaultDisabledElements: getHashParameters('disabledElements', ''),\n    fullAPI: getHashParameters('pdfnet', false),\n    preloadWorker: getHashParameters('preloadWorker', false),\n    enableOptimizedWorkers: getHashParameters('enableOptimizedWorkers', true),\n    serverUrl: getHashParameters('server_url', ''),\n    serverUrlHeaders: JSON.parse(getHashParameters('serverUrlHeaders', '{}')),\n    useSharedWorker: getHashParameters('useSharedWorker', false),\n    disableI18n: getHashParameters('disableI18n', false),\n    pdfWorkerTransportPromise: null,\n    officeWorkerTransportPromise: null,\n    disableIndexedDB: getHashParameters('disableIndexedDB', false),\n  },\n  featureFlags: {},\n  wv3dPropertiesPanel: {\n    modelData: [],\n    schema: {\n      headerName: 'Name',\n      defaultValues: {},\n      groups: {},\n      groupOrder: [],\n      removeEmptyRows: false,\n      removeEmptyGroups: false,\n      createRawValueGroup: true,\n    },\n  },\n};\n","// Websafe Fonts that should be available on all devices\nexport default [\n  'Helvetica',\n  'Times New Roman',\n  'Courier',\n  'Georgia',\n  'serif',\n  'Verdana',\n  'sans-serif',\n  'Lucida Console',\n  'monospace',\n  'Tahoma',\n  'Trebuchet MS',\n  'Garamond',\n  'Brush Script MT',\n];","export default {\n  'Letter': {\n    'yOffset': 0,\n    'height': 11,\n    'xOffset': 0,\n    'width': 8.5,\n  },\n  'Half letter': {\n    'yOffset': 0,\n    'height': 5.5,\n    'xOffset': 0,\n    'width': 8.5,\n  },\n  'Junior legal': {\n    'yOffset': 0,\n    'height': 5,\n    'xOffset': 0,\n    'width': 8,\n  },\n};\n","/*\n* Default Date and Time Formats used in the Custom Stamp Modal\n* date and time will be joined with a space in between for the dropdown in the Modal\n* If timeFirst is set to true, the time will be added infront of the date instead of at the end\n*/\nexport default [\n  {\n    date: 'DD/MM/YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'DD/MM/YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'DD/MM/YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'DD/MM/YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'YYYY/MM/DD',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'YYYY/MM/DD',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'DD MMM YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'DD MMM YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'MMMM DD, YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'MMMM DD, YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n];","export default initialState => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_WV3D_PROPERTIES_PANEL_MODEL_DATA': {\n      const { modelData } = payload;\n\n      return {\n        ...state,\n        modelData,\n      };\n    }\n\n    case 'SET_WV3D_PROPERTIES_PANEL_SCHEMA': {\n      const { schema } = payload;\n\n      return {\n        ...state,\n        schema,\n      };\n    }\n\n    default:\n      return state;\n  }\n};\n","export var KEY_PREFIX = 'persist:';\nexport var FLUSH = 'persist/FLUSH';\nexport var REHYDRATE = 'persist/REHYDRATE';\nexport var PAUSE = 'persist/PAUSE';\nexport var PERSIST = 'persist/PERSIST';\nexport var PURGE = 'persist/PURGE';\nexport var REGISTER = 'persist/REGISTER';\nexport var DEFAULT_VERSION = -1;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n  autoMergeLevel1: \n    - merges 1 level of substate\n    - skips substate if already modified\n*/\nexport default function autoMergeLevel1(inboundState, originalState, reducedState, _ref) {\n  var debug = _ref.debug;\n\n  var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n  if (inboundState && _typeof(inboundState) === 'object') {\n    Object.keys(inboundState).forEach(function (key) {\n      // ignore _persist data\n      if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n      if (originalState[key] !== reducedState[key]) {\n        if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n        return;\n      } // otherwise hard set the new value\n\n\n      newState[key] = inboundState[key];\n    });\n  }\n\n  if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n  return newState;\n}","import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n  // defaults\n  var blacklist = config.blacklist || null;\n  var whitelist = config.whitelist || null;\n  var transforms = config.transforms || [];\n  var throttle = config.throttle || 0;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var serialize;\n\n  if (config.serialize === false) {\n    serialize = function serialize(x) {\n      return x;\n    };\n  } else if (typeof config.serialize === 'function') {\n    serialize = config.serialize;\n  } else {\n    serialize = defaultSerialize;\n  }\n\n  var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n  var lastState = {};\n  var stagedState = {};\n  var keysToProcess = [];\n  var timeIterator = null;\n  var writePromise = null;\n\n  var update = function update(state) {\n    // add any changed keys to the queue\n    Object.keys(state).forEach(function (key) {\n      if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n      if (lastState[key] === state[key]) return; // value unchanged? noop\n\n      if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n      keysToProcess.push(key); // add key to queue\n    }); //if any key is missing in the new state which was present in the lastState,\n    //add it for processing too\n\n    Object.keys(lastState).forEach(function (key) {\n      if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n        keysToProcess.push(key);\n      }\n    }); // start the time iterator if not running (read: throttle)\n\n    if (timeIterator === null) {\n      timeIterator = setInterval(processNextKey, throttle);\n    }\n\n    lastState = state;\n  };\n\n  function processNextKey() {\n    if (keysToProcess.length === 0) {\n      if (timeIterator) clearInterval(timeIterator);\n      timeIterator = null;\n      return;\n    }\n\n    var key = keysToProcess.shift();\n    var endState = transforms.reduce(function (subState, transformer) {\n      return transformer.in(subState, key, lastState);\n    }, lastState[key]);\n\n    if (endState !== undefined) {\n      try {\n        stagedState[key] = serialize(endState);\n      } catch (err) {\n        console.error('redux-persist/createPersistoid: error serializing state', err);\n      }\n    } else {\n      //if the endState is undefined, no need to persist the existing serialized content\n      delete stagedState[key];\n    }\n\n    if (keysToProcess.length === 0) {\n      writeStagedState();\n    }\n  }\n\n  function writeStagedState() {\n    // cleanup any removed keys just before write.\n    Object.keys(stagedState).forEach(function (key) {\n      if (lastState[key] === undefined) {\n        delete stagedState[key];\n      }\n    });\n    writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n  }\n\n  function passWhitelistBlacklist(key) {\n    if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n    if (blacklist && blacklist.indexOf(key) !== -1) return false;\n    return true;\n  }\n\n  function onWriteFail(err) {\n    // @TODO add fail handlers (typically storage full)\n    if (writeFailHandler) writeFailHandler(err);\n\n    if (err && process.env.NODE_ENV !== 'production') {\n      console.error('Error storing data', err);\n    }\n  }\n\n  var flush = function flush() {\n    while (keysToProcess.length !== 0) {\n      processNextKey();\n    }\n\n    return writePromise || Promise.resolve();\n  }; // return `persistoid`\n\n\n  return {\n    update: update,\n    flush: flush\n  };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n  return JSON.stringify(data);\n}","import { KEY_PREFIX } from './constants';\nexport default function getStoredState(config) {\n  var transforms = config.transforms || [];\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var debug = config.debug;\n  var deserialize;\n\n  if (config.deserialize === false) {\n    deserialize = function deserialize(x) {\n      return x;\n    };\n  } else if (typeof config.deserialize === 'function') {\n    deserialize = config.deserialize;\n  } else {\n    deserialize = defaultDeserialize;\n  }\n\n  return storage.getItem(storageKey).then(function (serialized) {\n    if (!serialized) return undefined;else {\n      try {\n        var state = {};\n        var rawState = deserialize(serialized);\n        Object.keys(rawState).forEach(function (key) {\n          state[key] = transforms.reduceRight(function (subState, transformer) {\n            return transformer.out(subState, key, rawState);\n          }, deserialize(rawState[key]));\n        });\n        return state;\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'production' && debug) console.log(\"redux-persist/getStoredState: Error restoring data \".concat(serialized), err);\n        throw err;\n      }\n    }\n  });\n}\n\nfunction defaultDeserialize(serial) {\n  return JSON.parse(serial);\n}","import { KEY_PREFIX } from './constants';\nexport default function purgeStoredState(config) {\n  var storage = config.storage;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  return storage.removeItem(storageKey, warnIfRemoveError);\n}\n\nfunction warnIfRemoveError(err) {\n  if (err && process.env.NODE_ENV !== 'production') {\n    console.error('redux-persist/purgeStoredState: Error purging data stored state', err);\n  }\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { FLUSH, PAUSE, PERSIST, PURGE, REHYDRATE, DEFAULT_VERSION } from './constants';\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1';\nimport createPersistoid from './createPersistoid';\nimport defaultGetStoredState from './getStoredState';\nimport purgeStoredState from './purgeStoredState';\nvar DEFAULT_TIMEOUT = 5000;\n/*\n  @TODO add validation / handling for:\n  - persisting a reducer which has nested _persist\n  - handling actions that fire before reydrate is called\n*/\n\nexport default function persistReducer(config, baseReducer) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!config) throw new Error('config is required for persistReducer');\n    if (!config.key) throw new Error('key is required in persistor config');\n    if (!config.storage) throw new Error(\"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\");\n  }\n\n  var version = config.version !== undefined ? config.version : DEFAULT_VERSION;\n  var debug = config.debug || false;\n  var stateReconciler = config.stateReconciler === undefined ? autoMergeLevel1 : config.stateReconciler;\n  var getStoredState = config.getStoredState || defaultGetStoredState;\n  var timeout = config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT;\n  var _persistoid = null;\n  var _purge = false;\n  var _paused = true;\n\n  var conditionalUpdate = function conditionalUpdate(state) {\n    // update the persistoid only if we are rehydrated and not paused\n    state._persist.rehydrated && _persistoid && !_paused && _persistoid.update(state);\n    return state;\n  };\n\n  return function (state, action) {\n    var _ref = state || {},\n        _persist = _ref._persist,\n        rest = _objectWithoutProperties(_ref, [\"_persist\"]); // $FlowIgnore need to update State type\n\n\n    var restState = rest;\n\n    if (action.type === PERSIST) {\n      var _sealed = false;\n\n      var _rehydrate = function _rehydrate(payload, err) {\n        // dev warning if we are already sealed\n        if (process.env.NODE_ENV !== 'production' && _sealed) console.error(\"redux-persist: rehydrate for \\\"\".concat(config.key, \"\\\" called after timeout.\"), payload, err); // only rehydrate if we are not already sealed\n\n        if (!_sealed) {\n          action.rehydrate(config.key, payload, err);\n          _sealed = true;\n        }\n      };\n\n      timeout && setTimeout(function () {\n        !_sealed && _rehydrate(undefined, new Error(\"redux-persist: persist timed out for persist key \\\"\".concat(config.key, \"\\\"\")));\n      }, timeout); // @NOTE PERSIST resumes if paused.\n\n      _paused = false; // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n\n      if (!_persistoid) _persistoid = createPersistoid(config); // @NOTE PERSIST can be called multiple times, noop after the first\n\n      if (_persist) {\n        // We still need to call the base reducer because there might be nested\n        // uses of persistReducer which need to be aware of the PERSIST action\n        return _objectSpread({}, baseReducer(restState, action), {\n          _persist: _persist\n        });\n      }\n\n      if (typeof action.rehydrate !== 'function' || typeof action.register !== 'function') throw new Error('redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.');\n      action.register(config.key);\n      getStoredState(config).then(function (restoredState) {\n        var migrate = config.migrate || function (s, v) {\n          return Promise.resolve(s);\n        };\n\n        migrate(restoredState, version).then(function (migratedState) {\n          _rehydrate(migratedState);\n        }, function (migrateErr) {\n          if (process.env.NODE_ENV !== 'production' && migrateErr) console.error('redux-persist: migration error', migrateErr);\n\n          _rehydrate(undefined, migrateErr);\n        });\n      }, function (err) {\n        _rehydrate(undefined, err);\n      });\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: {\n          version: version,\n          rehydrated: false\n        }\n      });\n    } else if (action.type === PURGE) {\n      _purge = true;\n      action.result(purgeStoredState(config));\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: _persist\n      });\n    } else if (action.type === FLUSH) {\n      action.result(_persistoid && _persistoid.flush());\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: _persist\n      });\n    } else if (action.type === PAUSE) {\n      _paused = true;\n    } else if (action.type === REHYDRATE) {\n      // noop on restState if purging\n      if (_purge) return _objectSpread({}, restState, {\n        _persist: _objectSpread({}, _persist, {\n          rehydrated: true\n        }) // @NOTE if key does not match, will continue to default else below\n\n      });\n\n      if (action.key === config.key) {\n        var reducedState = baseReducer(restState, action);\n        var inboundState = action.payload; // only reconcile state if stateReconciler and inboundState are both defined\n\n        var reconciledRest = stateReconciler !== false && inboundState !== undefined ? stateReconciler(inboundState, state, reducedState, config) : reducedState;\n\n        var _newState = _objectSpread({}, reconciledRest, {\n          _persist: _objectSpread({}, _persist, {\n            rehydrated: true\n          })\n        });\n\n        return conditionalUpdate(_newState);\n      }\n    } // if we have not already handled PERSIST, straight passthrough\n\n\n    if (!_persist) return baseReducer(state, action); // run base reducer:\n    // is state modified ? return original : return updated\n\n    var newState = baseReducer(restState, action);\n    if (newState === restState) return state;\n    return conditionalUpdate(_objectSpread({}, newState, {\n      _persist: _persist\n    }));\n  };\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createStore } from 'redux';\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants';\nvar initialState = {\n  registry: [],\n  bootstrapped: false\n};\n\nvar persistorReducer = function persistorReducer() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case REGISTER:\n      return _objectSpread({}, state, {\n        registry: [].concat(_toConsumableArray(state.registry), [action.key])\n      });\n\n    case REHYDRATE:\n      var firstIndex = state.registry.indexOf(action.key);\n\n      var registry = _toConsumableArray(state.registry);\n\n      registry.splice(firstIndex, 1);\n      return _objectSpread({}, state, {\n        registry: registry,\n        bootstrapped: registry.length === 0\n      });\n\n    default:\n      return state;\n  }\n};\n\nexport default function persistStore(store, options, cb) {\n  // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n  if (process.env.NODE_ENV !== 'production') {\n    var optionsToTest = options || {};\n    var bannedKeys = ['blacklist', 'whitelist', 'transforms', 'storage', 'keyPrefix', 'migrate'];\n    bannedKeys.forEach(function (k) {\n      if (!!optionsToTest[k]) console.error(\"redux-persist: invalid option passed to persistStore: \\\"\".concat(k, \"\\\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.\"));\n    });\n  }\n\n  var boostrappedCb = cb || false;\n\n  var _pStore = createStore(persistorReducer, initialState, options && options.enhancer ? options.enhancer : undefined);\n\n  var register = function register(key) {\n    _pStore.dispatch({\n      type: REGISTER,\n      key: key\n    });\n  };\n\n  var rehydrate = function rehydrate(key, payload, err) {\n    var rehydrateAction = {\n      type: REHYDRATE,\n      payload: payload,\n      err: err,\n      key: key // dispatch to `store` to rehydrate and `persistor` to track result\n\n    };\n    store.dispatch(rehydrateAction);\n\n    _pStore.dispatch(rehydrateAction);\n\n    if (boostrappedCb && persistor.getState().bootstrapped) {\n      boostrappedCb();\n      boostrappedCb = false;\n    }\n  };\n\n  var persistor = _objectSpread({}, _pStore, {\n    purge: function purge() {\n      var results = [];\n      store.dispatch({\n        type: PURGE,\n        result: function result(purgeResult) {\n          results.push(purgeResult);\n        }\n      });\n      return Promise.all(results);\n    },\n    flush: function flush() {\n      var results = [];\n      store.dispatch({\n        type: FLUSH,\n        result: function result(flushResult) {\n          results.push(flushResult);\n        }\n      });\n      return Promise.all(results);\n    },\n    pause: function pause() {\n      store.dispatch({\n        type: PAUSE\n      });\n    },\n    persist: function persist() {\n      store.dispatch({\n        type: PERSIST,\n        register: register,\n        rehydrate: rehydrate\n      });\n    }\n  });\n\n  if (!(options && options.manualPersist)) {\n    persistor.persist();\n  }\n\n  return persistor;\n}","import localStorageManager from 'helpers/localStorageManager';\n\nexport default initialState => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_PRESET_CROP_DIMENSIONS':\n      return {\n        ...state,\n        presetCropDimensions: payload.presetCropDimensions,\n      };\n    case 'SET_DATE_TIME_FORMATS':\n      return {\n        ...state,\n        dateTimeFormats: payload.dateTimeFormats,\n      };\n    case 'SET_THUMBNAIL_SELECTION_MODE':\n      return {\n        ...state,\n        thumbnailSelectionMode: payload.thumbnailSelectionMode,\n      };\n    case 'SET_FONTS':\n      return {\n        ...state,\n        fonts: payload.fonts,\n      };\n    case 'SET_ACTIVE_TAB':\n      return {\n        ...state,\n        activeTab: payload.activeTab,\n      };\n    case 'SET_TABS':\n      return {\n        ...state,\n        tabs: payload.tabs,\n      };\n    case 'SET_IS_MULTI_TAB':\n      return {\n        ...state,\n        isMultiTab: payload.isMultiTab,\n      };\n    case 'SET_TAB_MANAGER':\n      return {\n        ...state,\n        TabManager: payload.TabManager,\n      };\n    case 'SET_THUMBNAIL_PAGE_SELECT':\n      return {\n        ...state,\n        thumbnailSelectingPages: payload.isSelecting,\n      };\n    case 'SET_HIGH_CONTRAST_MODE':\n      return {\n        ...state,\n        highContrastMode: payload.useHighContrastMode,\n      };\n    case 'SET_CAN_UNDO':\n      return {\n        ...state,\n        canUndo: payload.canUndo,\n      };\n    case 'SET_CAN_REDO':\n      return {\n        ...state,\n        canRedo: payload.canRedo,\n      };\n    case 'SET_LAST_PICKED_TOOL_FOR_GROUP':\n      return {\n        ...state,\n        lastPickedToolForGroup: {\n          ...state.lastPickedToolForGroup,\n          [payload.group]: payload.toolName,\n        },\n      };\n    case 'SET_TOOLBAR_GROUP':\n      return {\n        ...state,\n        toolbarGroup: payload.toolbarGroup,\n      };\n    case 'SET_SELECTED_STAMP_INDEX':\n      return {\n        ...state,\n        selectedStampIndex: payload.index,\n      };\n    case 'SET_SELECTED_DISPLAYED_SIGNATURE_INDEX':\n      return {\n        ...state,\n        selectedDisplayedSignatureIndex: payload.index,\n      };\n    case 'SET_STANDARD_STAMPS':\n      return {\n        ...state,\n        standardStamps: payload.standardStamps,\n      };\n    case 'SET_CUSTOM_STAMPS':\n      return {\n        ...state,\n        customStamps: payload.customStamps,\n      };\n    case 'SET_SAVED_SIGNATURES':\n      return {\n        ...state,\n        savedSignatures: payload.savedSignatures,\n      };\n    case 'SET_LEFT_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          leftPanel: payload.width,\n        },\n      };\n    case 'SET_SEARCH_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          searchPanel: payload.width,\n        },\n      };\n    case 'SET_NOTES_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          notesPanel: payload.width,\n        },\n      };\n    case 'SET_REDACTION_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          redactionPanel: payload.width,\n        },\n      };\n    case 'SET_WV3D_PROPERTIES_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          wv3dPropertiesPanel: payload.width,\n        },\n      };\n    case 'SET_DOCUMENT_CONTAINER_WIDTH':\n      return {\n        ...state,\n        documentContainerWidth: payload.width,\n      };\n    case 'SET_DOCUMENT_CONTAINER_HEIGHT':\n      return {\n        ...state,\n        documentContainerHeight: payload.height,\n      };\n    case 'SET_ACTIVE_THEME':\n      return {\n        ...state,\n        activeTheme: payload.theme,\n      };\n    case 'DISABLE_ELEMENT':\n      return {\n        ...state,\n        disabledElements: {\n          ...state.disabledElements,\n          [payload.dataElement]: { disabled: true, priority: payload.priority },\n        },\n      };\n    case 'DISABLE_ELEMENTS': {\n      const disabledElements = {};\n      payload.dataElements.forEach(dataElement => {\n        disabledElements[dataElement] = {};\n        disabledElements[dataElement].disabled = true;\n        disabledElements[dataElement].priority = payload.priority;\n      });\n\n      return {\n        ...state,\n        disabledElements: { ...state.disabledElements, ...disabledElements },\n      };\n    }\n    case 'ENABLE_ELEMENT':\n      return {\n        ...state,\n        disabledElements: {\n          ...state.disabledElements,\n          [payload.dataElement]: {\n            disabled: false,\n            priority: payload.priority,\n          },\n        },\n      };\n    case 'ENABLE_ELEMENTS': {\n      const disabledElements = {};\n      payload.dataElements.forEach(dataElement => {\n        disabledElements[dataElement] = {};\n        disabledElements[dataElement].disabled = false;\n        disabledElements[dataElement].priority = payload.priority;\n      });\n\n      return {\n        ...state,\n        disabledElements: { ...state.disabledElements, ...disabledElements },\n      };\n    }\n    case 'ENABLE_ALL_ELEMENTS':\n      return {\n        ...state,\n        disabledElements: { ...initialState.disabledElements },\n      };\n    case 'OPEN_ELEMENT':\n      return {\n        ...state,\n        openElements: { ...state.openElements, [payload.dataElement]: true },\n      };\n    case 'CLOSE_ELEMENT':\n      return {\n        ...state,\n        openElements: { ...state.openElements, [payload.dataElement]: false },\n      };\n    case 'ENABLE_TOOL_GROUP_REORDERING':\n      return { ...state, enableToolGroupReordering: payload.enableToolGroupReordering };\n    case 'SET_ACTIVE_HEADER_GROUP':\n      return { ...state, activeHeaderGroup: payload.headerGroup };\n    case 'SET_ACTIVE_TOOL_NAME':\n      return { ...state, activeToolName: payload.toolName };\n    case 'SET_ACTIVE_TOOL_STYLES':\n      return { ...state, activeToolStyles: { ...payload.toolStyles } };\n    case 'SET_CUSTOM_COLOR':\n      return { ...state, customColor: payload.customColor };\n    case 'SET_CUSTOM_COLORS':\n      if (localStorageManager.isLocalStorageEnabled()) {\n        window.localStorage.setItem('customColors', JSON.stringify(payload.customColors));\n      } else {\n        console.error('localStorage is disabled, customColors cannot be restored');\n      }\n      return { ...state, customColors: payload.customColors };\n    case 'SET_ACTIVE_TOOL_NAME_AND_STYLES':\n      return {\n        ...state,\n        activeToolName: payload.toolName,\n        activeToolStyles: payload.toolStyles,\n      };\n    case 'SET_ACTIVE_LEFT_PANEL':\n      return { ...state, activeLeftPanel: payload.dataElement };\n    case 'SET_ACTIVE_TOOL_GROUP':\n      return {\n        ...state,\n        activeToolGroup: payload.toolGroup,\n        lastPickedToolGroup: {\n          ...state.lastPickedToolGroup,\n          [payload.toolbarGroup]: payload.toolGroup,\n        },\n      };\n    case 'SET_OUTLINE_CONTROL_VISIBILITY':\n      return { ...state, outlineControlVisibility: payload.outlineControlVisibility };\n    case 'SET_OUTLINE_EDITING':\n      return { ...state, isOutlineEditing: payload.isOutlineEditing };\n    case 'SET_NOTE_POPUP_ID':\n      return { ...state, notePopupId: payload.id };\n    case 'SET_NOTE_EDITING':\n      return { ...state, isNoteEditing: payload.isNoteEditing };\n    case 'SET_FIT_MODE':\n      return { ...state, fitMode: payload.fitMode };\n    case 'SET_ZOOM':\n      return { ...state, zoom: payload.zoom };\n    case 'SET_ROTATION':\n      return { ...state, rotation: payload.rotation };\n    case 'SET_DISPLAY_MODE':\n      return { ...state, displayMode: payload.displayMode };\n    case 'SET_CURRENT_PAGE':\n      return { ...state, currentPage: payload.currentPage };\n    case 'SET_NOTES_PANEL_SORT_STRATEGY':\n      return { ...state, sortStrategy: payload.sortStrategy };\n    case 'SET_NOTE_DATE_FORMAT':\n      return { ...state, noteDateFormat: payload.noteDateFormat };\n    case 'SET_PRINTED_NOTE_DATE_FORMAT':\n      return { ...state, printedNoteDateFormat: payload.noteDateFormat };\n    case 'SET_FULL_SCREEN':\n      return { ...state, isFullScreen: payload.isFullScreen };\n    case 'SET_HEADER_ITEMS':\n      return {\n        ...state,\n        headers: { ...state.headers, [payload.header]: payload.headerItems },\n      };\n    case 'SET_POPUP_ITEMS':\n      return {\n        ...state,\n        [payload.dataElement]: payload.items,\n      };\n    case 'SET_MENUOVERLAY_ITEMS':\n      return {\n        ...state,\n        menuOverlay: payload.items,\n      };\n    case 'REGISTER_TOOL':\n      return {\n        ...state,\n        toolButtonObjects: {\n          ...state.toolButtonObjects,\n          [payload.toolName]: {\n            dataElement: payload.buttonName,\n            title: payload.tooltip,\n            group: payload.buttonGroup,\n            img: payload.buttonImage,\n            showColor: payload.showColor || 'active',\n            showPresets: payload.showPresets ?? true,\n          },\n        },\n      };\n    case 'UNREGISTER_TOOL': {\n      const newToolButtonObjects = { ...state.toolButtonObjects };\n      delete newToolButtonObjects[payload.toolName];\n      return { ...state, toolButtonObjects: newToolButtonObjects };\n    }\n    case 'UPDATE_TOOL': {\n      const { toolName, properties } = payload;\n      const { buttonName, tooltip, buttonGroup, buttonImage } = properties;\n      return {\n        ...state,\n        toolButtonObjects: {\n          ...state.toolButtonObjects,\n          [toolName]: {\n            ...state.toolButtonObjects[toolName],\n            dataElement: buttonName || state.toolButtonObjects[toolName].dataElement,\n            title: tooltip || state.toolButtonObjects[toolName].title,\n            group: buttonGroup !== undefined ? buttonGroup : state.toolButtonObjects[toolName].group,\n            img: buttonImage || state.toolButtonObjects[toolName].img,\n          },\n        },\n      };\n    }\n    case 'SET_THUMBNAIL_MERGING':\n      return { ...state, isThumbnailMerging: payload.useThumbnailMerging };\n    case 'SET_THUMBNAIL_REORDERING':\n      return { ...state, isThumbnailReordering: payload.useThumbnailReordering };\n    case 'SET_THUMBNAIL_MULTISELECT':\n      return { ...state, isThumbnailMultiselect: payload.useThumbnailMultiselect };\n    case 'SET_MULTI_VIEWER_MERGING':\n      return { ...state, isMultipleViewerMerging: payload.isMultipleViewerMerging };\n    case 'SET_ENABLE_NOTE_PANEL_VIRTUALIZED_LIST':\n      return { ...state, enableNotesPanelVirtualizedList: payload.enableNotesPanelVirtualizedList };\n    case 'SET_NOTES_SHOW_LAST_UPDATED_DATE':\n      return { ...state, notesShowLastUpdatedDate: payload.notesShowLastUpdatedDate };\n    case 'SET_ALLOW_PAGE_NAVIGATION':\n      return { ...state, allowPageNavigation: payload.allowPageNavigation };\n    case 'SET_READ_ONLY':\n      return { ...state, isReadOnly: payload.isReadOnly };\n    case 'SET_CUSTOM_PANEL':\n      return {\n        ...state,\n        customPanels: [...state.customPanels, payload.newPanel],\n      };\n    case 'USE_EMBEDDED_PRINT':\n      return { ...state, useEmbeddedPrint: payload.useEmbeddedPrint };\n    case 'SET_PAGE_LABELS':\n      return { ...state, pageLabels: [...payload.pageLabels] };\n    case 'SET_SELECTED_THUMBNAIL_PAGE_INDEXES':\n      return { ...state, selectedThumbnailPageIndexes: payload.selectedThumbnailPageIndexes };\n    case 'SET_SHIFT_KEY_THUMBNAIL_PIVOT_INDEX':\n      return { ...state, shiftKeyThumbnailPivotIndex: payload.shiftKeyThumbnailPivotIndex };\n    case 'SET_ACTIVE_PALETTE': {\n      const { colorMapKey, colorPalette } = payload;\n      return {\n        ...state,\n        colorMap: {\n          ...state.colorMap,\n          [colorMapKey]: {\n            ...state.colorMap[colorMapKey],\n            currentPalette: colorPalette,\n          },\n        },\n      };\n    }\n    case 'SET_REPLY_DISABLED_FUNC': {\n      const { func } = payload;\n      return {\n        ...state,\n        isReplyDisabledFunc: func,\n      };\n    }\n    case 'SET_ICON_COLOR': {\n      const { colorMapKey, color } = payload;\n      return {\n        ...state,\n        colorMap: {\n          ...state.colorMap,\n          [colorMapKey]: { ...state.colorMap[colorMapKey], iconColor: color },\n        },\n      };\n    }\n    case 'SET_COLOR_MAP':\n      return { ...state, colorMap: payload.colorMap };\n    case 'SET_WARNING_MESSAGE':\n      return { ...state, warning: payload };\n    case 'SET_ERROR_MESSAGE':\n      return { ...state, errorMessage: payload.message };\n    case 'SET_CUSTOM_NOTE_FILTER':\n      return { ...state, customNoteFilter: payload.customNoteFilter };\n    case 'SET_ZOOM_LIST':\n      return { ...state, zoomList: payload.zoomList };\n    case 'SET_MEASUREMENT_UNITS': {\n      return { ...state, measurementUnits: payload };\n    }\n    case 'SET_MAX_SIGNATURES_COUNT':\n      return { ...state, maxSignaturesCount: payload.maxSignaturesCount };\n    case 'SET_USER_DATA':\n      return { ...state, userData: payload.userData };\n    case 'SET_CUSTOM_MEASUREMENT_OVERLAY':\n      return { ...state, customMeasurementOverlay: payload.customMeasurementOverlay };\n    case 'SET_SIGNATURE_FONTS':\n      return { ...state, signatureFonts: payload.signatureFonts };\n    case 'SET_SELECTED_TAB':\n      return { ...state, tab: { ...state.tab, [payload.id]: payload.dataElement } };\n    case 'SET_CUSTOM_ELEMENT_OVERRIDES':\n      return {\n        ...state,\n        customElementOverrides: { ...state.customElementOverrides, [payload.dataElement]: payload.overrides },\n      };\n    case 'SET_PAGE_REPLACEMENT_FILE_LIST':\n      return { ...state, pageReplacementFileList: payload.list };\n\n    case 'SET_NOTE_TRANSFORM_FUNCTION':\n      return { ...state, noteTransformFunction: payload.noteTransformFunction };\n    case 'SET_CUSTOM_NOTE_SELECTION_FUNCTION':\n      return { ...state, customNoteFunction: payload.customNoteFunction };\n    case 'SET_CUSTOM_APPLY_REDACTIONS_HANDLER':\n      return { ...state, customApplyRedactionsHandler: payload.customApplyRedactionsHandler };\n    case 'SET_ANNOTATION_CONTENT_OVERLAY_HANDLER':\n      return { ...state, annotationContentOverlayHandler: payload.annotationContentOverlayHandler };\n    case 'ADD_CUSTOM_MODAL': {\n      const existingDataElementFiltered = state.customModals.filter(function(modal) {\n        return modal.dataElement !== payload.dataElement;\n      });\n      return {\n        ...state,\n        customModals: [...existingDataElementFiltered, payload],\n      };\n    }\n    case 'SET_MOUSE_WHEEL_ZOOM':\n      return { ...state, enableMouseWheelZoom: payload.enableMouseWheelZoom };\n    case 'SET_ENABLE_SNAP_MODE':\n      return { ...state, isSnapModeEnabled: payload.enable };\n    case 'SET_READER_MODE':\n      return { ...state, isReaderMode: payload.isReaderMode };\n    case 'SET_VALIDATION_MODAL_WIDGET_NAME':\n      return {\n        ...state,\n        validationModalWidgetName: payload.validationModalWidgetName,\n      };\n    case 'SET_SUBMIT_COMMENT_MODE':\n      return {\n        ...state,\n        enableNoteSubmissionWithEnter: payload.enableNoteSubmissionWithEnter,\n      };\n    case 'SET_NOTES_PANEL_TEXT_COLLAPSING':\n      return {\n        ...state,\n        isNotesPanelTextCollapsingEnabled: payload.enableNotesPanelTextCollapsing,\n      };\n    case 'SET_NOTES_PANEL_REPLIES_COLLAPSING':\n      return {\n        ...state,\n        isNotesPanelRepliesCollapsingEnabled: payload.enableNotesPanelRepliesCollapsing,\n      };\n    case 'SET_COMMENT_THREAD_EXPANSION':\n      return {\n        ...state,\n        isCommentThreadExpansionEnabled: payload.enableCommentThreadExpansion,\n      };\n    case 'ADD_TRUSTED_CERTIFICATES':\n      /**\n       * To mimic the behavior of the Core implementation, where certificates\n       * can only be added but not removed, only allow this action to append\n       * to the existing array\n       */\n      return {\n        ...state,\n        certificates: [...state.certificates, ...payload.certificates],\n      };\n    case 'ADD_TRUST_LIST':\n      /**\n       * The Core implementation only allows a single Trust List to be passed\n       * as a parameter, but in order to allow flexibility of future potential\n       * requirements where a developer may want to add multiple Trust Lists,\n       * we are storing an Array of Trust Lists\n       */\n      return {\n        ...state,\n        trustLists: [...state.trustLists, payload.trustList],\n      };\n    case 'SET_VERIFICATION_RESULT':\n      return { ...state, verificationResult: payload.result };\n    case 'SET_DISPLAYED_SIGNATURES_FILTER_FUNCTION':\n      return { ...state, displayedSignaturesFilterFunction: payload.filterFunction };\n    case 'SET_ANNOTATION_READ_STATE':\n      const { unreadAnnotationIdSet } = state;\n      const { annotationId, isRead } = payload;\n      if (isRead) {\n        unreadAnnotationIdSet.delete(annotationId);\n      } else {\n        unreadAnnotationIdSet.add(annotationId);\n      }\n      return { ...state, unreadAnnotationIdSet: new Set(unreadAnnotationIdSet) };\n    case 'SET_LANGUAGE':\n      return { ...state, currentLanguage: payload.language };\n    case 'SET_FADE_PAGE_NAVIGATION_COMPONENT':\n      return {\n        ...state,\n        fadePageNavigationComponent: payload.fadePageNavigationComponent,\n      };\n    case 'SET_HIDE_CONTENT_EDIT_WARNING':\n      if (localStorageManager.isLocalStorageEnabled()) {\n        window.localStorage.setItem('hideContentEditWarning', JSON.stringify(payload.hideWarning));\n      } else {\n        console.error('localStorage is disabled, hideContentEditWarning cannot be restored');\n      }\n      return { ...state, hideContentEditWarning: payload.hideWarning };\n    case 'SET_CURRENT_CONTENT_BEING_EDITED':\n      return {\n        ...state,\n        currentContentBeingEdited: payload,\n      };\n    case 'UPDATE_CURRENT_CONTENT_BEING_EDITED':\n      return {\n        ...state,\n        currentContentBeingEdited: {\n          ...state.currentContentBeingEdited,\n          content: payload.content,\n        },\n      };\n    case 'CLEAR_CURRENT_CONTENT_BEING_EDITED':\n      return {\n        ...state,\n        currentContentBeingEdited: null,\n      };\n    case 'SET_ENABLE_DESKTOP_ONLY_MODE':\n      return {\n        ...state,\n        isInDesktopOnlyMode: payload.enableDesktopOnlyMode,\n      };\n    case 'PAGE_DELETION_CONFIRMATION_MODAL_POPUP':\n      return {\n        ...state,\n        pageDeletionConfirmationModalEnabled: payload.pageDeletionConfirmationModalEnabled,\n      };\n    case 'SET_PAGE_MANIPULATION_OVERLAY_ITEMS':\n      return {\n        ...state,\n        pageManipulationOverlay: payload.items,\n      };\n    case 'SET_THUMBNAIL_CONTROL_MENU_ITEMS':\n      return {\n        ...state,\n        thumbnailControlMenu: payload.items,\n      };\n    case 'SET_WATERMARK_MODAL_OPTIONS':\n      return { ...state, watermarkModalOptions: payload.watermarkModalOptions };\n    case 'SET_RESET_AUDIO_PLAYBACK_POSITION':\n      return { ...state, shouldResetAudioPlaybackPosition: payload.shouldResetAudioPlaybackPosition };\n    case 'SET_ACTIVE_SOUND_ANNOTATION':\n      return { ...state, activeSoundAnnotation: payload.activeSoundAnnotation };\n    case 'SET_ANNOTATION_FILTERS':\n      return { ...state, annotationFilters: payload.annotationFilters };\n    case 'SET_ZOOM_STEP_FACTORS': \n      return { ...state, zoomStepFactors: payload.zoomStepFactors };\n    default:\n      return state;\n  }\n};\n","import { combineReducers } from 'redux';\n\nimport initialState from 'src/redux/initialState';\nimport viewerReducer from 'reducers/viewerReducer';\nimport searchReducer from 'reducers/searchReducer';\nimport userReducer from 'reducers/userReducer';\nimport documentReducer from 'reducers/documentReducer';\nimport wv3dPropertiesPanelReducer from 'src/redux/reducers/wv3dPropertiesPanelReducer';\n\nimport { persistReducer } from 'redux-persist';\nimport storage from 'redux-persist/lib/storage';\n\nconst viewerPersistConfig = {\n  key: 'viewer',\n  storage,\n  whitelist: ['toolbarGroup', 'lastPickedToolForGroup', 'lastPickedToolGroup'],\n};\n\nexport default combineReducers({\n  viewer: persistReducer(viewerPersistConfig, viewerReducer(initialState.viewer)),\n  search: searchReducer(initialState.search),\n  user: userReducer(initialState.user),\n  document: documentReducer(initialState.document),\n  // TODO: refactor in another PR to remove state.advanced. It's not necessary to have this because those states never change.\n  advanced: () => initialState.advanced,\n  featureFlags: () => initialState.featureFlags,\n  wv3dPropertiesPanel: wv3dPropertiesPanelReducer(initialState.wv3dPropertiesPanel),\n});\n","export default initialState => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SEARCH_TEXT': {\n      const { searchValue, options = {} } = payload;\n      const { caseSensitive, wholeWord, wildcard, regex, searchUp, ambientString } = options;\n      return {\n        ...state,\n        value: searchValue,\n        isCaseSensitive: caseSensitive || false,\n        isWholeWord: wholeWord || false,\n        isWildcard: wildcard || false,\n        isRegex: regex || false,\n        isSearchUp: searchUp || false,\n        isAmbientString: ambientString || false,\n      };\n    }\n    case 'SEARCH_TEXT_FULL': {\n      const { searchValue, options = {} } = payload;\n      const { caseSensitive, wholeWord, wildcard, regex } = options;\n      return {\n        ...state,\n        value: searchValue,\n        isCaseSensitive: caseSensitive || false,\n        isWholeWord: wholeWord || false,\n        isWildcard: wildcard || false,\n        isRegex: regex || false,\n        isSearchUp: false,\n        isAmbientString: true,\n      };\n    }\n    case 'SET_SEARCH_VALUE': {\n      return {\n        ...state,\n        value: payload.value,\n      };\n    }\n    case 'ADD_RESULT': {\n      return {\n        ...state,\n        results: [...state.results, payload.result],\n      };\n    }\n    case 'SET_CASE_SENSITIVE': {\n      return {\n        ...state,\n        isCaseSensitive: payload.isCaseSensitive,\n      };\n    }\n    case 'SET_WHOLE_WORD': {\n      return {\n        ...state,\n        isWholeWord: payload.isWholeWord,\n      };\n    }\n    case 'SET_WILD_CARD': {\n      return {\n        ...state,\n        isWildcard: payload.isWildcard,\n      };\n    }\n    case 'SET_SEARCH_ERROR': {\n      return {\n        ...state,\n        errorMessage: payload.errorMessage,\n      };\n    }\n    case 'RESET_SEARCH': {\n      return {\n        ...initialState,\n        value: state.value,\n        isCaseSensitive: state.isCaseSensitive,\n        isWholeWord: state.isWholeWord,\n        isWildcard: state.isWildcard,\n      };\n    }\n    case 'SET_SEARCH_RESULTS': {\n      return {\n        ...state,\n        results: payload,\n      };\n    }\n    case 'SET_CLEAR_SEARCH_ON_PANEL_CLOSE': {\n      return {\n        ...state,\n        clearSearchPanelOnClose: payload,\n      };\n    }\n    case 'SET_PROCESSING_SEARCH_RESULTS': {\n      return {\n        ...state,\n        isProcessingSearchResults: payload.isProcessingSearchResults,\n      };\n    }\n    case 'REPLACE_REDACTION_SEARCH_PATTERN': {\n      return {\n        ...state,\n        redactionSearchPatterns: {\n          ...state.redactionSearchPatterns,\n          [payload.searchPattern]: {\n            ...state.redactionSearchPatterns[payload.searchPattern],\n            regex: payload.regex,\n          }\n        }\n      };\n    }\n    case 'ADD_REDACTION_SEARCH_PATTERN': {\n      return {\n        ...state,\n        redactionSearchPatterns: {\n          ...state.redactionSearchPatterns,\n          [payload.searchPattern.type]: payload.searchPattern,\n        }\n      };\n    }\n    case 'REMOVE_REDACTION_SEARCH_PATTERN': {\n      const updatedRedactionSearchPatterns = { ...state.redactionSearchPatterns };\n      delete updatedRedactionSearchPatterns[payload.searchPatternType];\n      return {\n        ...state,\n        redactionSearchPatterns: updatedRedactionSearchPatterns,\n      };\n    }\n    default:\n      return state;\n  }\n};\n","export default initialState => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_USER_NAME':\n      return { ...state, name: payload.userName };\n    case 'SET_ADMIN_USER':\n      return { ...state, isAdmin: payload.isAdminUser };\n    default:\n      return state;\n  }\n};","export default initialState => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_DOCUMENT_FILE':\n      return { ...state, file: payload.documentFile, path: payload.documentFile.name, pdfDoc: null };\n    case 'SET_PAGE_NUMBER':\n      return { ...state, pageNumber: payload.documentPageNumber };\n    case 'SET_TOTAL_PAGES':\n      return { ...state, totalPages: payload.totalPages };\n    case 'SET_OUTLINES':\n      return { ...state, outlines: payload.outlines };\n    case 'SET_BOOKMARKS':\n    {\n      return { ...state, bookmarks: payload.bookmarks };\n    }\n    case 'ADD_BOOKMARK':\n    case 'EDIT_BOOKMARK':\n    {\n      const newBookmarks = { ...state.bookmarks };\n      newBookmarks[payload.pageIndex] = payload.text;\n      return { ...state, bookmarks: newBookmarks };\n    }\n    case 'REMOVE_BOOKMARK':\n    {\n      const newBookmarks = { ...state.bookmarks };\n      delete newBookmarks[payload.pageIndex];\n\n      return { ...state, bookmarks: newBookmarks };\n    }\n    case 'SET_LAYERS':\n      return { ...state, layers: payload.layers };\n    case 'SET_PASSWORD_ATTEMPTS':\n      return { ...state, passwordAttempts: payload.attempt };\n    case 'SET_PRINT_QUALITY':\n      return { ...state, printQuality: payload.quality };\n    case 'SET_DEFAULT_PRINT_OPTIONS':\n      return {...state, defaultPrintOptions: payload.options };\n    case 'SET_LOADING_PROGRESS':\n      return { ...state, loadingProgress: payload.progress };\n    default:\n      return state;\n  }\n};\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\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 _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { PureComponent } from 'react'; // eslint-disable-line import/no-unresolved\n\nexport var PersistGate =\n/*#__PURE__*/\nfunction (_PureComponent) {\n  _inherits(PersistGate, _PureComponent);\n\n  function PersistGate() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, PersistGate);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PersistGate)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      bootstrapped: false\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_unsubscribe\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"handlePersistorState\", function () {\n      var persistor = _this.props.persistor;\n\n      var _persistor$getState = persistor.getState(),\n          bootstrapped = _persistor$getState.bootstrapped;\n\n      if (bootstrapped) {\n        if (_this.props.onBeforeLift) {\n          Promise.resolve(_this.props.onBeforeLift()).finally(function () {\n            return _this.setState({\n              bootstrapped: true\n            });\n          });\n        } else {\n          _this.setState({\n            bootstrapped: true\n          });\n        }\n\n        _this._unsubscribe && _this._unsubscribe();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(PersistGate, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._unsubscribe = this.props.persistor.subscribe(this.handlePersistorState);\n      this.handlePersistorState();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this._unsubscribe && this._unsubscribe();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof this.props.children === 'function' && this.props.loading) console.error('redux-persist: PersistGate expects either a function child or loading prop, but not both. The loading prop will be ignored.');\n      }\n\n      if (typeof this.props.children === 'function') {\n        return this.props.children(this.state.bootstrapped);\n      }\n\n      return this.state.bootstrapped ? this.props.children : this.props.loading;\n    }\n  }]);\n\n  return PersistGate;\n}(PureComponent);\n\n_defineProperty(PersistGate, \"defaultProps\", {\n  children: null,\n  loading: null\n});","/**\n * Contains all possible modes for fitting/zooming pages to the viewer. The behavior may vary depending on the LayoutMode.\n * @name UI.FitMode\n * @property {string} FitPage A fit mode where the zoom level is fixed to the width or height of the page, whichever is smaller.\n * @property {string} FitWidth A fit mode where the zoom level is fixed to the width of the page.\n * @property {string} Zoom A fit mode where the zoom level is not fixed.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var FitMode = instance.UI.FitMode;\n    instance.UI.setFitMode(FitMode.FitWidth);\n  });\n */\n\nexport default {\n  FitPage: 'FitPage',\n  FitWidth: 'FitWidth',\n  Zoom: 'Zoom',\n};","/**\n * Contains string enums for all toolbar options for WebViewer.\n * @name UI.ToolbarGroup\n * @property {string} VIEW Sets the current toolbar as the view group.\n * @property {string} ANNOTATE Sets the current toolbar as the annotate group.\n * @property {string} SHAPES Sets the current toolbar as the shapes group.\n * @property {string} INSERT Sets the current toolbar as the insert group.\n * @property {string} MEASURE Sets the current toolbar as the measure group.\n * @property {string} EDIT Sets the current toolbar as the edit group.\n * @property {string} FILL_AND_SIGN Sets the current toolbar as the fill and sign group.\n * @property {string} FORMS Sets the current toolbar as the forms group.\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setToolbarGroup(instance.UI.ToolbarGroup.VIEW);\n  });\n */\n\nexport default {\n  VIEW: 'toolbarGroup-View',\n  ANNOTATE: 'toolbarGroup-Annotate',\n  SHAPES: 'toolbarGroup-Shapes',\n  INSERT: 'toolbarGroup-Insert',\n  MEASURE: 'toolbarGroup-Measure',\n  EDIT: 'toolbarGroup-Edit',\n  FILL_AND_SIGN: 'toolbarGroup-FillAndSign',\n  FORMS: 'toolbarGroup-Forms'\n};","/**\n* Available search patterns that can be passed to {@link UI.replaceRedactionSearchPattern UI.replaceRedactionSearchPattern}. <br/><br/>\n* @name UI.RedactionSearchPatterns\n* @enum {string}\n* @property {string} EMAILS Search pattern for emails\n* @property {string} CREDIT_CARDS Search pattern for credit card numbers\n* @property {string} PHONE_NUMBERS Search pattern for phone numbers\n*/\nexport default {\n  EMAILS: 'emails',\n  CREDIT_CARDS: 'creditCards',\n  PHONE_NUMBERS: 'phoneNumbers',\n};","/**\n * Adds a listener function to be called when search is completed.\n * @method UI.addSearchListener\n * @param {UI.searchListener} searchListener Callback function that will be triggered when search completed\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    function searchListener(searchValue, options, results) {\n      console.log(searchValue, options, results);\n    };\n\n    instance.UI.addSearchListener(searchListener);\n  });\n */\n/**\n * Callback that gets passed to {@link UI.addSearchListener addSearchListener}.\n * @callback UI.searchListener\n * @param {string} searchValue Search value\n * @param {object} options Search options object, which includes 'caseSensitive', 'wholeWord', 'wildcard' and 'regex'\n * @param {Array.<object>} results Search results\n */\n\nimport { addSearchListener as addSearchListenerHelper } from 'helpers/search';\n\nexport default function addSearchListener(listener) {\n  addSearchListenerHelper(listener);\n}\n","/**\n * Adds a sorting strategy in notes panel.\n * @method UI.addSortStrategy\n * @param {object} sortStrategy Sorting strategy that will be used to sort notes\n * @param {string} sortStrategy.name Name of the strategy, which will be shown in notes panel's dropdown\n * @param {UI.getSortedNotes} sortStrategy.getSortedNotes Function that takes unsorted notes (annotations) and returns them sorted\n * @param {UI.shouldRenderSeparator} sortStrategy.shouldRenderSeparator Function that returns when a separator should be rendered\n * @param {UI.getSeparatorContent} sortStrategy.getSeparatorContent Function that returns the content of a separator\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var mySortStrategy = {\n      name: 'annotationType',\n      getSortedNotes: function(notes) {\n        return notes.sort(function(a ,b) {\n          if (a.Subject < b.Subject) return -1;\n          if (a.Subject > b.Subject) return 1;\n          if (a.Subject === b.Subject) return 0;\n        });\n      },\n      shouldRenderSeparator: function(prevNote, currNote) {\n        return prevNote.Subject !== currNote.Subject;\n      },\n      getSeparatorContent: function(prevNote, currNote) {\n        return currNote.Subject;\n      }\n    };\n\n    instance.UI.addSortStrategy(mySortStrategy);\n  });\n */\n/**\n * Callback that gets passed to `sortStrategy.getSortedNotes` in {@link UI.addSortStrategy addSortStrategy}.\n * @callback UI.getSortedNotes\n * @param {Array<Core.Annotations.Annotation>} notes List of unsorted notes (annotations)\n * @return {Array<Core.Annotations.Annotation>} Sorted notes (annotations)\n */\n/**\n * Callback that gets passed to `sortStrategy.shouldRenderSeparator` in {@link UI.addSortStrategy addSortStrategy}.\n * @callback UI.shouldRenderSeparator\n * @param {Core.Annotations.Annotation} prevNote Previous note (annotation)\n * @param {Core.Annotations.Annotation} currNote Current note (annotation)\n * @return {boolean} Whether a separator should be rendered or not\n */\n/**\n * Callback that gets passed to `sortStrategy.getSeparatorContent` in {@link UI.addSortStrategy addSortStrategy}.\n * @callback UI.getSeparatorContent\n * @param {Core.Annotations.Annotation} prevNote Previous note (annotation)\n * @param {Core.Annotations.Annotation} currNote Current note (annotation)\n * @param {object} options Optional values\n * @param {Array.<string>} options.pageLabels List of page label\n * @return {(string|number)} Content to be rendered in a separator\n */\n\nimport { addSortStrategy } from 'constants/sortStrategies';\nimport actions from 'actions';\n\nexport default store => newStrategy => {\n  if (newStrategy.name) {\n    addSortStrategy(newStrategy);\n    store.dispatch(actions.setNotesPanelSortStrategy(newStrategy.name));\n  } else {\n    console.warn('The argument for addSortStrategy must have a \"name\" property, see https://www.pdftron.com/documentation/web/guides/ui/apis#addsortstrategy');\n  }\n};\n","/**\n * A class which contains popup APIs.<br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in a popup, use {@link UI.disableElements disableElements}.\n * @interface UI.Popup\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store, popupDataElement) => Object.create(PopupAPI).initialize(store, popupDataElement);\n\nconst PopupAPI = {\n  initialize(store, popupDataElement) {\n    this.store = store;\n    this.popupDataElement = popupDataElement;\n    return this;\n  },\n  /**\n   * Add an array of items after the item that has the given data element.\n   * @method UI.Popup#add\n   * @param {Array.<object>} items Same as <a href='https://www.pdftron.com/documentation/web/guides/customizing-header#header-items' target='_blank'>header items</a>\n   * @param {string} [dataElement] An optional string. If not given, items will be added in the beginning\n   * @returns {this} The instance itself\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.contextMenuPopup.add({\n      type: 'actionButton',\n      img: 'path/to/image',\n      onClick: instance.downloadPdf,\n    });\n  });\n   */\n  add(buttons, dataElement) {\n    if (!Array.isArray(buttons)) {\n      buttons = [buttons];\n    }\n\n    const index = this._getIndexByDataElement(dataElement);\n    const items = this.getItems();\n\n    items.splice(index + 1, 0, ...buttons);\n\n    this.store.dispatch(actions.setPopupItems(this.popupDataElement, items));\n\n    return this;\n  },\n  /**\n   * Update all the items in the popup.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.Popup#update\n   * @param {Array.<object>} [items] the items that will be rendered in the popup\n   * @returns {this} The instance itself\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    // replace existing items with a new array of items\n    instance.contextMenuPopup.update([\n      {\n        type: 'actionButton',\n        img: 'path/to/image',\n        onClick: instance.downloadPdf,\n      },\n      {\n        type: 'actionButton',\n        img: 'path/to/image',\n        onClick: instance.print,\n      },\n    ]);\n  });\n   */\n  update(items) {\n    if (!items) {\n      items = [];\n    }\n    this.store.dispatch(actions.setPopupItems(this.popupDataElement, items));\n\n    return this;\n  },\n  /**\n   * Return the array of items in the popup.\n   * @method UI.Popup#getItems\n   * @returns {Array.<object>} Current items in the popup.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.annotationPopup.getItems();\n  });\n   */\n  getItems() {\n    return [...selectors.getPopupItems(this.store.getState(), this.popupDataElement)];\n  },\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors\n        .getPopupItems(state, this.popupDataElement)\n        .findIndex(obj => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n};","/**\n * An instance of Popup that can be used to edit items in the annotation popup component\n * @name UI.annotationPopup\n * @implements {UI.Popup}\n * @type {UI.Popup}\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    instance.UI.annotationPopup.someAPI();\n  });\n */\nimport createPopupAPI from 'helpers/createPopupAPI';\n\nexport default store => createPopupAPI(store, 'annotationPopup');","const castStringToArray = input => {\n  if (!Array.isArray(input)) {\n    input = [input];\n  }\n  return input;\n};\n\nexport default castStringToArray;\n","import castStringToArray from 'helpers/castStringToArray';\n/**\n * Sets visibility states of the elements to be hidden. Note that closeElements works only for panel/overlay/popup/modal elements.\n * @method UI.closeElements\n * @param {Array.<string>} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://www.pdftron.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // closes (hides) text popup and left panel in the UI\n    instance.UI.closeElements([ 'menuOverlay', 'leftPanel' ]);\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => dataElements => {\n  const dataElementArray = castStringToArray(dataElements);\n  store.dispatch(actions.closeElements(dataElementArray));\n};\n","/**\n * An instance of Popup that can be used to edit items in the context menu popup component\n * @name UI.contextMenuPopup\n * @implements {UI.Popup}\n * @type {UI.Popup}\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    instance.UI.contextMenuPopup.someAPI();\n  });\n */\nimport createPopupAPI from 'helpers/createPopupAPI';\n\nexport default store => createPopupAPI(store, 'contextMenuPopup');","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default store => () => {\n  disableFeatures(store)([Feature.Annotations]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default store => () => {\n  disableFeatures(store)([Feature.Download]);\n};\n","import actions from 'actions';\nimport { PRIORITY_THREE } from '../constants/actionPriority';\n\nexport default store => dataElement => {\n  store.dispatch(actions.disableElement(dataElement, PRIORITY_THREE));\n};","import { PRIORITY_ONE } from 'constants/actionPriority';\nimport actions from 'actions';\n\nexport default store => () => {\n  store.dispatch(actions.disableElements(['filePickerHandler', 'filePickerButton'], PRIORITY_ONE));\n};\n","import actions from 'actions';\n\n/**\n * Turns high contrast mode off.\n * @method UI.disableHighContrastMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableHighContrastMode();\n  });\n */\n\nexport default store => () => {\n  store.dispatch(actions.setHighContrastMode(false));\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default store => () => {\n  disableFeatures(store)([Feature.LocalStorage]);\n};","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default store => () => {\n  disableFeatures(store)([Feature.Measurement]);\n};","import touchEventManager from 'helpers/TouchEventManager';\n\n/**\n * Disable native mobile device scrolling behavior if it had previously been enabled. Note that native mobile device scrolling behavior is off by default.\n * @method UI.disableNativeScrolling\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    UI.disableNativeScrolling();\n  });\n */\n\nexport default () => {\n  touchEventManager.useNativeScroll = false;\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default store => () => {\n  disableFeatures(store)([Feature.NotesPanel]);\n};\n","import actions from 'actions';\n\n/**\n * Disable the ability to submit notes by only pressing Enter if it had previously been enabled.\n * This will revert note submission to the default which is Ctrl/Cmd + Enter.\n * @method UI.disableNoteSubmissionWithEnter\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableNoteSubmissionWithEnter();\n  });\n */\n\nexport default store => () => {\n  store.dispatch(actions.setNoteSubmissionEnabledWithEnter(false));\n};","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default store => () => {\n  disableFeatures(store)([Feature.Print]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default store => () => {\n  disableFeatures(store)([Feature.Redaction]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default store => () => {\n  disableFeatures(store)([Feature.TextSelection]);\n};\n","import disableTools from './disableTools';\n\nexport default store => toolName => {\n  disableTools(store)([toolName]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default store => () => {\n  disableFeatures(store)([Feature.TouchScrollLock]);\n};","/**\n * Displays the custom error message\n * @method UI.displayErrorMessage\n * @param {string} message An error message\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.displayErrorMessage('My error message');\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => message => {\n  store.dispatch(actions.showErrorMessage(message));\n};\n","/**\n * Downloads the pdf document with or without annotations added by WebViewer UI.\n * @method UI.downloadPdf\n * @param {object} [options] An object that contains the following download options.\n * @param {string} [options.filename] The filename of the downloaded document.\n * @param {string} [options.downloadType='pdf'] The type to download the file as, by default this is \"pdf\". PDF and image files can only be downloaded as PDFs, but office files can be downloaded as \"pdf\" or as \"office\" if you want to get the original file without annotations.\n * @param {string} [options.xfdfString] An xfdf string containing annotation data to be used when downloading. Use this option instead of `includeAnnotations` if not all annotations need to be contained in the downloaded file.\n * @param {boolean} [options.includeAnnotations=true] Whether or not to include annotations added by WebViewer UI.\n * @param {boolean} [options.flatten] Whether or not to flatten all the annotations in the downloaded document. Only useful fullAPI is enabled and either `xfdfString` or `includeAnnotations` is used.\n * @param {Core.Document} [options.documentToBeDownloaded] A document to be download instead of the one loaded by Document Viewer.\n * @param {boolean} [options.useDisplayAuthor] Whether to export annotations with the Display Author name from annotationManager.getDisplayAuthor()\n * @param {number} [options.flags=Core.SaveOptions.REMOVE_UNUSED] The flags with which to save the document. Possible values include `Core.SaveOptions.REMOVE_UNUSED` (remove unused objects during save) and `Core.SaveOptions.LINEARIZED` (optimize the document for fast web view and remove unused objects).\n * @returns {Promise<any>} A promise that is resolved once the document is downloaded.\n * @example\nWebViewer(...)\n  .then(async function(instance) {\n    const docViewer = instance.Core.documentViewer;\n    const annotManager = instance.Core.annotationManager;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', async function() {\n      // download pdf without annotations added by WebViewer UI\n      await instance.UI.downloadPdf({\n        includeAnnotations: false,\n      });\n\n      console.log('Downloaded the first time!')\n\n      // download pdf with all annotations flattened\n      await instance.UI.downloadPdf({\n        includeAnnotations: true,\n        flatten: true,\n      });\n\n      console.log('Downloaded a second time!')\n\n      // download pdf without links\n      const xfdfString = await annotManager.exportAnnotations({ links: false });\n      await instance.UI.downloadPdf({\n        xfdfString: xfdfString,\n      });\n\n      console.log('Downloaded a third time!')\n    });\n  });\n */\n\nimport downloadPdf from 'helpers/downloadPdf';\nimport { workerTypes } from 'constants/types';\nimport core from 'core';\n\nexport default store => async (options = { includeAnnotations: true }) => {\n  const documentType = core.getDocument()?.getType();\n  const { PDF, WEBVIEWER_SERVER, OFFICE, IMAGE } = workerTypes;\n\n  if (\n    documentType !== PDF &&\n    documentType !== IMAGE &&\n    documentType !== OFFICE &&\n    documentType !== WEBVIEWER_SERVER\n  ) {\n    console.warn('Document type is not PDF. Cannot be downloaded.');\n    return Promise.reject();\n  }\n\n  // legacy interface: instance.downloadPdf(true);\n  if (typeof options === 'boolean') {\n    options = {\n      includeAnnotations: options,\n    };\n  }\n\n  return downloadPdf(store.dispatch, options);\n};\n","import actions from 'actions';\n\nexport default store => () => {\n  store.dispatch(actions.enableAllElements());\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default store => () => {\n  enableFeatures(store)([Feature.Annotations]);\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default store => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.Download]);\n  } else {\n    disableFeatures(store)([Feature.Download]);\n  }\n};\n","import actions from 'actions';\nimport { PRIORITY_THREE } from '../constants/actionPriority';\n\nexport default store => dataElement => {\n  store.dispatch(actions.enableElement(dataElement, PRIORITY_THREE));\n};","import actions from 'actions';\n\n/**\n * Turns high contrast mode on to help with accessibility.\n * @method UI.enableHighContrastMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableHighContrastMode();\n  });\n */\n\nexport default store => () => {\n  store.dispatch(actions.setHighContrastMode(true));\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default store => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.FilePicker]);\n  } else {\n    disableFeatures(store)([Feature.FilePicker]);\n  }\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default store => () => {\n  enableFeatures(store)([Feature.LocalStorage]);\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default store => () => {\n  enableFeatures(store)([Feature.Measurement]);\n};\n","import touchEventManager from 'helpers/TouchEventManager';\n\n/**\n * Enable native mobile device scrolling behavior. By default custom behavior is used to handle vertical and horizontal scroll locking.\n * @method UI.enableNativeScrolling\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableNativeScrolling();\n  });\n */\n\nexport default () => {\n  touchEventManager.useNativeScroll = true;\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default store => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.NotesPanel]);\n  } else {\n    disableFeatures(store)([Feature.NotesPanel]);\n  }\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default store => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.Print]);\n  } else {\n    disableFeatures(store)([Feature.Print]);\n  }\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default store => () => {\n  enableFeatures(store)([Feature.Redaction]);\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default store => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.TextSelection]);\n  } else {\n    disableFeatures(store)([Feature.TextSelection]);\n  }\n};\n","import enableTools from './enableTools';\n\nexport default store => toolName => {\n  enableTools(store)([toolName]);\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default store => () => {\n  enableFeatures(store)([Feature.TouchScrollLock]);\n};\n","/**\n * Extract pages from the current document\n * @method UI.extractPagesWithAnnotations\n * @param {Array<number>} pageNumbersToExtract An array of pages to extract from the document. Annotations on the pages are included\n * @return {Promise<File>} A promise that resolve to a <a href='https://developer.mozilla.org/en-US/docs/Web/API/File' target='_blank'>File object</a>\n * @example // 6.0 and after\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.extractPagesWithAnnotations ([1,2,3]).then(function(fileData){\n    });\n  });\n */\n\nimport extractPagesWithAnnotations from '../helpers/extractPagesWithAnnotations';\n\nexport default pageNumbersToExtract => extractPagesWithAnnotations(pageNumbersToExtract);","/**\n * Focuses a note input field for the annotation. If the notes panel is closed, it is automatically opened before focusing.\n * @method UI.focusNote\n * @param {string} annotationId Id of an annotation.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var annotManager = instance.Core.annotationManager;\n\n    annotManager.addEventListener('annotationChanged', function(annotations, action) {\n      annotations.forEach(function(annotation) {\n        // Focus the note when annotation is created\n        if (action === 'add' && annotation.Listable) {\n          instance.UI.focusNote(annotation.Id); // note it is a capital i\n        }\n      });\n    });\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\n\nexport default store => id => {\n  // store.dispatch(actions.triggerNoteEditing());\n  const annotation = core.getAnnotationById(id);\n  store.dispatch(actions.openElement('notesPanel'));\n  core.selectAnnotation(annotation);\n};\n","import core from 'core';\n\nexport default () => {\n  return core.getCurrentUser();\n};\n","import getHashParameters from 'helpers/getHashParameters';\n\nexport default () => {\n  console.warn('Deprecated and will be removed in version 9.0');\n  if (!window.bbAnnotManager) {\n    const serverURL = getHashParameters('webviewerServerURL', '');\n    window.bbAnnotManager = new window.Core.BlackBoxAnnotationManager(serverURL, window.documentViewer);\n  }\n\n  return window.bbAnnotManager;\n};","import selectors from 'selectors';\n\nexport default store => () => {\n  return selectors.getCurrentPage(store.getState());\n};\n","/**\n * Return the current fit mode of the WebViewerInstance UI.\n * @method UI.getFitMode\n * @return {string} Current fit mode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getFitMode());\n    });\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default store => () => selectors.getFitMode(store.getState());","/**\n * Return the current layout mode of the WebViewerInstance.\n * @method UI.getLayoutMode\n * @return {string} Current layout mode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getLayoutMode());\n    });\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default store => () => selectors.getDisplayMode(store.getState());\n","import selectors from 'selectors';\n\nexport default store => () => {\n  return selectors.getTotalPages(store.getState());\n};\n","/**\n * Get the currently selected pages\n * @method UI.getSelectedThumbnailPageNumbers\n * @return {Array<number>} an array of select page numbers\n * @example // 6.0 and after\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.getSelectedThumbnailPageNumbers();\n  });\n */\nimport selectors from 'selectors';\n\nexport default store => () => {\n  console.warn('UI.getSelectedThumbnailPageNumbers is deprecated since version 8.5. Please use UI.ThumbnailsPanel.getSelectedPageNumbers instead');\n\n  return selectors.getSelectedThumbnailPageIndexes(store.getState()).map(pageIndex => pageIndex + 1);\n};","import exposedSelectors from 'selectors';\n\nexport default store => mapExposedSelectors(store);\n\nconst mapExposedSelectors = store => Object.keys(exposedSelectors).reduce((acc, selector) => {\n  acc[selector] = (...params) => {\n    const state = store.getState();\n    return exposedSelectors[selector](state, ...params);\n  };\n  return acc;\n}, {});\n","import selectors from 'selectors';\n\nexport default store => () => {\n  return !!selectors.isElementOpen(store.getState(), 'leftPanel');\n};\n","import getSideWindowVisibility from './getSideWindowVisibility';\n\nexport default store => () => {\n  return getSideWindowVisibility(store)();\n};\n","/**\n * Return the current tool object.\n * @method UI.getToolMode\n * @return {Core.Tools.Tool} Instance of the current tool\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getToolMode().name, instance.UI.getToolMode());\n  });\n */\n\nimport core from 'core';\n\nexport default () => core.getToolMode();","/**\n * Return the current zoom level\n * @method UI.getZoomLevel\n * @return {number} Zoom level (0 ~ 1)\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getZoomLevel());\n    });\n  });\n */\n\nimport core from 'core';\n\nexport default () => core.getZoom();\n","/**\n * Return the max zoom level\n * @method UI.getMaxZoomLevel\n * @return {number} max zoom level\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getMaxZoomLevel());\n    });\n  });\n */\n\nimport zoomFactors from 'constants/zoomFactors';\n\nexport default () => zoomFactors.getMaxZoomLevel();","/**\n * Return the min zoom level\n * @method UI.getMinZoomLevel\n * @return {number} min zoom level\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getMinZoomLevel());\n    });\n  });\n */\n\nimport zoomFactors from 'constants/zoomFactors';\n\nexport default () => zoomFactors.getMinZoomLevel();","import selectors from 'selectors';\n\n/**\n * Check whether high contrast mode is enabled or not.\n * @deprecated since version 8.0. Use isHighContrastModeEnabled Instead\n * @method UI.getIsHighContrastMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.getIsHighContrastMode();\n  });\n */\n\nexport default store => () => {\n  console.warn('Deprecated since version 8.0. Please use isHighContrastModeEnabled Instead');\n  return selectors.getIsHighContrastMode(store.getState());\n};\n","import core from 'core';\n\nexport default () => {\n  core.setCurrentPage(1);\n};\n","import core from 'core';\nimport selectors from 'selectors';\n\nexport default store => () => {\n  core.setCurrentPage(selectors.getTotalPages(store.getState()));\n};\n","import core from 'core';\nimport selectors from 'selectors';\n\nexport default store => () => {\n  const state = store.getState();\n  const currentPage = selectors.getCurrentPage(state);\n\n  if (currentPage === selectors.getTotalPages(state)) {\n    console.warn('you are at the last page');\n  } else {\n    const nextPage = currentPage + 1;\n    core.setCurrentPage(nextPage);\n  }\n};\n","import core from 'core';\nimport selectors from 'selectors';\n\nexport default store => () => {\n  const currentPage = selectors.getCurrentPage(store.getState());\n\n  if (currentPage === 1) {\n    console.warn('You are at the first page');\n  } else {\n    const prevPage = currentPage - 1;\n    core.setCurrentPage(prevPage);\n  }\n};","import actions from 'actions';\n\n/**\n * hide outline control\n * @method UI.hideOutlineControl\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.hideOutlineControl();\n  });\n */\n\nexport default store => () => {\n  store.dispatch(actions.setOutlineControlVisibility(false));\n};\n","import core from 'core';\n\nexport default () => {\n  return !!core.getIsAdminUser();\n};","/**\n * Returns whether the element is disabled.\n * @method UI.isElementDisabled\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://www.pdftron.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @returns {boolean} Whether the element is disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isElementDisabled('leftPanel'));\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default store => dataElement => !!selectors.isElementDisabled(store.getState(), dataElement);","/**\n * Returns whether the element is open.\n * @method UI.isElementOpen\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://www.pdftron.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @returns {boolean} Whether the element is open.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isElementOpen('leftPanel'));\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default store => dataElement => !!selectors.isElementOpen(store.getState(), dataElement);\n","import selectors from 'selectors';\n\n/**\n * Check whether high contrast mode is enabled or not.\n * @method UI.isHighContrastModeEnabled\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.isHighContrastModeEnabled();\n  });\n */\n\nexport default store => () => {\n  return selectors.getIsHighContrastMode(store.getState());\n};\n","export default () => {\n  console.warn(\n    'instance.isMobileDevice is deprecated, please check https://stackoverflow.com/questions/3514784/what-is-the-best-way-to-detect-a-mobile-device for an alternative. The deprecated API will be removed in 7.0.',\n  );\n\n  return !!(\n    !isIE() &&\n    ((scrollbarWidth() === 0 && navigator.userAgent.match(/Edge/i)) ||\n      navigator.userAgent.match(/Android/i) ||\n      navigator.userAgent.match(/webOS/i) ||\n      navigator.userAgent.match(/iPhone/i) ||\n      navigator.userAgent.match(/iPod/i) ||\n      navigator.userAgent.match(/iPad/i) ||\n      navigator.userAgent.match(/Touch/i) ||\n      navigator.userAgent.match(/IEMobile/i) ||\n      navigator.userAgent.match(/Silk/i))\n  );\n};\n\nconst isIE = () => {\n  const ua = navigator.userAgent.toLowerCase();\n  const match =\n    /(msie) ([\\w.]+)/.exec(ua) || /(trident)(?:.*? rv:([\\w.]+)|)/.exec(ua);\n\n  return match ? parseInt(match[2], 10) : match;\n};\n\n// In windows 10 tablets, the tablet mode and desktop mode use the same user agent.  HOWEVER\n// the scrollbar width in tablet mode is 0. This means that we can find the scrollbar width\n// and use it to determine if they are in tablet mode (mobile viewer) or desktop mode\nconst scrollbarWidth = () => {\n  const scrollDiv = document.createElement('div');\n  scrollDiv.style.cssText =\n    'width:100px;height:100px;overflow:scroll !important;position:absolute;top:-9999px';\n  document.body.appendChild(scrollDiv);\n\n  const result = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n  document.body.removeChild(scrollDiv);\n\n  return result;\n};\n","import core from 'core';\n\nexport default () => {\n  return !!core.getIsReadOnly();\n};","/**\n * Returns whether the tool is disabled.\n * @method UI.isToolDisabled\n * @param {string} toolName Name of the tool, either from <a href='https://www.pdftron.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @returns {boolean} Whether the tool is disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isToolDisabled());\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default store => toolName => {\n  const state = store.getState();\n  const dataElement = selectors.getToolButtonDataElement(state, toolName);\n\n  return selectors.isElementDisabled(state, dataElement);\n};\n","import isFullscreen from 'helpers/isFullscreen';\n\n/**\n * Returns whether in fullscreen mode.\n * @method UI.isFullscreen\n * @returns {boolean} Whether in fullscreen mode.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isFullscreen());\n  });\n */\nexport default () => {\n  return isFullscreen();\n};\n","/**\n * Load a document inside WebViewer UI.\n * @method UI.loadDocument\n * @param {(string|File|Blob|Core.Document|Core.PDFNet.PDFDoc)} documentPath Path to the document OR <a href='https://developer.mozilla.org/en-US/docs/Web/API/File' target='_blank'>File object</a> if opening local file.\n * @param {UI.loadDocumentOptions} [options] Additional options\n\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.loadDocument('https://www.pdftron.com/downloads/pl/test.pdf', {\n      documentId: '1',\n      filename: 'sample-1.pdf'\n    });\n  });\n */\n\nimport loadDocument from 'helpers/loadDocument';\n\nexport default store => (src, options) => {\n  loadDocument(store.dispatch, src, options);\n};\n\n/**\n * @typedef {Object} UI.loadDocumentOptions\n * @property {string} [extension] The extension of the file. If file is a blob/file object or a URL without an extension then this is necessary so that WebViewer knows what type of file to load.\n * @property {string} [filename] Filename of the document, which is used when downloading the PDF.\n * @property {object} [customHeaders] An object of custom HTTP headers to use when retrieving the document from the specified url.\n * @property {object} [webViewerServerCustomQuerypropertyeters] An object of custom query propertyeters to be appended to every WebViewer Server request.\n * @property {string} [documentId] Unique id of the document.\n * @property {boolean} [withCredentials] Whether or not cross-site requests should be made using credentials.\n * @property {string} [cacheKey] A key that will be used for caching the document on WebViewer Server.\n * @property {object} [officeOptions] An object that contains the options for an Office document.\n * @property {Core.TemplateData} [officeOptions.templateValues] If set, will perform template replacement with the data specified by this parameter\n * @property {boolean} [officeOptions.doTemplatePrep] If set, it will interpret the office document as a template document and compile all of the template tags in the document\n * @property {boolean} [officeOptions.disableBrowserFontSubstitution] By default, office viewing takes a lightweight approach to font substitution, allowing the browser to select fonts when they are not embedded in the document itself.\n * While this means that WebViewer has access to all the fonts on the user's system, it also means that an office document may have a different \"look\" on different systems (depending on the fonts available) and when it is converted to PDF (as the PDF conversion routine cannot obtain low-level access to user fonts, for security reasons).\n * disableBrowserFontSubstitution prevents this browser substitution, forcing the WebViewer backend to handle all fonts. This means that viewing and conversion to PDF will be 100% consistent from system-to-system, at the expense of a slightly slower initial viewing time and higher bandwidth usage.\n * Using https://www.pdftron.com/documentation/web/faq/self-serve-substitute-fonts/ along with this option allows you to fully customize the substitution behaviour for all office files.\n * @property {object} [officeOptions.formatOptions] An object that contains formatting options for an Office document. Same options as allowed here {@link Core.PDFNet.Convert.OfficeToPDFOptions}.\n * @property {boolean} [officeOptions.formatOptions.applyPageBreaksToSheet] If true will split Excel worksheets into pages so that the output resembles print output.\n * @property {boolean} [officeOptions.formatOptions.displayChangeTracking] If true will display office change tracking markup present in the document (i.e, red strikethrough of deleted content and underlining of new content). Otherwise displays the resolved document content, with no markup. Defaults to true.\n * @property {number} [officeOptions.formatOptions.excelDefaultCellBorderWidth] Cell border width for table cells that would normally be drawn with no border. In units of points. Can be used to achieve a similar effect to the \"show gridlines\" display option within Microsoft Excel.\n * @property {number} [officeOptions.formatOptions.excelMaxAllowedCellCount] An exception will be thrown if the number of cells in an Excel document is above the value. Used for early termination of resource intensive documents. Setting this value to 250000 will allow the vast majority of Excel documents to convert without issue, while keeping RAM usage to a reasonable level. By default there is no limit to the number of allowed cells.\n * @property {string} [officeOptions.formatOptions.locale] Sets the value for Locale in the options object ISO 639-1 code of the current system locale. For example: 'en-US', 'ar-SA', 'de-DE', etc.\n * @property {string} [password] A string that will be used to as the password to load a password protected document.\n * @property {function} [onError] - A callback function that will be called when error occurs in the process of loading a document. The function signature is `function(e) {}`\n * @property {object} [xodOptions] - An object that contains the options for a XOD document.\n * @property {boolean} [xoddecrypt] - Function to be called to decrypt a part of the XOD file. For default XOD AES encryption pass Core.Encryption.decrypt.\n * @property {boolean} [xoddecryptOptions] -  An object with options for the decryption e.g. {p: \"pass\", type: \"aes\"} where is p is the password.\n * @property {boolean} [xodstreaming] - A boolean indicating whether to use http or streaming PartRetriever, it is recommended to keep streaming false for better performance. https://www.pdftron.com/documentation/web/guides/streaming-option.\n * @property {boolean} [xodazureWorkaround] - Whether or not to workaround the issue of Azure not accepting range requests of a certain type. Enabling the workaround will add an extra HTTP request of overhead but will still allow documents to be loaded from other locations.\n * @property {boolean} [xodstartOffline] - Whether to start loading the document in offline mode or not. This can be set to true if the document had previously been saved to an offline database using WebViewer APIs. You'll need to use this option to load from a completely offline state.\n */\n","import core from 'core';\nimport mentionsManager from 'helpers/MentionsManager';\n\n/**\n * An instance of MentionsManager that can be used to allow mentioning people in a textarea in the notes panel.\n * @name UI.mentions\n * @see UI.MentionsManager\n * @type {UI.MentionsManager}\n */\n\nexport default store => {\n  mentionsManager.initialize(store, core.getAnnotationManager());\n\n  return expose(mentionsManager, [\n    'setUserData',\n    'getUserData',\n    'setAllowedTrailingCharacters',\n    'getAllowedTrailingCharacters',\n    'on',\n    'one',\n    'off',\n    'trigger',\n    'addEventListener',\n    'setEventListener',\n    'removeEventListener',\n    'setMentionLookupCallback',\n    'getMentionLookupCallback'\n  ]);\n};\n\nconst expose = (obj, methodsToExpose) => {\n  const result = {};\n\n  for (const methodName of methodsToExpose) {\n    result[methodName] = (...args) => obj[methodName](...args);\n  }\n\n  return result;\n};\n","/**\r\n * An instance of MenuOverlay that can be used to edit items in the settings menu overlay component.\r\n * @name UI.settingsMenuOverlay\r\n * @implements {UI.MenuOverlay}\r\n * @type {UI.MenuOverlay}\r\n * @example\r\nWebViewer(...)\r\n  .then(function (instance) {\r\n    instance.UI.settingsMenuOverlay.someAPI();\r\n  });\r\n */\r\n\r\n\r\n/**\r\n * A class which contains MenuOverlay APIs.<br/><br/>\r\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in a MenuOverlay, use {@link UI.disableElements disableElements}.\r\n * @interface UI.MenuOverlay\r\n */\r\nimport actions from 'actions';\r\nimport selectors from 'selectors';\r\n\r\nexport default store => Object.create(MenuOverlayAPI).initialize(store);\r\n\r\nconst MenuOverlayAPI = {\r\n  initialize(store) {\r\n    this.store = store;\r\n    return this;\r\n  },\r\n  /**\r\n   * Add an array of Actions Buttons after the item that has the given data element.\r\n   * @method UI.MenuOverlay#add\r\n   * @param {Array.<object>} items Same as <a href='https://www.pdftron.com/documentation/web/guides/customizing-header#actionbutton' target='_blank'>ActionButton</a>\r\n   * @param {string} [dataElement] An optional string. If not given, items will be added in the beginning\r\n   * @returns {this} The instance itself\r\n   * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    instance.UI.settingsMenuOverlay.add({\r\n      type: 'actionButton',\r\n      className:\"row\",\r\n      img: 'icon-header-print-line',\r\n      onClick: () => {\r\n        alert('Printing...');\r\n      },\r\n      dataElement: 'alertButton',\r\n      label:'print button'\r\n    });\r\n  });\r\n   */\r\n  add(buttons, dataElement) {\r\n    if (!Array.isArray(buttons)) {\r\n      buttons = [buttons];\r\n    }\r\n\r\n    const index = this._getIndexByDataElement(dataElement);\r\n    const items = this.getItems();\r\n\r\n    items.splice(index + 1, 0, ...buttons);\r\n\r\n    this.store.dispatch(actions.setMenuOverlayItems(items));\r\n\r\n    return this;\r\n  },\r\n  /**\r\n   * Update all the items in the menuOverlay dropdown.\r\n   * To update an individual item, use {@link UI.updateElement updateElement}\r\n   * @method UI.MenuOverlay#update\r\n   * @param {Array.<object>} [items] the items that will be rendered in the menuOverlay dropdown\r\n   * @returns {this} The instance itself\r\n   * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    // replace existing items with a new array of items\r\n    instance.UI.settingsMenuOverlay.update([\r\n      {\r\n        type: 'actionButton',\r\n        className:\"row\",\r\n        img: 'icon-header-print-line',\r\n        onClick: () => {\r\n          alert('Hello world!');\r\n        },\r\n        dataElement: 'alertButton',\r\n        label:'test button',\r\n        role:\"option\"\r\n      },\r\n      {\r\n        type: 'actionButton',\r\n        className:\"row\",\r\n        img: 'icon-header-print-line',\r\n        onClick: () => {\r\n          alert('Hello world!');\r\n        },\r\n        dataElement: 'alertButton2',\r\n        label:'test button 2',\r\n        role:\"option\"\r\n      },\r\n    ]);\r\n  });\r\n   */\r\n  update(items) {\r\n    if (!items) {\r\n      items = [];\r\n    }\r\n    this.store.dispatch(actions.setMenuOverlayItems(items));\r\n\r\n    return this;\r\n  },\r\n  /**\r\n   * Return the array of items in the menuOverlay dropdown.\r\n   * @method UI.MenuOverlay#getItems\r\n   * @returns {Array.<object>} Current items in the menuOverlay dropdown.\r\n   * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    instance.UI.settingsMenuOverlay.getItems();\r\n  });\r\n   */\r\n  getItems() {\r\n    return [...selectors.getMenuOverlayItems(this.store.getState())];\r\n  },\r\n  _getIndexByDataElement(dataElement) {\r\n    let index;\r\n\r\n    if (typeof dataElement === 'undefined') {\r\n      index = -1;\r\n    } else {\r\n      const state = this.store.getState();\r\n      index = selectors.getMenuOverlayItems(state).findIndex(obj => obj.dataElement === dataElement);\r\n    }\r\n\r\n    return index;\r\n  },\r\n};\r\n","import actions from 'actions';\n\nexport default store => dataElement => {\n  store.dispatch(actions.openElement(dataElement));\n};","/**\n * Sets visibility states of the elements to be visible. Note that openElements works only for panel/overlay/popup/modal elements.\n * @method UI.openElements\n * @param {Array.<string>} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://www.pdftron.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // opens (shows) text popup and annotation popup in the UI\n    instance.UI.openElements([ 'menuOverlay', 'leftPanel' ]);\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => dataElements => {\n  store.dispatch(actions.openElements(dataElements));\n};","/**\n * Print the current document.\n * @method UI.print\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.print();\n    });\n  });\n */\n\nimport { print } from 'helpers/print';\nimport selectors from 'selectors';\n\nexport default store => () => {\n  print(\n    store.dispatch,\n    selectors.isEmbedPrintSupported(store.getState()),\n    selectors.getSortStrategy(store.getState()),\n    selectors.getColorMap(store.getState()),\n  );\n};\n","/**\n * Programmatically print the document without opening a modal with the print options provided. Not supported by legacy-ui\n * @method UI.printInBackground\n * @param {object} [options] Options for the printing.\n * @param {Array.<number>} [options.pagesToPrint] Optionally pass in the pages you want to print. By default, all pages will be printed.\n * @param {boolean} [options.includeAnnotations=false] If true, will print the documents with the annotations\n * @param {boolean} [options.includeComments=false] If true, will append comments to the document printed\n * @param {boolean} [options.isPrintCurrentView] If true, will print the current viewport view of the current page\n * @param {boolean} [options.maintainPageOrientation] If true, will maintain the pages orientation as set in the webviewer during printing\n * @param {function} [options.onProgress] A callback function that is executed on each page processed\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.printInBackground({\n        includeComments:true,\n        includeAnnotations: true,\n        maintainPageOrientation: true,\n        onProgress: function(pageNumber, htmlElement) {},\n      });\n    });\n  });\n */\n\nimport { print } from 'helpers/print';\nimport selectors from 'selectors';\n\nexport default store => options => {\n  const defaultOptions = {\n    includeAnnotations: false,\n    includeComments: false,\n    maintainPageOrientation: false,\n  };\n\n  const printOptions = {\n    ...defaultOptions,\n    ...options,\n    printWithoutModal: true,\n    printQuality: selectors.getPrintQuality(store.getState()),\n    printedNoteDateFormat: selectors.getPrintedNoteDateFormat(store.getState()),\n  };\n\n  const { pagesToPrint } = printOptions;\n\n  if (pagesToPrint && pagesToPrint.length === 0) {\n    console.warn('No pages to be printed were found in the \"pagesToPrint\" array provided. If you want to print all pages, please set this to undefined or null.');\n    return;\n  }\n\n  print(\n    store.dispatch,\n    selectors.isEmbedPrintSupported(store.getState()),\n    selectors.getSortStrategy(store.getState()),\n    selectors.getColorMap(store.getState()),\n    printOptions,\n  );\n};\n","/**\n * Stops on-going page processing to cancel a print job.\n * @method UI.cancelPrint\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.print();\n      instance.UI.cancelPrint();\n    });\n  });\n */\n\nimport { cancelPrint } from 'helpers/print';\n\nexport default () => {\n  cancelPrint();\n};\n","/**\n * Registers tool in the document viewer tool mode map, and adds a button object to be used in the header. See <a href='https://www.pdftron.com/documentation/web/guides/customizing-tools' target='_blank'>Customizing tools</a> to learn how to make a tool.\n * @method UI.registerTool\n * @param {object} properties Tool properties.\n * @param {string} properties.toolName Name of the tool.\n * @param {Core.Tools.Tool} properties.toolObject Instance of the tool.\n * @param {string} properties.buttonImage Path to an image or base64 data for the tool button.\n * @param {string} [properties.buttonName] Name of the tool button that will be used in data-element.\n * @param {string} [properties.buttonGroup] Group of the tool button belongs to.\n * @param {string} [properties.tooltip] Tooltip of the tool button.\n * @param {'always'|'active'|'never'} [properties.showColor] Controls when the tool button should show the color.\n * @param {boolean} [properties.showPresets] Option to whether show or hide preset styles. Default is true.\n * @param {function} [annotationConstructor] Deprecated Please use customAnnotationCheckFunc instead. Will be removed in the future.\n * @param {function} [customAnnotationCheckFunc] Function that takes in a parameter of an annotation. Returns a boolean if the specified annotation is a certain type of annotation. This function is used by the viewer to check if the annotation passed in is associated(created) with the registered tool.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // assume myCustomTool and myCustomAnnotation are already defined\n    const myTool = {\n      toolName: 'MyTool',\n      toolObject: myCustomTool,\n      buttonImage: 'path/to/image',\n      buttonName: 'myToolButton',\n      buttonGroup: 'miscTools',\n      tooltip: 'MyTooltip'\n    };\n\n    instance.UI.registerTool(myTool, undefined, annot => annot && annot.isCustomAnnot);\n  });\n */\n\nimport core from 'core';\nimport { register, copyMapWithDataProperties } from 'constants/map';\nimport actions from 'actions';\nimport { setDefaultToolStyle } from 'src/helpers/setDefaultToolStyles';\n\nexport default store => (tool, annotationConstructor, customAnnotationCheckFunc) => {\n  registerToolInToolModeMap(tool);\n  registerToolInRedux(store, tool);\n  register(tool, annotationConstructor, customAnnotationCheckFunc);\n  updateColorMapInRedux(store);\n  setDefaultToolStyle(tool.toolName);\n};\n\nconst registerToolInRedux = (store, tool) => {\n  store.dispatch(actions.registerTool(tool));\n};\n\nconst registerToolInToolModeMap = ({ toolObject, toolName }) => {\n  const toolModeMap = core.getToolModeMap();\n\n  toolModeMap[toolName] = toolObject;\n  toolModeMap[toolName].name = toolName;\n};\n\nconst updateColorMapInRedux = store => {\n  store.dispatch(actions.setColorMap(copyMapWithDataProperties('iconColor', 'currentPalette')));\n};\n","/**\n * Removes the search listener function.\n * @method UI.removeSearchListener\n * @param {UI.searchListener} listener Search listener function that was added.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    function searchListener(searchValue, options, results) {\n      console.log(searchValue, options, results);\n    };\n\n    instance.UI.addSearchListener(searchListener);\n    instance.UI.removeSearchListener(searchListener);\n  });\n */\n\nimport { removeSearchListener as removeSearchListenerHelper } from 'helpers/search';\n\nexport default function removeSearchListener(listener) {\n  removeSearchListenerHelper(listener);\n}\n","import core from 'core';\n\nexport default () => {\n  core.rotateClockwise();\n};\n","import core from 'core';\n\nexport default () => {\n  core.rotateCounterClockwise();\n};\n","import core from 'core';\n\nexport default store => () => new Promise((resolve, reject) => {\n  const state = store.getState();\n  const { id: docId } = state.document;\n  const { serverUrl, serverUrlHeaders } = state.advanced;\n  const docIdQuery = docId ? { did: docId } : {};\n\n  if (!serverUrl) {\n    console.warn('serverUrl option is not defined. Please pass this option in WebViewer constructor to save/load annotations. See https://www.pdftron.com/documentation/web/guides/annotations/saving-loading-annotations for details.');\n    reject();\n    return;\n  }\n\n  core.exportAnnotations(xfdfString => {\n    fetch(serverUrl, {\n      method: 'POST',\n      headers: serverUrlHeaders,\n      body: {\n        ...docIdQuery,\n        data: xfdfString,\n      },\n      credentials: 'include'\n    }).then(response => {\n      if (response.ok) {\n        resolve();\n      } else {\n        reject(response);\n      }\n    }).catch(reject);\n  });\n});\n","/**\n * Searches the document one by one for the text matching searchValue. To go to the next result this\n * function must be called again. Once document end is reach it will jump back to the first found result.\n *\n * @method UI.searchText\n * @param {string} searchValue The text value to look for.\n * @param {object} [options] Search options.\n * @param {boolean} [options.caseSensitive=false] Search with matching cases.\n * @param {boolean} [options.wholeWord=false] Search whole words only.\n * @param {boolean} [options.wildcard=false] Search a string with a wildcard *. For example, *viewer.\n * @param {boolean} [options.regex=false] Search for a regex string. For example, www(.*)com.\n * @param {boolean} [options.searchUp=false] Search up the document (backwards).\n * @param {boolean} [options.ambientString=false] Get the ambient string in the result.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.searchText('test', {\n        caseSensitive: true,\n        wholeWord: true\n      });\n    });\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\nimport { getSearchListeners } from 'helpers/search';\n\nfunction buildSearchModeFlag(options = {}) {\n  const SearchMode = core.getSearchMode();\n  let searchMode = SearchMode.PAGE_STOP | SearchMode.HIGHLIGHT;\n\n  if (options.caseSensitive) {\n    searchMode |= SearchMode.CASE_SENSITIVE;\n  }\n  if (options.wholeWord) {\n    searchMode |= SearchMode.WHOLE_WORD;\n  }\n  if (options.wildcard) {\n    searchMode |= SearchMode.WILD_CARD;\n  }\n  if (options.regex) {\n    searchMode |= SearchMode.REGEX;\n  }\n  if (options.searchUp) {\n    searchMode |= SearchMode.SEARCH_UP;\n  }\n  if (options.ambientString) {\n    searchMode |= SearchMode.AMBIENT_STRING;\n  }\n  return searchMode;\n}\n\nexport default function searchText(dispatch) {\n  return function searchText(searchValue, options) {\n    let searchOptions = {};\n    if (typeof options === 'string') {\n      const modes = options.split(',');\n      modes.forEach(mode => {\n        searchOptions[lowerCaseFirstLetter(mode)] = true;\n      });\n    } else {\n      searchOptions = { ...options };\n    }\n\n    const searchMode = buildSearchModeFlag(searchOptions);\n\n    if (dispatch) {\n      // dispatch is only set when doing search through API (instance.searchText())\n      // When triggering search through UI, then redux updates are already handled inside component\n      dispatch(actions.openElement('searchPanel'));\n      dispatch(actions.searchText(searchValue, searchOptions));\n    }\n\n    function onResult(result) {\n      core.displaySearchResult(result);\n      core.setActiveSearchResult(result);\n      const optionsForSearchListener = {\n        // default values\n        caseSensitive: false,\n        wholeWord: false,\n        wildcard: false,\n        regex: false,\n        searchUp: false,\n        ambientString: false,\n        // override values with those user gave\n        ...searchOptions,\n      };\n      const searchListeners = getSearchListeners() || [];\n      searchListeners.forEach(listener => {\n        try {\n          listener(searchValue, optionsForSearchListener, [result]);\n        } catch (e) {\n          console.error(e);\n        }\n      });\n    }\n\n    function onDocumentEnd() {\n      core.getDocumentViewer().trigger('endOfDocumentResult', true);\n    }\n    function handleSearchError(error) {\n      console.error(error);\n    }\n    const textSearchInitOptions = {\n      'fullSearch': false,\n      onResult,\n      onDocumentEnd,\n      'onError': handleSearchError,\n    };\n\n    core.textSearchInit(searchValue, searchMode, textSearchInitOptions);\n  };\n}\n\n\nconst lowerCaseFirstLetter = mode => `${mode.charAt(0).toLowerCase()}${mode.slice(1)}`;\n","/**\n * Set the WV3D Properties Panel with an array of model data objects\n * @method UI.setWv3dPropertiesPanelModelData\n * @param {array} modelData Array of objects defining 3d metadata properties.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setWv3dPropertiesPanelModelData([{'name':'roof', 'height':'55cm'}, {'name':'wall', 'height':'100cm'}]);\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => modelData => {\n  store.dispatch(actions.setWv3dPropertiesPanelModelData(modelData));\n};\n","/**\n * Set the configuration schema for the WV3D Properties Panel\n * @method UI.setWv3dPropertiesPanelSchema\n * @param {object} schema Object containing options for configuring the 3d properties panel.\n * @param {string} schema.headerName Sets the Title Header\n * @param {object} schema.defaultValues Defines the key/value pairs that will appear under the title, outside of a group.\n * @param {object} schema.groups Defines the collapsible groups that appear below the default values.\n * @param {array} schema.groupOrder Defines the order of the groups. If a group is not included it is appended to the end of the defined groups.\n * @param {boolean} schema.removeEmptyRows Defines whether to remove rows that contain empty string values.\n * @param {boolean} schema.removeEmptyGroups Defines whether to remove groups that contain only empty string values.\n * @param {boolean} schema.createRawValueGroup Defines whether to create a final group that has all the raw values.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setWv3dPropertiesPanelSchema({\n      headerName: 'Name',\n      defaultValues: {\n        Description: 'Description',\n        GlobalID: 'GlobalId',\n        Handle: 'handle',\n        EmptyRow1: 'EmptyRow1',\n      },\n      groups: {\n        SampleGroup01: {\n          SampleField01: 'Sample01',\n          SampleField02: 'Sample02',\n          SampleField03: 'Sample03',\n          EmptyRow2: 'EmptyRow2',\n          GrossFootprintArea: 'GrossFootprintArea',\n          GrossSideArea: 'GrossSideArea',\n          GrossVolume: 'GrossVolume',\n        },\n        SampleGroup02: {\n          SampleField01: 'Sample01',\n          SampleField02: 'Sample02',\n          SampleField03: 'Sample03',\n        },\n        SampleGroup03: {\n          ObjectType: 'Elephants',\n          EmptyRow3: 'Tigers',\n          ObjectPlacement: 'Bears',\n        },\n      },\n      groupOrder: ['Dimensions', 'RandomStuff'],\n      removeEmptyRows: false,\n      removeEmptyGroups: true,\n      createRawValueGroup: true,\n    })\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => schema => {\n  store.dispatch(actions.setWv3dPropertiesPanelSchema(schema));\n};\n","/**\n * Sets a header group to be rendered in the Header element. This API comes useful when replacing the entire header items in small screens.\n * @method UI.setActiveHeaderGroup\n * @param {string} headerGroup Name of the header group to be rendered. Default WebViewer UI has eight header groups: 'default', 'small-mobile-more-buttons', 'toolbarGroup-View', 'toolbarGroup-Annotate', 'toolbarGroup-Shapes', 'toolbarGroup-Insert', 'toolbarGroup-Measure', and 'toolbarGroup-Edit'.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setActiveHeaderGroup('toolbarGroup-Annotate'); // switch to 'Annotate' group header\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => headerGroup => {\n  store.dispatch(actions.setActiveHeaderGroup(headerGroup));\n};","/**\n * Sets a panel to be active in the leftPanel element. Note that this API does not include opening the leftPanel.\n * @method UI.setActiveLeftPanel\n * @param {string} dataElement Name of the panel to be active in leftPanel. Default WebViewer UI has three panel options: thumbnailsPanel, outlinesPanel and notesPanel.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // open left panel\n    instance.UI.openElements([ 'leftPanel' ]);\n    // view outlines panel\n    instance.UI.setActiveLeftPanel('outlinesPanel');\n */\n\nimport actions from 'actions';\n\nexport default store => headerGroup => {\n  store.dispatch(actions.setActiveLeftPanel(headerGroup));\n};","import core from 'core';\n\nexport default isAdmin => {\n  core.setIsAdminUser(isAdmin);\n};\n","import core from 'core';\n\nexport default userName => {\n  core.setCurrentUser(userName);\n};\n","export default {\n  border: 'StrokeColor',\n  fill: 'FillColor',\n  text: 'TextColor',\n};","export default {\n  StrokeColor: 'border',\n  FillColor: 'fill',\n  TextColor: 'text',\n};","import actions from 'actions';\nimport { getDataWithKey, mapToolNameToKey } from 'constants/map';\nimport mapPaletteToAnnotationColorProperty from 'constants/mapPaletteToAnnotationColorProperty';\nimport mapAnnotationColorPropertyToPalette from 'constants/mapAnnotationColorPropertyToPalette';\n\n/**\n * Sets the active color palette of a tool and its associated annotation\n * @method UI.setActivePalette\n * @param {string} toolName Name of the tool, either from <a href='https://www.pdftron.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @param {'text'|'border'|'fill'} colorPalette The palette to be activated. One of 'text', 'border' and 'fill'.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setActivePalette('AnnotationCreateFreeText', 'fill')\n  });\n */\n\nexport default store => (toolName, colorPalette) => {\n  const availablePalettes = getDataWithKey(mapToolNameToKey(toolName)).availablePalettes;\n  const property = mapPaletteToAnnotationColorProperty[colorPalette];\n\n  if (availablePalettes.includes(property)) {\n    store.dispatch(actions.setActivePalette(mapToolNameToKey(toolName), property));\n  } else {\n    console.warn(`${toolName} does not have ${colorPalette} color, available colors are: ${availablePalettes.map(palette => mapAnnotationColorPropertyToPalette[palette]).join(', ')} `);\n  }\n};","import { mapToolNameToKey } from 'constants/map';\r\nimport actions from 'actions';\r\nimport selectors from 'selectors';\r\n\r\n/**\r\n * @typedef UI.PaletteOption\r\n * @property {string[]} toolNames Tools that will have the same colors in the palette.\r\n * @property {string[]} colors An array of hex colors. Use 'transparency' for a transparent color.\r\n */\r\n\r\n/**\r\n * Sets the colors in the palette globally or for specific tools and their associated annotations\r\n * @method UI.setColorPalette\r\n * @param {string[]|UI.PaletteOption} An array of hex colors that will override the default colors for every tool.\r\n * An object can be passed to specify colors for particular tools.\r\n * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    // this sets the palette globally. All the tools will use these colors. Can use empty string for blank spaces and 'transparency' for a transparent color.\r\n    instance.UI.setColorPalette(['#FFFFFF', '', '#DDDDDD', 'transparency']);\r\n\r\n    // use a different set of colors for the freetext and rectangle tool.\r\n    instance.UI.setColorPalette({\r\n      toolNames: ['AnnotationCreateFreeText', 'AnnotationCreateRectangle'],\r\n      colors: ['#333333'],\r\n    })\r\n  });\r\n */\r\n\r\nexport default store => overrides => {\r\n  const currentOverride = {\r\n    ...(selectors.getCustomElementOverrides(store.getState(), 'colorPalette') || {}),\r\n  };\r\n\r\n  if (Array.isArray(overrides)) {\r\n    if (overrides.every(isValidColor)) {\r\n      currentOverride.global = overrides;\r\n    } else {\r\n      return console.warn(\r\n        `An array is passed to setColorPalette, but some colors are invalid. A color must be 'transparency' or a hex color string. For example #F0F0F0`\r\n      );\r\n    }\r\n  } else if (typeof overrides === 'object') {\r\n    if (overrides.toolNames && overrides.colors) {\r\n      overrides.toolNames.forEach(toolName => {\r\n        const key = mapToolNameToKey(toolName);\r\n        currentOverride[key] = overrides.colors;\r\n      });\r\n    } else {\r\n      return console.warn(\r\n        `An object is passed to setColorPalette, but it doesn't have a toolNames or colors property.`\r\n      );\r\n    }\r\n  }\r\n\r\n  store.dispatch(actions.setCustomElementOverrides('colorPalette', currentOverride));\r\n};\r\n\r\n// examples of valid colors are: '#f0f0f0', '#FFFFFF'\r\nconst isValidColor = color =>\r\n  color === 'transparency' || (color.startsWith('#') && color.split('#')[1].length === 6);\r\n","import actions from 'actions';\n/**\n * Add a list of documents to the dropdown element of Page Replacement modal and provide a\n * way to retreive document for displaying Page Replacement modal.\n * @method UI.setPageReplacementModalFileList\n * @param {Array} list An array of object for selection element. Object must have \"id\", \"filename\" properties and \"onSelect\" method.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const list = [\n      {id: '12', filename: 'file-one.pdf'},\n      {id: '13', filename: 'file-two.pdf'},\n      {id: '14', filename: 'foobar.pdf'}\n    ];\n\n    const options = list.map(item => {\n      // Add \"onSelect\" method to each item, and return Document instance\n      item.onSelect = () => instance.Core.createDocument('https://localhost/files/webviewer-demo.pdf');\n      return item;\n    });\n\n    instance.UI.setPageReplacementModalFileList(options);\n  });\n */\n\nexport default store => list => {\n  if (Array.isArray(list)) {\n    if (!list.every(isValidObject)) {\n      return console.warn(\n        `An array is passed to setPageReplacementModalFileList is invalid`\n      );\n    }\n  }\n\n  store.dispatch(actions.setPageReplacementModalFileList(list));\n};\n\nconst isValidObject = item => {\n  return Object.prototype.hasOwnProperty.call(item, 'id')\n    || Object.prototype.hasOwnProperty.call(item, 'filename')\n    || Object.prototype.hasOwnProperty.call(item, 'onSelect')\n    || typeof item.onSelect === 'function';\n};","import actions from 'actions';\r\n\r\n/**\r\n * Turns high contrast mode on or off to help with accessibility.\r\n * @deprecated since version 8.0. Use enableHighContrastMode or disableHighContrastMode Instead\r\n * @method UI.setHighContrastMode\r\n * @param {boolean} useHighContrastMode If true then the UI will use high contrast colors to help with accessibility.\r\n * @example\r\n// Using predefined string\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    instance.UI.setHighContrastMode(true);\r\n  });\r\n */\r\n\r\nexport default store => useHighContrastMode => {\r\n  console.warn('\\'useHighContrastMode\\' is deprecated since version 8.0. Use enableHighContrastMode or disableHighContrastMode Instead');\r\n  store.dispatch(actions.setHighContrastMode(useHighContrastMode));\r\n};","import core from 'core';\n\nexport default pageNumber => {\n  core.setCurrentPage(pageNumber);\n};\n","import actions from 'actions';\n\n/**\n * Add custom modal element to WebViewer.\n * <br /><br />\n * Controlling custom modals is done using the element API, for example {@link UI.openElements openElements}, {@link UI.closeElements closeElements}, {@link UI.toggleElement toggleElement}, and {@link UI.disableElements disableElements}.\n * dateElement string passed on these function should be same as you set in options.dataElement.\n * <br /><br />\n * Every custom modal will add new &lt;div&gt; element with <b>CustomModal</b> and <b>&lt;options.dataElement string&gt;</b> set as class attribute\n * Modal with identical <em>options.dataElement</em> will get replaced by the latest modal options.\n * <br /><br />\n * For styling these components, see <a href=\"https://www.pdftron.com/documentation/web/guides/customizing-styles/\" target=\"_blank\">Customizing WebViewer UI Styles</a>\n *<br /><br />\n * Note that in most cases WebViewer is run inside an iframe and in order for <i>options.disableEscapeKeyDown</i> to automatically work, the iframe must be the\n * active element. This can be done by setting the focus to the iframe programmatically.\n *\n * @example\n WebViewer(...).then(function(instance) {\n    const modal = {\n      dataElement: 'meanwhileInFinlandModal',\n      header: {\n        title: 'Modal header',\n        className: 'myCustomModal-header',\n        style: {}, // optional inline styles\n        children: []\n      },\n      body: {\n        className: 'myCustomModal-body',\n        style: {}, // optional inline styles\n        children: [  divInput1, divInput2 ], // HTML dom elements\n      },\n      footer: {\n        className: 'myCustomModal-footer footer',\n        style: {}, // optional inline styles\n        children: [\n          {\n            title: 'Cancel',\n            button: true,\n            style: {},\n            className: 'modal-button cancel-form-field-button',\n            onClick: (e) => { console.log('ff') }\n          },\n          {\n            title: 'OK',\n            button: true,\n            style: {},\n            className: 'modal-button confirm ok-btn',\n            onClick: (e) => { console.log('xx') }\n          },\n        ]\n      }\n    };\n    instance.UI.addCustomModal(modal);\n    instance.UI.openElements([modal.dataElement]);\n  });\n * @method UI.addCustomModal\n * @param {object} options\n * @param {string} options.dataElement Unique name of custom modal.\n * @param {boolean} [options.disableBackdropClick=false] Disable closing modal when user clicks outside of content area\n * @param {boolean} [options.disableEscapeKeyDown=false] Disable closing modal when user hit escape from keyboard\n * @param {UI.renderCustomModal} options.render Function rendering custom model contents, this is optional\n * @param {object} options.header JSON object with title, className, style and children parameter\n * @param {object} options.body JSON object with title, className, style and children parameter\n * @param {object} options.footer JSON object with title, className, style and children parameter\n */\nfunction addCustomModal(store) {\n  return function(customModal) {\n    store.dispatch(actions.addCustomModal(customModal));\n  };\n}\n\n/**\n * @deprecated since version 8.5. Use [addCustomModal]{@link UI.addCustomModal} instead\n * @method UI.setCustomModal\n * @param {object} options\n * @param {string} options.dataElement Unique name of custom modal.\n * @param {boolean} [options.disableBackdropClick=false] Disable closing modal when user clicks outside of content area\n * @param {boolean} [options.disableEscapeKeyDown=false] Disable closing modal when user hit escape from keyboard\n * @param {UI.renderCustomModal} options.render Function rendering custom model contents\n */\nfunction setCustomModal(store) {\n  console.warn('\\'setCustomModal\\' deprecated since version 8.5. Please use UI.addCustomModal instead');\n  return addCustomModal(store);\n}\n\n/**\n * Callback that gets passed to `options.render` in {@link UI.addCustomModal addCustomModal}.\n * @callback UI.renderCustomModal\n * @returns {(HTMLElement|string)} Modal element. If string is returned, it will be displayed as is inside the modal\n */\n\nexport {\n  setCustomModal,\n  addCustomModal as default\n};\n","/**\n * Filter the annotations shown in the notes panel\n * @method UI.setCustomNoteFilter\n * @param {UI.filterAnnotation} filterAnnotation Function that takes an annotation and returns if the annotation(note) should be shown in the notes panel.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // only show annotations that are created by John\n    instance.UI.setCustomNoteFilter(function(annotation) {\n      return annotation.Author === 'John';\n    });\n  });\n */\n/**\n * Callback that gets passed to {@link UI.setCustomNoteFilter setCustomNoteFilter}.\n * @callback UI.filterAnnotation\n * @param {Core.Annotations.Annotation} annotation Annotation object\n * @returns {boolean} Whether the annotation should be kept.\n */\n\nimport actions from 'actions';\n\nexport default store => filterFunc => {\n  store.dispatch(actions.setCustomNoteFilter(filterFunc));\n};","/**\n * Adds a custom panel in left panel\n * @method UI.setCustomPanel\n * @param {object} options\n * @param {object} options.tab Tab options.\n * @param {string} options.tab.dataElement data-element for tab.\n * @param {string} options.tab.title Tooltip for tab.\n * @param {string} options.tab.img Url for an image.\n * @param {object} options.panel Panel options.\n * @param {string} options.panel.dataElement data-element for panel.\n * @param {UI.renderCustomPanel} options.panel.render Function that returns panel element.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var myCustomPanel = {\n      tab:{\n        dataElement: 'customPanelTab',\n        title: 'customPanelTab',\n        img: 'https://www.pdftron.com/favicon-32x32.png',\n      },\n      panel: {\n        dataElement: 'customPanel',\n        render: function() {\n          var div = document.createElement('div');\n          div.innerHTML = 'Hello World';\n          return div;\n        }\n      }\n    };\n\n    instance.UI.setCustomPanel(myCustomPanel);\n  });\n */\n/**\n * Callback that gets passed to `options.panel.render` in {@link UI.setCustomPanel setCustomPanel}.\n * @callback UI.renderCustomPanel\n * @returns {HTMLElement} Panel element.\n */\n\nimport actions from 'actions';\n\nexport default store => customPanel => {\n  store.dispatch(actions.setCustomPanel(customPanel));\n};","/**\n * Returns a dictionary with page indices as keys and the bookmark text as the values\n * @method UI.exportBookmarks\n * @return {Object} A dictionary with page indices as keys and the bookmark text as the values. ex: {\"0\":\"Bookmark 1\",\"2\":\"Bookmark 2\"}\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Save the annotation data for doc123\n    const bookmarks = instance.UI.exportBookmarks();\n    const bookmarksString = JSON.stringify(bookmarks);\n    fetch('/server/bookmarksHandler.js?documentId=doc123', {\n      method: 'POST',\n      body: bookmarksString // written into a json file on server\n    });\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default store => () => {\n  return selectors.getBookmarks(store.getState());\n};\n","/**\n * Imports user bookmarks\n * @method UI.importBookmarks\n * @param {object} bookmarks A dictionary with page indices as keys and the bookmark text as the values. ex: {\"0\":\"Bookmark 1\",\"2\":\"Bookmark 2\"}. Behaviour is undefined otherwise.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // load the user bookmarks data for id 'doc123'\n    fetch('/server/bookmarksHandler.js?documentId=doc123', {\n      method: 'GET'\n    }).then(function(response) {\n      if (response.status === 200) {\n        response.text().then(function(bookmarksString) {\n          // {\"0\":\"Bookmark 1\",\"2\":\"Bookmark 2\"}\n          const bookmarks = JSON.parse(bookmarksString);\n          instance.UI.importBookmarks(bookmarks);\n        });\n      }\n    });\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => bookmarks => {\n  store.dispatch(actions.setBookmarks(bookmarks));\n};\n","/**\n * Sets the fit mode of the viewer.\n * @method UI.setFitMode\n * @param {string} fitMode Fit mode of WebViewer.\n * @see UI.FitMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n    var FitMode = instance.UI.FitMode;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setFitMode(FitMode.FitWidth);\n    });\n  });\n */\n\nimport core from 'core';\nimport FitMode from 'constants/fitMode';\n\nexport default mode => {\n  const fitModeToFunctionMap = {\n    [FitMode.FitWidth]: core.fitToWidth,\n    [FitMode.FitPage]: core.fitToPage,\n    [FitMode.Zoom]: core.fitToZoom,\n  };\n  const fitFunction = fitModeToFunctionMap[mode];\n\n  if (!fitFunction) {\n    console.warn(`Unsupported fit mode: ${mode}`);\n    return;\n  }\n\n  fitFunction();\n};\n","/**\n * Customize header. Refer to <a href='https://www.pdftron.com/documentation/web/guides/customizing-header' target='_blank'>Customizing header</a> for details.\n * @method UI.setHeaderItems\n * @param {UI.headerCallback} headerCallback Callback function to perform different operations on the header.\n * @example\n// Adding save annotations button to the end of the top header\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      var myCustomButton = {\n        type: 'actionButton',\n        img: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\"/></svg>',\n        onClick: function() {\n\n        }\n      }\n\n      header.push(myCustomButton);\n    });\n  });\n * @example\n// Removing existing buttons from the top header\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      header.update([]);\n    });\n  });\n * @example\n// Appending logo to the 'Annotate' toolbar group and shifting existing buttons to the right\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      header.getHeader('toolbarGroup-Annotate').unshift({\n        type: 'customElement',\n        render: function() {\n          var logo = document.createElement('img');\n          logo.src = 'https://www.pdftron.com/downloads/logo.svg';\n          logo.style.width = '200px';\n          logo.style.marginLeft = '10px';\n          logo.style.cursor = 'pointer';\n          logo.onclick = function() {\n            window.open('https://www.pdftron.com', '_blank');\n          }\n          return logo;\n        }\n      }, {\n        type: 'spacer'\n      });\n    });\n  });\n * @example\n// Moving the line tool from the 'Shapes' toolbar group to the 'Annotate' toolbar group\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      header.getHeader('toolbarGroup-Annotate').push({ type: 'toolGroupButton', toolGroup: 'lineTools', dataElement: 'lineToolGroupButton', title: 'annotation.line' });\n      header.getHeader('toolbarGroup-Shapes').delete(6);\n    });\n  });\n */\n\n/**\n * Callback that gets passed to {@link UI.setHeaderItems setHeaderItems}.\n * @callback UI.headerCallback\n * @param {UI.Header} header Header instance with helper functions\n */\n\nimport actions from 'actions';\n\nexport default store => callback => {\n  const state = store.getState();\n  const headerGroups = Object.keys(state.viewer.headers);\n  const header = Object.create(Header).initialize(state.viewer, headerGroups);\n\n  callback(header);\n  headerGroups.forEach(headerGroup => {\n    store.dispatch(actions.setHeaderItems(headerGroup, [...header.headers[headerGroup]]));\n  });\n};\n\n/**\n * A class which contains header APIs.<br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> You must NOT instantiate this yourself. Access the header instance in {@link UI.setHeaderItems setHeaderItems} as follows:\n * @name Header\n * @memberof UI\n * @class\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      // instance of Header is passed to the callback\n    });\n  });\n */\nconst Header = {\n  initialize(viewerState) {\n    this.headers = viewerState.headers;\n    this.toolButtonObjects = viewerState.toolButtonObjects;\n    this.headerGroup = 'default';\n    this.index = -1;\n\n    return this;\n  },\n  /**\n   * Select a button from header to edit.\n   * @method UI.Header#get\n   * @param {string} dataElement data-element of the button.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#insertBefore insertBefore}, {@link UI.Header#insertAfter insertAfter} and {@link UI.Header#delete delete} to perform an operation on the button.\n   */\n  get(dataElement) {\n    if (this.index !== -1) {\n      // get(dataElement) has been called before so we need to reset this\n      const item = this.headers[this.headerGroup][this.index];\n      Object.keys(item).forEach(key => {\n        delete this[key];\n      });\n    }\n\n    this._setIndex(dataElement);\n\n    if (this.index === -1) {\n      console.warn(`${dataElement} does not exist in ${this.headerGroup} header`);\n    } else {\n      const item = this.headers[this.headerGroup][this.index];\n      Object.keys(item).forEach(key => {\n        this[key] = item[key];\n      });\n    }\n\n    return this;\n  },\n  /**\n   * Get all list of header items from a group selected from {@link UI.Header#getHeader getHeader}. By default, it returns the items from 'default' group.\n   * @method UI.Header#getItems\n   * @returns {Array.<object>} List of header item objects. You can edit it using normal array operations and update the whole header by passing it to {@link UI.Header#update update}.\n   */\n  getItems() {\n    return this.headers[this.headerGroup];\n  },\n  /**\n   * Select a header group to edit.\n   * @method UI.Header#getHeader\n   * @param {string} headerGroup Name of the header group. Possible options are 'default', 'small-mobile-more-buttons', 'toolbarGroup-View', 'toolbarGroup-Annotate', 'toolbarGroup-Shapes', 'toolbarGroup-Insert', 'toolbarGroup-Measure', and 'toolbarGroup-Edit'\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  getHeader(headerGroup) {\n    const headerGroups = Object.keys(this.headers);\n\n    if (headerGroups.includes(headerGroup)) {\n      this.headerGroup = headerGroup;\n      this._resetIndex();\n    } else {\n      console.warn(`Header must be one of: ${headerGroups.join(' or ')}.`);\n    }\n\n    return this;\n  },\n  /**\n   * Insert a button before the selected button from {@link UI.Header#get get}.\n   * @method UI.Header#insertBefore\n   * @param {object} obj A header object. See <a href='https://www.pdftron.com/documentation/web/guides/customizing-header#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  insertBefore(newItem) {\n    if (this.index === -1) {\n      console.warn('Please use .get(dataElement) first before using insertBefore');\n    } else {\n      this.headers[this.headerGroup].splice(this.index, 0, newItem);\n    }\n\n    return this;\n  },\n  /**\n   * Insert a button after the selected button from {@link UI.Header#get get}.\n   * @method UI.Header#insertAfter\n   * @param {object} obj A header object. See <a href='https://www.pdftron.com/documentation/web/guides/customizing-header#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  insertAfter(newItem) {\n    if (this.index === -1) {\n      console.warn('Please use .get(dataElement) first before using insertAfter');\n    } else {\n      this.index++;\n      this.headers[this.headerGroup].splice(this.index, 0, newItem);\n    }\n\n    return this;\n  },\n  /**\n   * Delete a button.\n   * @method UI.Header#delete\n   * @param {(number|string)} [id] You can either pass an index or `data-element` of the button to delete. If you already selected a button from {@link UI.Header#get get}, passing null would delete the selected button.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  delete(arg) {\n    let index;\n\n    if (typeof arg === 'number') {\n      index = arg;\n    } else if (typeof arg === 'string') {\n      if (this._getIndexOfElement(arg) === -1) {\n        console.warn(`${arg} does not exist in ${this.headerGroup} header`);\n      } else {\n        index = this._getIndexOfElement(arg);\n      }\n    } else if (typeof arg === 'undefined') {\n      if (this.index === -1) {\n        console.warn('Please use .get(dataElement) first before using delete()');\n      } else {\n        index = this.index;\n      }\n    } else if (Array.isArray(arg)) {\n      arg.forEach(arg => {\n        if (typeof arg === 'number' || typeof arg === 'string') {\n          this.delete(arg);\n        }\n      });\n    } else {\n      console.warn('Argument must be empty, a number, a string or an array');\n    }\n\n    if (index) {\n      this.headers[this.headerGroup].splice(index, 1);\n      this._resetIndex();\n    }\n  },\n  /**\n   * Removes the first button in the header.\n   * @method UI.Header#shift\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  shift() {\n    this.headers[this.headerGroup].shift();\n\n    return this;\n  },\n  /**\n   * Adds a button (or buttons) to the beginning of the header.\n   * @method UI.Header#unshift\n   * @param {object|Array.<object>} obj Either one or array of header objects. See <a href='https://www.pdftron.com/documentation/web/guides/customizing-header#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  unshift(...newItem) {\n    this.headers[this.headerGroup].unshift(...newItem);\n\n    return this;\n  },\n  /**\n   * Adds a button (or buttons) to the end of the header.\n   * @method UI.Header#push\n   * @param {object|Array.<object>} obj Either one or array of header objects. See <a href='https://www.pdftron.com/documentation/web/guides/customizing-header#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  push(...newItem) {\n    this.headers[this.headerGroup].push(...newItem);\n\n    return this;\n  },\n  /**\n   * Removes the last button in the header.\n   * @method UI.Header#pop\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  pop() {\n    this.headers[this.headerGroup].pop();\n\n    return this;\n  },\n  /**\n   * Updates the header with new list of header items.\n   * @method UI.Header#update\n   * @param {Array.<object>} headerObjects List of header objects to replace the exising header. You can use {@link UI.Header#getItems getItems} to refer to existing header objects.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  update(arg) {\n    if (Array.isArray(arg)) {\n      this._updateItems(arg);\n    } else {\n      console.warn('Argument must be an array');\n    }\n\n    return this;\n  },\n  _updateItems(items) {\n    this.headers[this.headerGroup] = items;\n\n    return this;\n  },\n  _setIndex(dataElement) {\n    this.index = this._getIndexOfElement(dataElement);\n  },\n  _getIndexOfElement(dataElement) {\n    return this.headers[this.headerGroup].findIndex(item => {\n      let dataElementOfItem;\n\n      if (item.type === 'toolButton') {\n        dataElementOfItem = this.toolButtonObjects[item.toolName].dataElement;\n      } else {\n        dataElementOfItem = item.dataElement;\n      }\n\n      return dataElementOfItem === dataElement;\n    });\n  },\n  _resetIndex() {\n    this.index = -1;\n  },\n};\n","/**\n * Sets the color palette that will be used as a tool button's icon color.\n * @method UI.setIconColor\n * @param {string} toolName Name of the tool, either from <a href='https://www.pdftron.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @param {string} colorPalette The palette which will be used as a tool button's icon color. One of 'text', 'border' and 'fill'.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // sets the color in fill palette to be used as freetext tool button's icon color\n    // by default freetext tool button will use the color in text palette as its icon color\n    instance.UI.setIconColor('AnnotationCreateFreeText', 'fill')\n  });\n */\n\nimport actions from 'actions';\nimport { getDataWithKey, mapToolNameToKey } from 'constants/map';\nimport mapPaletteToAnnotationColorProperty from 'constants/mapPaletteToAnnotationColorProperty';\nimport mapAnnotationColorPropertyToPalette from 'constants/mapAnnotationColorPropertyToPalette';\n\nexport default store => (toolName, colorPalette) => {\n  const availablePalettes = getDataWithKey(mapToolNameToKey(toolName)).availablePalettes;\n  const property = mapPaletteToAnnotationColorProperty[colorPalette];\n  if (availablePalettes.includes(property)) {\n    store.dispatch(actions.setIconColor(mapToolNameToKey(toolName), property));\n  } else {\n    console.warn(`${toolName} does not have ${colorPalette} color, available colors are: ${availablePalettes.map(palette => mapAnnotationColorPropertyToPalette[palette]).join(', ')} `);\n  }\n};","/**\n * Add/Edit translations data for a specific language\n * @method UI.setTranslations\n * @param {string} language The language code for which you want to add/edit translation data\n * @param {object} translationObject A key/value object with the new/updated translations\n * @param {string} translationObject.key A key value for the new/updated translation.\n * Refer to the lib/ui/i18n folder to find the existing keys in the translation files\n * @param {string} translationObject.value A value of the new/updated translation\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setTranslations('es',\n    {\n      'option.colorPalette.colorLabel': 'Etiqueta de color', //updates a pre-existing translation data\n      'action.newButton': 'Nuevo botón' // adds a new translation data\n    });\n  });\n */\n\nimport i18next from 'i18next';\n\nexport default (language, translationObject) => {\n  i18next.on('loaded', () => {\n    i18next.addResources(\n      language,\n      'translation',\n      translationObject\n    );\n  });\n\n  i18next.reloadResources([language]);\n};","/**\n * Sets the layout mode of the viewer.\n * @method UI.setLayoutMode\n * @param {string} layoutMode Layout mode of WebViewerInstance UI.\n * @see UI.LayoutMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n    const LayoutMode = instance.UI.LayoutMode;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setLayoutMode(LayoutMode.FacingContinuous);\n    });\n  });\n */\n\nimport core from 'core';\n\nexport default mode => {\n  core.setDisplayMode(mode);\n};\n","/**\n * Sets the maximum zoom level allowed by the UI. Default is 9999%.\n * @method UI.setMaxZoomLevel\n * @param {(string|number)} zoomLevel Zoom level in either number or percentage.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMaxZoomLevel('150%'); // or setMaxZoomLevel(1.5)\n  });\n */\n\nimport setMaxZoomLevel from 'helpers/setMaxZoomLevel';\n\nexport default store => setMaxZoomLevel(store.dispatch);\n","/**\n * Sets the minimum zoom level allowed by the UI. Default is 5%.\n * @method UI.setMinZoomLevel\n * @param {(string|number)} zoomLevel Zoom level in either number or percentage.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMinZoomLevel('10%'); // or setMinZoomLevel(0.1)\n  });\n */\n\nimport actions from 'actions';\nimport zoomFactors, { defaultZoomList } from 'constants/zoomFactors';\nimport getActualZoomLevel from 'helpers/getActualZoomLevel';\n\nexport default store => zoomLevel => {\n  const minZoom = getActualZoomLevel(zoomLevel);\n\n  if (minZoom) {\n    const maxZoom = zoomFactors.getMaxZoomLevel();\n    const zoomList = defaultZoomList.filter(zoom => zoom <= maxZoom && zoom >= minZoom);\n    zoomFactors.setMinZoomLevel(minZoom);\n    store.dispatch(actions.setZoomList(zoomList));\n    window.Core.Tools.MarqueeZoomTool.setMinZoomLevel(minZoom);\n  } else {\n    console.warn('Type of the argument for setMinZoomLevel must be either string or number');\n  }\n};","/**\n * Sets the format for displaying the date when a note is create/modified. A list of formats can be found {@link https://github.com/iamkun/dayjs/blob/master/docs/en/API-reference.md#format-formatstringwithtokens-string dayjs API}.\n * @method UI.setNoteDateFormat\n * @param {string} format The format of date to display\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setNoteDateFormat('DD.MM.YYYY HH:MM');\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => noteDateFormat => {\n  store.dispatch(actions.setNoteDateFormat(noteDateFormat));\n};\n","/**\n * Sets the format for displaying the date when a note is printed. A list of formats can be found {@link https://github.com/iamkun/dayjs/blob/master/docs/en/API-reference.md#format-formatstringwithtokens-string dayjs API}.\n * @method UI.setPrintedNoteDateFormat\n * @param {string} format The format of date to display\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPrintedNoteDateFormat('DD.MM.YYYY HH:MM');\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => noteDateFormat => {\n  store.dispatch(actions.setPrintedNoteDateFormat(noteDateFormat));\n};\n","import addSortStrategy from './addSortStrategy';\n\nexport default store => newStrategy => {\n  addSortStrategy(store)(newStrategy);\n};\n","/**\n * Sets page labels that will be displayed in UI. You may want to use this API if the document's page labels start with characters/numbers other than 1.\n * @method UI.setPageLabels\n * @param {Array.<string>} pageLabels Page labels that will be displayed in UI.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setPageLabels(['i', 'ii', 'iii', '4', '5']); // assume a document has 5 pages\n    });\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => pageLabels => {\n  store.dispatch(actions.setPageLabels(pageLabels));\n};","/**\n * Sets the print quality. Higher values are higher quality but takes longer to complete and use more memory. The viewer's default quality is 1.\n * @method UI.setPrintQuality\n * @param {number} quality The quality of the document to print. Must be a positive number.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPrintQuality(2);\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => quality => {\n  if (quality <= 0) {\n    throw Error('Value must be a positive number');\n  }\n  store.dispatch(actions.setPrintQuality(quality));\n};\n","/**\n * Sets the default print options.\n * @method UI.setDefaultPrintOptions\n * @param {object} options - The default print options of the document to print. Must be an object.\n * @param {boolean} [options.includeComments] - Whether or not will print the documents with the comments\n * @param {boolean} [options.includeAnnotations] - Whether or not will print the documents with the annotations\n * @param {boolean} [options.maintainPageOrientation] - Whether or not will maintain the pages orientation as set in the webviewer\n *\n * @example\nWebViewer(...) .then(function(instance) {\n  instance.UI.setDefaultPrintOptions({ includeComments: true, includeAnnotations: true });\n});\n */\n\nimport actions from 'actions';\n\nexport default store => options => {\n  if (typeof options !== 'object' || options === undefined || Object.keys(options).filter(option => option !== 'includeComments' && option !== 'includeAnnotations' && option !== 'maintainPageOrientation').length !== 0 || Object.values(options).filter(val => val !== true && val !== false).length !== 0) {\n    throw Error('Invalid options provided');\n  } else {\n    store.dispatch(actions.setDefaultPrintOptions(options));\n  }\n};","/**\n * Sets the currently selected tab of a Tabs component.\n * @method UI.setSelectedTab\n * @param {string} id The id of the Tabs component to set.\n * @param {string} dataElement The 'dataElement' attribute of the TabPanel component to select.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Set the currently selected tab of 'signatureModal' to be the 'Type' panel.\n    instance.UI.setSelectedTab('signatureModal', 'textSignaturePanelButton'); //'inkSignaturePanelButton', 'imageSignaturePanelButton'\n    // Set the currently selected tab of 'linkModal' to be the 'Page' panel.\n    instance.UI.setSelectedTab('linkModal', 'PageNumberPanelButton'); //'URLPanelButton'\n    // Set the currently selected tab of 'rubberStampTab' to be the 'Custom' panel.\n    instance.UI.setSelectedTab('rubberStampTab', 'customStampPanelButton'); //'standardStampPanelButton'\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => (id, dataElement) => {\n  store.dispatch(actions.setSelectedTab(id, dataElement));\n};\n","import actions from 'actions';\n\nexport default store => value => {\n  if (value) {\n    store.dispatch(actions.openElement('leftPanel'));\n  } else {\n    store.dispatch(actions.closeElement('leftPanel'));\n  }\n};","import actions from 'actions';\n\nexport default store => sortStrategy => {\n  store.dispatch(actions.setSortNotesBy(sortStrategy));\n};","/**\n * Sets a sorting algorithm for the Notes Panel.\n * @method UI.setNotesPanelSortStrategy\n * @param {string} sortStrategy Name of the sort strategy algorithm. Check [UI.NotesPanelSortStrategy]{@link UI.NotesPanelSortStrategy} for the options or use your own strategy.\n * @see UI.NotesPanelSortStrategy\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const sortStrategy = instance.UI.NotesPanelSortStrategy;\n    instance.UI.setNotesPanelSortStrategy(sortStrategy.TYPE); // sort notes by type\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => sortStrategy => {\n  if (!sortStrategy) {\n    throw new Error('Unsupported sort strategy.');\n  }\n\n  store.dispatch(actions.setNotesPanelSortStrategy(sortStrategy));\n};","/**\n * Sets the swipe orientation between pages of WebViewer UI on mobile devices. Default is horizontal.\n * @method UI.setSwipeOrientation\n * @param {string} swipeOrientation The swipe orientation to navigate between pages. Available orientations are: horizontal, vertical and both.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setSwipeOrientation('vertical'); // set the swipe orientation to vertical.\n  });\n */\nimport TouchEventManager from 'helpers/TouchEventManager';\n\nexport default swipeOrientation => {\n  if (swipeOrientation === 'both') {\n    TouchEventManager.allowVerticalSwipe = true;\n    TouchEventManager.allowHorizontalSwipe = true;\n  } else if (swipeOrientation === 'vertical') {\n    TouchEventManager.allowVerticalSwipe = true;\n    TouchEventManager.allowHorizontalSwipe = false;\n  } else if (swipeOrientation === 'horizontal') {\n    TouchEventManager.allowVerticalSwipe = false;\n    TouchEventManager.allowHorizontalSwipe = true;\n  } else {\n    console.warn(`${swipeOrientation} is not a valid orientation. Try 'vertical,' 'horizontal,' or 'both.`);\n  }\n};","// MIT License\n\n// Copyright (c) 2017 Nikita Gusakov\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport postcss from 'postcss';\n\nconst isInsideRoot = rule => {\n  return (\n    rule.selectors.length !== 1 ||\n    rule.selectors[0] !== ':root' ||\n    rule.parent.type !== 'root'\n  );\n};\n\nconst isVariableDeclaration = decl => {\n  return Boolean(decl.value) && decl.prop.startsWith('--');\n};\n\nconst parse = (css, options) => {\n  const root = postcss.parse(css, {\n    from: options.from,\n    parser: options.parser\n  });\n\n  const variables = {};\n  root.walkRules(rule => {\n    if (isInsideRoot(rule)) {\n      return;\n    }\n\n    rule.each(decl => {\n      if (isVariableDeclaration(decl)) {\n        const name = decl.prop.slice(2);\n        variables[name] = decl.value;\n      }\n    });\n  });\n\n  return variables;\n};\n\nexport {\n  parse,\n};\n","/*!\n * css-vars-ponyfill\n * v2.4.7\n * https://jhildenbiddle.github.io/css-vars-ponyfill/\n * (c) 2018-2021 John Hildenbiddle <http://hildenbiddle.com>\n * MIT license\n */\nfunction _extends() {\n    _extends = Object.assign || function(target) {\n        for (var i = 1; i < arguments.length; i++) {\n            var source = arguments[i];\n            for (var key in source) {\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\n                    target[key] = source[key];\n                }\n            }\n        }\n        return target;\n    };\n    return _extends.apply(this, arguments);\n}\n\n/*!\n * get-css-data\n * v2.0.2\n * https://github.com/jhildenbiddle/get-css-data\n * (c) 2018-2021 John Hildenbiddle <http://hildenbiddle.com>\n * MIT license\n */ function getUrls(urls) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var settings = {\n        mimeType: options.mimeType || null,\n        onBeforeSend: options.onBeforeSend || Function.prototype,\n        onSuccess: options.onSuccess || Function.prototype,\n        onError: options.onError || Function.prototype,\n        onComplete: options.onComplete || Function.prototype\n    };\n    var urlArray = Array.isArray(urls) ? urls : [ urls ];\n    var urlQueue = Array.apply(null, Array(urlArray.length)).map((function(x) {\n        return null;\n    }));\n    function isValidCss(text) {\n        var isString = typeof text === \"string\";\n        var isHTML = isString && text.trim().charAt(0) === \"<\";\n        return isString && !isHTML;\n    }\n    function onError(xhr, urlIndex) {\n        settings.onError(xhr, urlArray[urlIndex], urlIndex);\n    }\n    function onSuccess(responseText, urlIndex) {\n        var returnVal = settings.onSuccess(responseText, urlArray[urlIndex], urlIndex);\n        responseText = returnVal === false ? \"\" : returnVal || responseText;\n        urlQueue[urlIndex] = responseText;\n        if (urlQueue.indexOf(null) === -1) {\n            settings.onComplete(urlQueue);\n        }\n    }\n    var parser = document.createElement(\"a\");\n    urlArray.forEach((function(url, i) {\n        parser.setAttribute(\"href\", url);\n        parser.href = String(parser.href);\n        var isIElte9 = Boolean(document.all && !window.atob);\n        var isIElte9CORS = isIElte9 && parser.host.split(\":\")[0] !== location.host.split(\":\")[0];\n        if (isIElte9CORS) {\n            var isSameProtocol = parser.protocol === location.protocol;\n            if (isSameProtocol) {\n                var xdr = new XDomainRequest;\n                xdr.open(\"GET\", url);\n                xdr.timeout = 0;\n                xdr.onprogress = Function.prototype;\n                xdr.ontimeout = Function.prototype;\n                xdr.onload = function() {\n                    var text = xdr.responseText;\n                    if (isValidCss(text)) {\n                        onSuccess(text, i);\n                    } else {\n                        onError(xdr, i);\n                    }\n                };\n                xdr.onerror = function(err) {\n                    onError(xdr, i);\n                };\n                setTimeout((function() {\n                    xdr.send();\n                }), 0);\n            } else {\n                console.warn(\"Internet Explorer 9 Cross-Origin (CORS) requests must use the same protocol (\".concat(url, \")\"));\n                onError(null, i);\n            }\n        } else {\n            var xhr = new XMLHttpRequest;\n            xhr.open(\"GET\", url);\n            if (settings.mimeType && xhr.overrideMimeType) {\n                xhr.overrideMimeType(settings.mimeType);\n            }\n            settings.onBeforeSend(xhr, url, i);\n            xhr.onreadystatechange = function() {\n                if (xhr.readyState === 4) {\n                    var text = xhr.responseText;\n                    if (xhr.status < 400 && isValidCss(text)) {\n                        onSuccess(text, i);\n                    } else if (xhr.status === 0 && isValidCss(text)) {\n                        onSuccess(text, i);\n                    } else {\n                        onError(xhr, i);\n                    }\n                }\n            };\n            xhr.send();\n        }\n    }));\n}\n\n/**\n * Gets CSS data from <style> and <link> nodes (including @imports), then\n * returns data in order processed by DOM. Allows specifying nodes to\n * include/exclude and filtering CSS data using RegEx.\n *\n * @preserve\n * @param {object}   [options] The options object\n * @param {object}   [options.rootElement=document] Root element to traverse for\n *                   <link> and <style> nodes.\n * @param {string}   [options.include] CSS selector matching <link> and <style>\n *                   nodes to include\n * @param {string}   [options.exclude] CSS selector matching <link> and <style>\n *                   nodes to exclude\n * @param {object}   [options.filter] Regular expression used to filter node CSS\n *                   data. Each block of CSS data is tested against the filter,\n *                   and only matching data is included.\n * @param {boolean}  [options.skipDisabled=true] Determines if disabled\n *                   stylesheets will be skipped while collecting CSS data.\n * @param {boolean}  [options.useCSSOM=false] Determines if CSS data will be\n *                   collected from a stylesheet's runtime values instead of its\n *                   text content. This is required to get accurate CSS data\n *                   when a stylesheet has been modified using the deleteRule()\n *                   or insertRule() methods because these modifications will\n *                   not be reflected in the stylesheet's text content.\n * @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes\n *                   1) the XHR object, 2) source node reference, and 3) the\n *                   source URL as arguments.\n * @param {function} [options.onSuccess] Callback on each CSS node read. Passes\n *                   1) CSS text, 2) source node reference, and 3) the source\n *                   URL as arguments.\n * @param {function} [options.onError] Callback on each error. Passes 1) the XHR\n *                   object for inspection, 2) soure node reference, and 3) the\n *                   source URL that failed (either a <link> href or an @import)\n *                   as arguments\n * @param {function} [options.onComplete] Callback after all nodes have been\n *                   processed. Passes 1) concatenated CSS text, 2) an array of\n *                   CSS text in DOM order, and 3) an array of nodes in DOM\n *                   order as arguments.\n *\n * @example\n *\n *   getCssData({\n *     rootElement : document,\n *     include     : 'style,link[rel=\"stylesheet\"]',\n *     exclude     : '[href=\"skip.css\"]',\n *     filter      : /red/,\n *     skipDisabled: true,\n *     useCSSOM    : false,\n *     onBeforeSend(xhr, node, url) {\n *       // ...\n *     }\n *     onSuccess(cssText, node, url) {\n *       // ...\n *     }\n *     onError(xhr, node, url) {\n *       // ...\n *     },\n *     onComplete(cssText, cssArray, nodeArray) {\n *       // ...\n *     }\n *   });\n */ function getCssData(options) {\n    var regex = {\n        cssComments: /\\/\\*[\\s\\S]+?\\*\\//g,\n        cssImports: /(?:@import\\s*)(?:url\\(\\s*)?(?:['\"])([^'\"]*)(?:['\"])(?:\\s*\\))?(?:[^;]*;)/g\n    };\n    var settings = {\n        rootElement: options.rootElement || document,\n        include: options.include || 'style,link[rel=\"stylesheet\"]',\n        exclude: options.exclude || null,\n        filter: options.filter || null,\n        skipDisabled: options.skipDisabled !== false,\n        useCSSOM: options.useCSSOM || false,\n        onBeforeSend: options.onBeforeSend || Function.prototype,\n        onSuccess: options.onSuccess || Function.prototype,\n        onError: options.onError || Function.prototype,\n        onComplete: options.onComplete || Function.prototype\n    };\n    var sourceNodes = Array.apply(null, settings.rootElement.querySelectorAll(settings.include)).filter((function(node) {\n        return !matchesSelector(node, settings.exclude);\n    }));\n    var cssArray = Array.apply(null, Array(sourceNodes.length)).map((function(x) {\n        return null;\n    }));\n    function handleComplete() {\n        var isComplete = cssArray.indexOf(null) === -1;\n        if (isComplete) {\n            cssArray.reduce((function(skipIndices, value, i) {\n                if (value === \"\") {\n                    skipIndices.push(i);\n                }\n                return skipIndices;\n            }), []).reverse().forEach((function(skipIndex) {\n                return [ sourceNodes, cssArray ].forEach((function(arr) {\n                    return arr.splice(skipIndex, 1);\n                }));\n            }));\n            var cssText = cssArray.join(\"\");\n            settings.onComplete(cssText, cssArray, sourceNodes);\n        }\n    }\n    function handleSuccess(cssText, cssIndex, node, sourceUrl) {\n        var returnVal = settings.onSuccess(cssText, node, sourceUrl);\n        cssText = returnVal !== undefined && Boolean(returnVal) === false ? \"\" : returnVal || cssText;\n        resolveImports(cssText, node, sourceUrl, (function(resolvedCssText, errorData) {\n            if (cssArray[cssIndex] === null) {\n                errorData.forEach((function(data) {\n                    return settings.onError(data.xhr, node, data.url);\n                }));\n                if (!settings.filter || settings.filter.test(resolvedCssText)) {\n                    cssArray[cssIndex] = resolvedCssText;\n                } else {\n                    cssArray[cssIndex] = \"\";\n                }\n                handleComplete();\n            }\n        }));\n    }\n    function parseImportData(cssText, baseUrl) {\n        var ignoreRules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n        var importData = {};\n        importData.rules = (cssText.replace(regex.cssComments, \"\").match(regex.cssImports) || []).filter((function(rule) {\n            return ignoreRules.indexOf(rule) === -1;\n        }));\n        importData.urls = importData.rules.map((function(rule) {\n            return rule.replace(regex.cssImports, \"$1\");\n        }));\n        importData.absoluteUrls = importData.urls.map((function(url) {\n            return getFullUrl$1(url, baseUrl);\n        }));\n        importData.absoluteRules = importData.rules.map((function(rule, i) {\n            var oldUrl = importData.urls[i];\n            var newUrl = getFullUrl$1(importData.absoluteUrls[i], baseUrl);\n            return rule.replace(oldUrl, newUrl);\n        }));\n        return importData;\n    }\n    function resolveImports(cssText, node, baseUrl, callbackFn) {\n        var __errorData = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n        var __errorRules = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n        var importData = parseImportData(cssText, baseUrl, __errorRules);\n        if (importData.rules.length) {\n            getUrls(importData.absoluteUrls, {\n                onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n                    settings.onBeforeSend(xhr, node, url);\n                },\n                onSuccess: function onSuccess(cssText, url, urlIndex) {\n                    var returnVal = settings.onSuccess(cssText, node, url);\n                    cssText = returnVal === false ? \"\" : returnVal || cssText;\n                    var responseImportData = parseImportData(cssText, url, __errorRules);\n                    responseImportData.rules.forEach((function(rule, i) {\n                        cssText = cssText.replace(rule, responseImportData.absoluteRules[i]);\n                    }));\n                    return cssText;\n                },\n                onError: function onError(xhr, url, urlIndex) {\n                    __errorData.push({\n                        xhr: xhr,\n                        url: url\n                    });\n                    __errorRules.push(importData.rules[urlIndex]);\n                    resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n                },\n                onComplete: function onComplete(responseArray) {\n                    responseArray.forEach((function(importText, i) {\n                        cssText = cssText.replace(importData.rules[i], importText);\n                    }));\n                    resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n                }\n            });\n        } else {\n            callbackFn(cssText, __errorData);\n        }\n    }\n    if (sourceNodes.length) {\n        sourceNodes.forEach((function(node, i) {\n            var linkHref = node.getAttribute(\"href\");\n            var linkRel = node.getAttribute(\"rel\");\n            var isLink = node.nodeName.toLowerCase() === \"link\" && linkHref && linkRel && linkRel.toLowerCase().indexOf(\"stylesheet\") !== -1;\n            var isSkip = settings.skipDisabled === false ? false : node.disabled;\n            var isStyle = node.nodeName.toLowerCase() === \"style\";\n            if (isLink && !isSkip) {\n                getUrls(linkHref, {\n                    mimeType: \"text/css\",\n                    onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n                        settings.onBeforeSend(xhr, node, url);\n                    },\n                    onSuccess: function onSuccess(cssText, url, urlIndex) {\n                        var sourceUrl = getFullUrl$1(linkHref);\n                        handleSuccess(cssText, i, node, sourceUrl);\n                    },\n                    onError: function onError(xhr, url, urlIndex) {\n                        cssArray[i] = \"\";\n                        settings.onError(xhr, node, url);\n                        handleComplete();\n                    }\n                });\n            } else if (isStyle && !isSkip) {\n                var cssText = node.textContent;\n                if (settings.useCSSOM) {\n                    cssText = Array.apply(null, node.sheet.cssRules).map((function(rule) {\n                        return rule.cssText;\n                    })).join(\"\");\n                }\n                handleSuccess(cssText, i, node, location.href);\n            } else {\n                cssArray[i] = \"\";\n                handleComplete();\n            }\n        }));\n    } else {\n        settings.onComplete(\"\", []);\n    }\n}\n\nfunction getFullUrl$1(url, base) {\n    var d = document.implementation.createHTMLDocument(\"\");\n    var b = d.createElement(\"base\");\n    var a = d.createElement(\"a\");\n    d.head.appendChild(b);\n    d.body.appendChild(a);\n    b.href = base || document.baseURI || (document.querySelector(\"base\") || {}).href || location.href;\n    a.href = url;\n    return a.href;\n}\n\nfunction matchesSelector(elm, selector) {\n    var matches = elm.matches || elm.matchesSelector || elm.webkitMatchesSelector || elm.mozMatchesSelector || elm.msMatchesSelector || elm.oMatchesSelector;\n    return matches.call(elm, selector);\n}\n\nvar balancedMatch = balanced;\n\nfunction balanced(a, b, str) {\n    if (a instanceof RegExp) a = maybeMatch(a, str);\n    if (b instanceof RegExp) b = maybeMatch(b, str);\n    var r = range(a, b, str);\n    return r && {\n        start: r[0],\n        end: r[1],\n        pre: str.slice(0, r[0]),\n        body: str.slice(r[0] + a.length, r[1]),\n        post: str.slice(r[1] + b.length)\n    };\n}\n\nfunction maybeMatch(reg, str) {\n    var m = str.match(reg);\n    return m ? m[0] : null;\n}\n\nbalanced.range = range;\n\nfunction range(a, b, str) {\n    var begs, beg, left, right, result;\n    var ai = str.indexOf(a);\n    var bi = str.indexOf(b, ai + 1);\n    var i = ai;\n    if (ai >= 0 && bi > 0) {\n        if (a === b) {\n            return [ ai, bi ];\n        }\n        begs = [];\n        left = str.length;\n        while (i >= 0 && !result) {\n            if (i == ai) {\n                begs.push(i);\n                ai = str.indexOf(a, i + 1);\n            } else if (begs.length == 1) {\n                result = [ begs.pop(), bi ];\n            } else {\n                beg = begs.pop();\n                if (beg < left) {\n                    left = beg;\n                    right = bi;\n                }\n                bi = str.indexOf(b, i + 1);\n            }\n            i = ai < bi && ai >= 0 ? ai : bi;\n        }\n        if (begs.length) {\n            result = [ left, right ];\n        }\n    }\n    return result;\n}\n\nfunction parseCss(css) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var defaults = {\n        preserveStatic: true,\n        removeComments: false\n    };\n    var settings = _extends({}, defaults, options);\n    var errors = [];\n    function error(msg) {\n        throw new Error(\"CSS parse error: \".concat(msg));\n    }\n    function match(re) {\n        var m = re.exec(css);\n        if (m) {\n            css = css.slice(m[0].length);\n            return m;\n        }\n    }\n    function open() {\n        return match(/^{\\s*/);\n    }\n    function close() {\n        return match(/^}/);\n    }\n    function whitespace() {\n        match(/^\\s*/);\n    }\n    function comment() {\n        whitespace();\n        if (css[0] !== \"/\" || css[1] !== \"*\") {\n            return;\n        }\n        var i = 2;\n        while (css[i] && (css[i] !== \"*\" || css[i + 1] !== \"/\")) {\n            i++;\n        }\n        if (!css[i]) {\n            return error(\"end of comment is missing\");\n        }\n        var str = css.slice(2, i);\n        css = css.slice(i + 2);\n        return {\n            type: \"comment\",\n            comment: str\n        };\n    }\n    function comments() {\n        var cmnts = [];\n        var c;\n        while (c = comment()) {\n            cmnts.push(c);\n        }\n        return settings.removeComments ? [] : cmnts;\n    }\n    function selector() {\n        whitespace();\n        while (css[0] === \"}\") {\n            error(\"extra closing bracket\");\n        }\n        var m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\n        if (m) {\n            var _selector = m[0].trim();\n            var selectorItems;\n            var hasComment = /\\/\\*/.test(_selector);\n            if (hasComment) {\n                _selector = _selector.replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, \"\");\n            }\n            var hasCommaInQuotes = /[\"']\\w*,\\w*[\"']/.test(_selector);\n            if (hasCommaInQuotes) {\n                _selector = _selector.replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (function(m) {\n                    return m.replace(/,/g, \"‌\");\n                }));\n            }\n            var hasMultipleSelectors = /,/.test(_selector);\n            if (hasMultipleSelectors) {\n                selectorItems = _selector.split(/\\s*(?![^(]*\\)),\\s*/);\n            } else {\n                selectorItems = [ _selector ];\n            }\n            if (hasCommaInQuotes) {\n                selectorItems = selectorItems.map((function(s) {\n                    return s.replace(/\\u200C/g, \",\");\n                }));\n            }\n            return selectorItems;\n        }\n    }\n    function declaration() {\n        if (css[0] === \"@\") {\n            return at_rule();\n        }\n        match(/^([;\\s]*)+/);\n        var comment_regexp = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n        var prop = match(/^(\\*?[-#/*\\\\\\w.]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n        if (!prop) {\n            return;\n        }\n        prop = prop[0].trim();\n        if (!match(/^:\\s*/)) {\n            return error(\"property missing ':'\");\n        }\n        var val = match(/^((?:\\/\\*.*?\\*\\/|'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\((\\s*'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|[^)]*?)\\s*\\)|[^};])+)/);\n        var ret = {\n            type: \"declaration\",\n            property: prop.replace(comment_regexp, \"\"),\n            value: val ? val[0].replace(comment_regexp, \"\").trim() : \"\"\n        };\n        match(/^[;\\s]*/);\n        return ret;\n    }\n    function declarations() {\n        if (!open()) {\n            return error(\"missing '{'\");\n        }\n        var d;\n        var decls = comments();\n        while (d = declaration()) {\n            decls.push(d);\n            decls = decls.concat(comments());\n        }\n        if (!close()) {\n            return error(\"missing '}'\");\n        }\n        return decls;\n    }\n    function keyframe() {\n        whitespace();\n        var vals = [];\n        var m;\n        while (m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/)) {\n            vals.push(m[1]);\n            match(/^,\\s*/);\n        }\n        if (vals.length) {\n            return {\n                type: \"keyframe\",\n                values: vals,\n                declarations: declarations()\n            };\n        }\n    }\n    function at_keyframes() {\n        var m = match(/^@([-\\w]+)?keyframes\\s*/);\n        if (!m) {\n            return;\n        }\n        var vendor = m[1];\n        m = match(/^([-\\w]+)\\s*/);\n        if (!m) {\n            return error(\"@keyframes missing name\");\n        }\n        var name = m[1];\n        if (!open()) {\n            return error(\"@keyframes missing '{'\");\n        }\n        var frame;\n        var frames = comments();\n        while (frame = keyframe()) {\n            frames.push(frame);\n            frames = frames.concat(comments());\n        }\n        if (!close()) {\n            return error(\"@keyframes missing '}'\");\n        }\n        return {\n            type: \"keyframes\",\n            name: name,\n            vendor: vendor,\n            keyframes: frames\n        };\n    }\n    function at_page() {\n        var m = match(/^@page */);\n        if (m) {\n            var sel = selector() || [];\n            return {\n                type: \"page\",\n                selectors: sel,\n                declarations: declarations()\n            };\n        }\n    }\n    function at_page_margin_box() {\n        var m = match(/@(top|bottom|left|right)-(left|center|right|top|middle|bottom)-?(corner)?\\s*/);\n        if (m) {\n            var name = \"\".concat(m[1], \"-\").concat(m[2]) + (m[3] ? \"-\".concat(m[3]) : \"\");\n            return {\n                type: \"page-margin-box\",\n                name: name,\n                declarations: declarations()\n            };\n        }\n    }\n    function at_fontface() {\n        var m = match(/^@font-face\\s*/);\n        if (m) {\n            return {\n                type: \"font-face\",\n                declarations: declarations()\n            };\n        }\n    }\n    function at_supports() {\n        var m = match(/^@supports *([^{]+)/);\n        if (m) {\n            return {\n                type: \"supports\",\n                supports: m[1].trim(),\n                rules: rules()\n            };\n        }\n    }\n    function at_host() {\n        var m = match(/^@host\\s*/);\n        if (m) {\n            return {\n                type: \"host\",\n                rules: rules()\n            };\n        }\n    }\n    function at_media() {\n        var m = match(/^@media([^{]+)*/);\n        if (m) {\n            return {\n                type: \"media\",\n                media: (m[1] || \"\").trim(),\n                rules: rules()\n            };\n        }\n    }\n    function at_custom_m() {\n        var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n        if (m) {\n            return {\n                type: \"custom-media\",\n                name: m[1].trim(),\n                media: m[2].trim()\n            };\n        }\n    }\n    function at_document() {\n        var m = match(/^@([-\\w]+)?document *([^{]+)/);\n        if (m) {\n            return {\n                type: \"document\",\n                document: m[2].trim(),\n                vendor: m[1] ? m[1].trim() : null,\n                rules: rules()\n            };\n        }\n    }\n    function at_x() {\n        var m = match(/^@(import|charset|namespace)\\s*([^;]+);/);\n        if (m) {\n            return {\n                type: m[1],\n                name: m[2].trim()\n            };\n        }\n    }\n    function at_rule() {\n        whitespace();\n        if (css[0] === \"@\") {\n            var ret = at_x() || at_fontface() || at_media() || at_keyframes() || at_supports() || at_document() || at_custom_m() || at_host() || at_page() || at_page_margin_box();\n            if (ret && !settings.preserveStatic) {\n                var hasVarFunc = false;\n                if (ret.declarations) {\n                    hasVarFunc = ret.declarations.some((function(decl) {\n                        return /var\\(/.test(decl.value);\n                    }));\n                } else {\n                    var arr = ret.keyframes || ret.rules || [];\n                    hasVarFunc = arr.some((function(obj) {\n                        return (obj.declarations || []).some((function(decl) {\n                            return /var\\(/.test(decl.value);\n                        }));\n                    }));\n                }\n                return hasVarFunc ? ret : {};\n            }\n            return ret;\n        }\n    }\n    function rule() {\n        if (!settings.preserveStatic) {\n            var balancedMatch$1 = balancedMatch(\"{\", \"}\", css);\n            if (balancedMatch$1) {\n                var hasVarDecl = /:(?:root|host)(?![.:#(])/.test(balancedMatch$1.pre) && /--\\S*\\s*:/.test(balancedMatch$1.body);\n                var hasVarFunc = /var\\(/.test(balancedMatch$1.body);\n                if (!hasVarDecl && !hasVarFunc) {\n                    css = css.slice(balancedMatch$1.end + 1);\n                    return {};\n                }\n            }\n        }\n        var sel = selector() || [];\n        var decls = settings.preserveStatic ? declarations() : declarations().filter((function(decl) {\n            var hasVarDecl = sel.some((function(s) {\n                return /:(?:root|host)(?![.:#(])/.test(s);\n            })) && /^--\\S/.test(decl.property);\n            var hasVarFunc = /var\\(/.test(decl.value);\n            return hasVarDecl || hasVarFunc;\n        }));\n        if (!sel.length) {\n            error(\"selector missing\");\n        }\n        return {\n            type: \"rule\",\n            selectors: sel,\n            declarations: decls\n        };\n    }\n    function rules(core) {\n        if (!core && !open()) {\n            return error(\"missing '{'\");\n        }\n        var node;\n        var rules = comments();\n        while (css.length && (core || css[0] !== \"}\") && (node = at_rule() || rule())) {\n            if (node.type) {\n                rules.push(node);\n            }\n            rules = rules.concat(comments());\n        }\n        if (!core && !close()) {\n            return error(\"missing '}'\");\n        }\n        return rules;\n    }\n    return {\n        type: \"stylesheet\",\n        stylesheet: {\n            rules: rules(true),\n            errors: errors\n        }\n    };\n}\n\nfunction parseVars(cssData) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var defaults = {\n        parseHost: false,\n        store: {},\n        onWarning: function onWarning() {}\n    };\n    var settings = _extends({}, defaults, options);\n    var reVarDeclSelectors = new RegExp(\":\".concat(settings.parseHost ? \"host\" : \"root\", \"$\"));\n    if (typeof cssData === \"string\") {\n        cssData = parseCss(cssData, settings);\n    }\n    cssData.stylesheet.rules.forEach((function(rule) {\n        if (rule.type !== \"rule\" || !rule.selectors.some((function(s) {\n            return reVarDeclSelectors.test(s);\n        }))) {\n            return;\n        }\n        rule.declarations.forEach((function(decl, i) {\n            var prop = decl.property;\n            var value = decl.value;\n            if (prop && prop.indexOf(\"--\") === 0) {\n                settings.store[prop] = value;\n            }\n        }));\n    }));\n    return settings.store;\n}\n\nfunction stringifyCss(tree) {\n    var delim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n    var cb = arguments.length > 2 ? arguments[2] : undefined;\n    var renderMethods = {\n        charset: function charset(node) {\n            return \"@charset \" + node.name + \";\";\n        },\n        comment: function comment(node) {\n            return node.comment.indexOf(\"__CSSVARSPONYFILL\") === 0 ? \"/*\" + node.comment + \"*/\" : \"\";\n        },\n        \"custom-media\": function customMedia(node) {\n            return \"@custom-media \" + node.name + \" \" + node.media + \";\";\n        },\n        declaration: function declaration(node) {\n            return node.property + \":\" + node.value + \";\";\n        },\n        document: function document(node) {\n            return \"@\" + (node.vendor || \"\") + \"document \" + node.document + \"{\" + visit(node.rules) + \"}\";\n        },\n        \"font-face\": function fontFace(node) {\n            return \"@font-face\" + \"{\" + visit(node.declarations) + \"}\";\n        },\n        host: function host(node) {\n            return \"@host\" + \"{\" + visit(node.rules) + \"}\";\n        },\n        import: function _import(node) {\n            return \"@import \" + node.name + \";\";\n        },\n        keyframe: function keyframe(node) {\n            return node.values.join(\",\") + \"{\" + visit(node.declarations) + \"}\";\n        },\n        keyframes: function keyframes(node) {\n            return \"@\" + (node.vendor || \"\") + \"keyframes \" + node.name + \"{\" + visit(node.keyframes) + \"}\";\n        },\n        media: function media(node) {\n            return \"@media \" + node.media + \"{\" + visit(node.rules) + \"}\";\n        },\n        namespace: function namespace(node) {\n            return \"@namespace \" + node.name + \";\";\n        },\n        page: function page(node) {\n            return \"@page \" + (node.selectors.length ? node.selectors.join(\", \") : \"\") + \"{\" + visit(node.declarations) + \"}\";\n        },\n        \"page-margin-box\": function pageMarginBox(node) {\n            return \"@\" + node.name + \"{\" + visit(node.declarations) + \"}\";\n        },\n        rule: function rule(node) {\n            var decls = node.declarations;\n            if (decls.length) {\n                return node.selectors.join(\",\") + \"{\" + visit(decls) + \"}\";\n            }\n        },\n        supports: function supports(node) {\n            return \"@supports \" + node.supports + \"{\" + visit(node.rules) + \"}\";\n        }\n    };\n    function visit(nodes) {\n        var buf = \"\";\n        for (var i = 0; i < nodes.length; i++) {\n            var n = nodes[i];\n            if (cb) {\n                cb(n);\n            }\n            var txt = renderMethods[n.type](n);\n            if (txt) {\n                buf += txt;\n                if (txt.length && n.selectors) {\n                    buf += delim;\n                }\n            }\n        }\n        return buf;\n    }\n    return visit(tree.stylesheet.rules);\n}\n\nfunction walkCss(node, fn) {\n    node.rules.forEach((function(rule) {\n        if (rule.rules) {\n            walkCss(rule, fn);\n            return;\n        }\n        if (rule.keyframes) {\n            rule.keyframes.forEach((function(keyframe) {\n                if (keyframe.type === \"keyframe\") {\n                    fn(keyframe.declarations, rule);\n                }\n            }));\n            return;\n        }\n        if (!rule.declarations) {\n            return;\n        }\n        fn(rule.declarations, node);\n    }));\n}\n\nvar VAR_PROP_IDENTIFIER = \"--\";\n\nvar VAR_FUNC_IDENTIFIER = \"var\";\n\nfunction transformCss(cssData) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var defaults = {\n        preserveStatic: true,\n        preserveVars: false,\n        variables: {},\n        onWarning: function onWarning() {}\n    };\n    var settings = _extends({}, defaults, options);\n    if (typeof cssData === \"string\") {\n        cssData = parseCss(cssData, settings);\n    }\n    walkCss(cssData.stylesheet, (function(declarations, node) {\n        for (var i = 0; i < declarations.length; i++) {\n            var decl = declarations[i];\n            var type = decl.type;\n            var prop = decl.property;\n            var value = decl.value;\n            if (type !== \"declaration\") {\n                continue;\n            }\n            if (!settings.preserveVars && prop && prop.indexOf(VAR_PROP_IDENTIFIER) === 0) {\n                declarations.splice(i, 1);\n                i--;\n                continue;\n            }\n            if (value.indexOf(VAR_FUNC_IDENTIFIER + \"(\") !== -1) {\n                var resolvedValue = resolveValue(value, settings);\n                if (resolvedValue !== decl.value) {\n                    resolvedValue = fixNestedCalc(resolvedValue);\n                    if (!settings.preserveVars) {\n                        decl.value = resolvedValue;\n                    } else {\n                        declarations.splice(i, 0, {\n                            type: type,\n                            property: prop,\n                            value: resolvedValue\n                        });\n                        i++;\n                    }\n                }\n            }\n        }\n    }));\n    return stringifyCss(cssData);\n}\n\nfunction fixNestedCalc(value) {\n    var reCalcVal = /calc\\(([^)]+)\\)/g;\n    (value.match(reCalcVal) || []).forEach((function(match) {\n        var newVal = \"calc\".concat(match.split(\"calc\").join(\"\"));\n        value = value.replace(match, newVal);\n    }));\n    return value;\n}\n\nfunction resolveValue(value) {\n    var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var __recursiveFallback = arguments.length > 2 ? arguments[2] : undefined;\n    if (value.indexOf(\"var(\") === -1) {\n        return value;\n    }\n    var valueData = balancedMatch(\"(\", \")\", value);\n    function resolveFunc(value) {\n        var name = value.split(\",\")[0].replace(/[\\s\\n\\t]/g, \"\");\n        var fallback = (value.match(/(?:\\s*,\\s*){1}(.*)?/) || [])[1];\n        var match = Object.prototype.hasOwnProperty.call(settings.variables, name) ? String(settings.variables[name]) : undefined;\n        var replacement = match || (fallback ? String(fallback) : undefined);\n        var unresolvedFallback = __recursiveFallback || value;\n        if (!match) {\n            settings.onWarning('variable \"'.concat(name, '\" is undefined'));\n        }\n        if (replacement && replacement !== \"undefined\" && replacement.length > 0) {\n            return resolveValue(replacement, settings, unresolvedFallback);\n        } else {\n            return \"var(\".concat(unresolvedFallback, \")\");\n        }\n    }\n    if (!valueData) {\n        if (value.indexOf(\"var(\") !== -1) {\n            settings.onWarning('missing closing \")\" in the value \"'.concat(value, '\"'));\n        }\n        return value;\n    } else if (valueData.pre.slice(-3) === \"var\") {\n        var isEmptyVarFunc = valueData.body.trim().length === 0;\n        if (isEmptyVarFunc) {\n            settings.onWarning(\"var() must contain a non-whitespace string\");\n            return value;\n        } else {\n            return valueData.pre.slice(0, -3) + resolveFunc(valueData.body) + resolveValue(valueData.post, settings);\n        }\n    } else {\n        return valueData.pre + \"(\".concat(resolveValue(valueData.body, settings), \")\") + resolveValue(valueData.post, settings);\n    }\n}\n\nvar isBrowser = typeof window !== \"undefined\";\n\nvar isNativeSupport = isBrowser && window.CSS && window.CSS.supports && window.CSS.supports(\"(--a: 0)\");\n\nvar counters = {\n    group: 0,\n    job: 0\n};\n\nvar defaults = {\n    rootElement: isBrowser ? document : null,\n    shadowDOM: false,\n    include: \"style,link[rel=stylesheet]\",\n    exclude: \"\",\n    variables: {},\n    onlyLegacy: true,\n    preserveStatic: true,\n    preserveVars: false,\n    silent: false,\n    updateDOM: true,\n    updateURLs: true,\n    watch: null,\n    onBeforeSend: function onBeforeSend() {},\n    onError: function onError() {},\n    onWarning: function onWarning() {},\n    onSuccess: function onSuccess() {},\n    onComplete: function onComplete() {},\n    onFinally: function onFinally() {}\n};\n\nvar regex = {\n    cssComments: /\\/\\*[\\s\\S]+?\\*\\//g,\n    cssKeyframes: /@(?:-\\w*-)?keyframes/,\n    cssMediaQueries: /@media[^{]+\\{([\\s\\S]+?})\\s*}/g,\n    cssUrls: /url\\((?!['\"]?(?:data|http|\\/\\/):)['\"]?([^'\")]*)['\"]?\\)/g,\n    cssVarDeclRules: /(?::(?:root|host)(?![.:#(])[\\s,]*[^{]*{\\s*[^}]*})/g,\n    cssVarDecls: /(?:[\\s;]*)(-{2}\\w[\\w-]*)(?:\\s*:\\s*)([^;]*);/g,\n    cssVarFunc: /var\\(\\s*--[\\w-]/,\n    cssVars: /(?:(?::(?:root|host)(?![.:#(])[\\s,]*[^{]*{\\s*[^;]*;*\\s*)|(?:var\\(\\s*))(--[^:)]+)(?:\\s*[:)])/\n};\n\nvar variableStore = {\n    dom: {},\n    job: {},\n    user: {}\n};\n\nvar cssVarsIsRunning = false;\n\nvar cssVarsObserver = null;\n\nvar cssVarsSrcNodeCount = 0;\n\nvar debounceTimer = null;\n\nvar isShadowDOMReady = false;\n\n/**\n * Fetches, parses, and transforms CSS custom properties from specified\n * <style> and <link> elements into static values, then appends a new <style>\n * element with static values to the DOM to provide CSS custom property\n * compatibility for legacy browsers. Also provides a single interface for\n * live updates of runtime values in both modern and legacy browsers.\n *\n * @preserve\n * @param {object}   [options] Options object\n * @param {object}   [options.rootElement=document] Root element to traverse for\n *                   <link> and <style> nodes\n * @param {boolean}  [options.shadowDOM=false] Determines if shadow DOM <link>\n *                   and <style> nodes will be processed.\n * @param {string}   [options.include=\"style,link[rel=stylesheet]\"] CSS selector\n *                   matching <link re=\"stylesheet\"> and <style> nodes to\n *                   process\n * @param {string}   [options.exclude] CSS selector matching <link\n *                   rel=\"stylehseet\"> and <style> nodes to exclude from those\n *                   matches by options.include\n * @param {object}   [options.variables] A map of custom property name/value\n *                   pairs. Property names can omit or include the leading\n *                   double-hyphen (—), and values specified will override\n *                   previous values\n * @param {boolean}  [options.onlyLegacy=true] Determines if the ponyfill will\n *                   only generate legacy-compatible CSS in browsers that lack\n *                   native support (i.e., legacy browsers)\n * @param {boolean}  [options.preserveStatic=true] Determines if CSS\n *                   declarations that do not reference a custom property will\n *                   be preserved in the transformed CSS\n * @param {boolean}  [options.preserveVars=false] Determines if CSS custom\n *                   property declarations will be preserved in the transformed\n *                   CSS\n * @param {boolean}  [options.silent=false] Determines if warning and error\n *                   messages will be displayed on the console\n * @param {boolean}  [options.updateDOM=true] Determines if the ponyfill will\n *                   update the DOM after processing CSS custom properties\n * @param {boolean}  [options.updateURLs=true] Determines if relative url()\n *                   paths will be converted to absolute urls in external CSS\n * @param {boolean}  [options.watch=false] Determines if a MutationObserver will\n *                   be created that will execute the ponyfill when a <link> or\n *                   <style> DOM mutation is observed\n * @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes\n *                   1) the XHR object, 2) source node reference, and 3) the\n *                   source URL as arguments\n * @param {function} [options.onError] Callback after a CSS parsing error has\n *                   occurred or an XHR request has failed. Passes 1) an error\n *                   message, and 2) source node reference, 3) xhr, and 4 url as\n *                   arguments.\n * @param {function} [options.onWarning] Callback after each CSS parsing warning\n *                   has occurred. Passes 1) a warning message as an argument.\n * @param {function} [options.onSuccess] Callback after CSS data has been\n *                   collected from each node and before CSS custom properties\n *                   have been transformed. Allows modifying the CSS data before\n *                   it is transformed by returning any string value (or false\n *                   to skip). Passes 1) CSS text, 2) source node reference, and\n *                   3) the source URL as arguments.\n * @param {function} [options.onComplete] Callback after all CSS has been\n *                   processed, legacy-compatible CSS has been generated, and\n *                   (optionally) the DOM has been updated. Passes 1) a CSS\n *                   string with CSS variable values resolved, 2) an array of\n *                   output <style> node references that have been appended to\n *                   the DOM, 3) an object containing all custom properies names\n *                   and values, and 4) the ponyfill execution time in\n *                   milliseconds.\n * @param {function} [options.onFinally] Callback in modern and legacy browsers\n *                   after the ponyfill has finished all tasks. Passes 1) a\n *                   boolean indicating if the last ponyfill call resulted in a\n *                   style change, 2) a boolean indicating if the current\n *                   browser provides native support for CSS custom properties,\n *                   and 3) the ponyfill execution time in milliseconds.\n * @example\n *\n *   cssVars({\n *     rootElement   : document,\n *     shadowDOM     : false,\n *     include       : 'style,link[rel=\"stylesheet\"]',\n *     exclude       : '',\n *     variables     : {},\n *     onlyLegacy    : true,\n *     preserveStatic: true,\n *     preserveVars  : false,\n *     silent        : false,\n *     updateDOM     : true,\n *     updateURLs    : true,\n *     watch         : false,\n *     onBeforeSend(xhr, node, url) {},\n *     onError(message, node, xhr, url) {},\n *     onWarning(message) {},\n *     onSuccess(cssText, node, url) {},\n *     onComplete(cssText, styleNode, cssVariables, benchmark) {},\n *     onFinally(hasChanged, hasNativeSupport, benchmark)\n *   });\n */ function cssVars() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var msgPrefix = \"cssVars(): \";\n    var settings = _extends({}, defaults, options);\n    function handleError(message, sourceNode, xhr, url) {\n        if (!settings.silent && window.console) {\n            console.error(\"\".concat(msgPrefix).concat(message, \"\\n\"), sourceNode);\n        }\n        settings.onError(message, sourceNode, xhr, url);\n    }\n    function handleWarning(message) {\n        if (!settings.silent && window.console) {\n            console.warn(\"\".concat(msgPrefix).concat(message));\n        }\n        settings.onWarning(message);\n    }\n    function handleFinally(hasChanged) {\n        settings.onFinally(Boolean(hasChanged), isNativeSupport, getTimeStamp() - settings.__benchmark);\n    }\n    if (!isBrowser) {\n        return;\n    }\n    if (settings.watch) {\n        settings.watch = defaults.watch;\n        addMutationObserver(settings);\n        cssVars(settings);\n        return;\n    } else if (settings.watch === false && cssVarsObserver) {\n        cssVarsObserver.disconnect();\n        cssVarsObserver = null;\n    }\n    if (!settings.__benchmark) {\n        if (cssVarsIsRunning === settings.rootElement) {\n            cssVarsDebounced(options);\n            return;\n        }\n        var srcNodes = [].slice.call(settings.rootElement.querySelectorAll('[data-cssvars]:not([data-cssvars=\"out\"])'));\n        settings.__benchmark = getTimeStamp();\n        settings.exclude = [ cssVarsObserver ? '[data-cssvars]:not([data-cssvars=\"\"])' : '[data-cssvars=\"out\"]', \"link[disabled]:not([data-cssvars])\", settings.exclude ].filter((function(selector) {\n            return selector;\n        })).join(\",\");\n        settings.variables = fixVarNames(settings.variables);\n        srcNodes.forEach((function(srcNode) {\n            var hasStyleCache = srcNode.nodeName.toLowerCase() === \"style\" && srcNode.__cssVars.text;\n            var hasStyleChanged = hasStyleCache && srcNode.textContent !== srcNode.__cssVars.text;\n            if (hasStyleCache && hasStyleChanged) {\n                srcNode.sheet && (srcNode.sheet.disabled = false);\n                srcNode.setAttribute(\"data-cssvars\", \"\");\n            }\n        }));\n        if (!cssVarsObserver) {\n            var outNodes = [].slice.call(settings.rootElement.querySelectorAll('[data-cssvars=\"out\"]'));\n            outNodes.forEach((function(outNode) {\n                var dataGroup = outNode.getAttribute(\"data-cssvars-group\");\n                var srcNode = dataGroup ? settings.rootElement.querySelector('[data-cssvars=\"src\"][data-cssvars-group=\"'.concat(dataGroup, '\"]')) : null;\n                if (!srcNode) {\n                    outNode.parentNode.removeChild(outNode);\n                }\n            }));\n            if (cssVarsSrcNodeCount && srcNodes.length < cssVarsSrcNodeCount) {\n                cssVarsSrcNodeCount = srcNodes.length;\n                variableStore.dom = {};\n            }\n        }\n    }\n    if (document.readyState !== \"loading\") {\n        if (isNativeSupport && settings.onlyLegacy) {\n            var hasVarChange = false;\n            if (settings.updateDOM) {\n                var targetElm = settings.rootElement.host || (settings.rootElement === document ? document.documentElement : settings.rootElement);\n                Object.keys(settings.variables).forEach((function(key) {\n                    var varValue = settings.variables[key];\n                    hasVarChange = hasVarChange || varValue !== getComputedStyle(targetElm).getPropertyValue(key);\n                    targetElm.style.setProperty(key, varValue);\n                }));\n            }\n            handleFinally(hasVarChange);\n        } else if (!isShadowDOMReady && (settings.shadowDOM || settings.rootElement.shadowRoot || settings.rootElement.host)) {\n            getCssData({\n                rootElement: defaults.rootElement,\n                include: defaults.include,\n                exclude: settings.exclude,\n                skipDisabled: false,\n                onSuccess: function onSuccess(cssText, node, url) {\n                    var isUserDisabled = (node.sheet || {}).disabled && !node.__cssVars;\n                    if (isUserDisabled) {\n                        return false;\n                    }\n                    cssText = cssText.replace(regex.cssComments, \"\").replace(regex.cssMediaQueries, \"\");\n                    cssText = (cssText.match(regex.cssVarDeclRules) || []).join(\"\");\n                    return cssText || false;\n                },\n                onComplete: function onComplete(cssText, cssArray, nodeArray) {\n                    parseVars(cssText, {\n                        store: variableStore.dom,\n                        onWarning: handleWarning\n                    });\n                    isShadowDOMReady = true;\n                    cssVars(settings);\n                }\n            });\n        } else {\n            cssVarsIsRunning = settings.rootElement;\n            getCssData({\n                rootElement: settings.rootElement,\n                include: settings.include,\n                exclude: settings.exclude,\n                skipDisabled: false,\n                onBeforeSend: settings.onBeforeSend,\n                onError: function onError(xhr, node, url) {\n                    var responseUrl = xhr.responseURL || getFullUrl(url, location.href);\n                    var statusText = xhr.statusText ? \"(\".concat(xhr.statusText, \")\") : \"Unspecified Error\" + (xhr.status === 0 ? \" (possibly CORS related)\" : \"\");\n                    var errorMsg = \"CSS XHR Error: \".concat(responseUrl, \" \").concat(xhr.status, \" \").concat(statusText);\n                    handleError(errorMsg, node, xhr, responseUrl);\n                },\n                onSuccess: function onSuccess(cssText, node, url) {\n                    var isUserDisabled = (node.sheet || {}).disabled && !node.__cssVars;\n                    if (isUserDisabled) {\n                        return false;\n                    }\n                    var isLink = node.nodeName.toLowerCase() === \"link\";\n                    var isStyleImport = node.nodeName.toLowerCase() === \"style\" && cssText !== node.textContent;\n                    var returnVal = settings.onSuccess(cssText, node, url);\n                    cssText = returnVal !== undefined && Boolean(returnVal) === false ? \"\" : returnVal || cssText;\n                    if (settings.updateURLs && (isLink || isStyleImport)) {\n                        cssText = fixRelativeCssUrls(cssText, url);\n                    }\n                    return cssText;\n                },\n                onComplete: function onComplete(cssText, cssArray) {\n                    var nodeArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n                    var currentVars = _extends({}, variableStore.dom, variableStore.user);\n                    var hasVarChange = false;\n                    variableStore.job = {};\n                    nodeArray.forEach((function(node, i) {\n                        var nodeCSS = cssArray[i];\n                        node.__cssVars = node.__cssVars || {};\n                        node.__cssVars.text = nodeCSS;\n                        if (regex.cssVars.test(nodeCSS)) {\n                            try {\n                                var cssTree = parseCss(nodeCSS, {\n                                    preserveStatic: settings.preserveStatic,\n                                    removeComments: true\n                                });\n                                parseVars(cssTree, {\n                                    parseHost: Boolean(settings.rootElement.host),\n                                    store: variableStore.dom,\n                                    onWarning: handleWarning\n                                });\n                                node.__cssVars.tree = cssTree;\n                            } catch (err) {\n                                handleError(err.message, node);\n                            }\n                        }\n                    }));\n                    _extends(variableStore.job, variableStore.dom);\n                    if (settings.updateDOM) {\n                        _extends(variableStore.user, settings.variables);\n                        _extends(variableStore.job, variableStore.user);\n                    } else {\n                        _extends(variableStore.job, variableStore.user, settings.variables);\n                        _extends(currentVars, settings.variables);\n                    }\n                    hasVarChange = counters.job > 0 && Boolean(Object.keys(variableStore.job).length > Object.keys(currentVars).length || Boolean(Object.keys(currentVars).length && Object.keys(variableStore.job).some((function(key) {\n                        return variableStore.job[key] !== currentVars[key];\n                    }))));\n                    if (hasVarChange) {\n                        resetCssNodes(settings.rootElement);\n                        cssVars(settings);\n                    } else {\n                        var outCssArray = [];\n                        var outNodeArray = [];\n                        var hasKeyframesWithVars = false;\n                        if (settings.updateDOM) {\n                            counters.job++;\n                        }\n                        nodeArray.forEach((function(node, i) {\n                            var isSkip = !node.__cssVars.tree;\n                            if (node.__cssVars.tree) {\n                                try {\n                                    transformCss(node.__cssVars.tree, _extends({}, settings, {\n                                        variables: variableStore.job,\n                                        onWarning: handleWarning\n                                    }));\n                                    var outCss = stringifyCss(node.__cssVars.tree);\n                                    if (settings.updateDOM) {\n                                        var nodeCSS = cssArray[i];\n                                        var hasCSSVarFunc = regex.cssVarFunc.test(nodeCSS);\n                                        if (!node.getAttribute(\"data-cssvars\")) {\n                                            node.setAttribute(\"data-cssvars\", \"src\");\n                                        }\n                                        if (outCss.length && hasCSSVarFunc) {\n                                            var dataGroup = node.getAttribute(\"data-cssvars-group\") || ++counters.group;\n                                            var outCssNoSpaces = outCss.replace(/\\s/g, \"\");\n                                            var outNode = settings.rootElement.querySelector('[data-cssvars=\"out\"][data-cssvars-group=\"'.concat(dataGroup, '\"]')) || document.createElement(\"style\");\n                                            hasKeyframesWithVars = hasKeyframesWithVars || regex.cssKeyframes.test(outCss);\n                                            if (settings.preserveStatic) {\n                                                node.sheet && (node.sheet.disabled = true);\n                                            }\n                                            if (!outNode.hasAttribute(\"data-cssvars\")) {\n                                                outNode.setAttribute(\"data-cssvars\", \"out\");\n                                            }\n                                            if (outCssNoSpaces === node.textContent.replace(/\\s/g, \"\")) {\n                                                isSkip = true;\n                                                if (outNode && outNode.parentNode) {\n                                                    node.removeAttribute(\"data-cssvars-group\");\n                                                    outNode.parentNode.removeChild(outNode);\n                                                }\n                                            } else if (outCssNoSpaces !== outNode.textContent.replace(/\\s/g, \"\")) {\n                                                [ node, outNode ].forEach((function(n) {\n                                                    n.setAttribute(\"data-cssvars-job\", counters.job);\n                                                    n.setAttribute(\"data-cssvars-group\", dataGroup);\n                                                }));\n                                                outNode.textContent = outCss;\n                                                outCssArray.push(outCss);\n                                                outNodeArray.push(outNode);\n                                                if (!outNode.parentNode) {\n                                                    node.parentNode.insertBefore(outNode, node.nextSibling);\n                                                }\n                                            }\n                                        }\n                                    } else {\n                                        if (node.textContent.replace(/\\s/g, \"\") !== outCss) {\n                                            outCssArray.push(outCss);\n                                        }\n                                    }\n                                } catch (err) {\n                                    handleError(err.message, node);\n                                }\n                            }\n                            if (isSkip) {\n                                node.setAttribute(\"data-cssvars\", \"skip\");\n                            }\n                            if (!node.hasAttribute(\"data-cssvars-job\")) {\n                                node.setAttribute(\"data-cssvars-job\", counters.job);\n                            }\n                        }));\n                        cssVarsSrcNodeCount = settings.rootElement.querySelectorAll('[data-cssvars]:not([data-cssvars=\"out\"])').length;\n                        if (settings.shadowDOM) {\n                            var elms = [].concat(settings.rootElement).concat([].slice.call(settings.rootElement.querySelectorAll(\"*\")));\n                            for (var i = 0, elm; elm = elms[i]; ++i) {\n                                if (elm.shadowRoot && elm.shadowRoot.querySelector(\"style\")) {\n                                    var shadowSettings = _extends({}, settings, {\n                                        rootElement: elm.shadowRoot\n                                    });\n                                    cssVars(shadowSettings);\n                                }\n                            }\n                        }\n                        if (settings.updateDOM && hasKeyframesWithVars) {\n                            fixKeyframes(settings.rootElement);\n                        }\n                        cssVarsIsRunning = false;\n                        settings.onComplete(outCssArray.join(\"\"), outNodeArray, JSON.parse(JSON.stringify(variableStore.job)), getTimeStamp() - settings.__benchmark);\n                        handleFinally(outNodeArray.length);\n                    }\n                }\n            });\n        }\n    } else {\n        document.addEventListener(\"DOMContentLoaded\", (function init(evt) {\n            cssVars(options);\n            document.removeEventListener(\"DOMContentLoaded\", init);\n        }));\n    }\n}\n\ncssVars.reset = function() {\n    counters.job = 0;\n    counters.group = 0;\n    cssVarsIsRunning = false;\n    if (cssVarsObserver) {\n        cssVarsObserver.disconnect();\n        cssVarsObserver = null;\n    }\n    cssVarsSrcNodeCount = 0;\n    debounceTimer = null;\n    isShadowDOMReady = false;\n    for (var prop in variableStore) {\n        variableStore[prop] = {};\n    }\n};\n\nfunction addMutationObserver(settings) {\n    function isDisabled(node) {\n        var isDisabledAttr = isLink(node) && node.hasAttribute(\"disabled\");\n        var isDisabledSheet = (node.sheet || {}).disabled;\n        return isDisabledAttr || isDisabledSheet;\n    }\n    function isLink(node) {\n        var isStylesheet = node.nodeName.toLowerCase() === \"link\" && (node.getAttribute(\"rel\") || \"\").indexOf(\"stylesheet\") !== -1;\n        return isStylesheet;\n    }\n    function isStyle(node) {\n        return node.nodeName.toLowerCase() === \"style\";\n    }\n    function isValidAttributeMutation(mutation) {\n        var isValid = false;\n        if (mutation.type === \"attributes\" && isLink(mutation.target) && !isDisabled(mutation.target)) {\n            var isEnabledMutation = mutation.attributeName === \"disabled\";\n            var isHrefMutation = mutation.attributeName === \"href\";\n            var isSkipNode = mutation.target.getAttribute(\"data-cssvars\") === \"skip\";\n            var isSrcNode = mutation.target.getAttribute(\"data-cssvars\") === \"src\";\n            if (isEnabledMutation) {\n                isValid = !isSkipNode && !isSrcNode;\n            } else if (isHrefMutation) {\n                if (isSkipNode) {\n                    mutation.target.setAttribute(\"data-cssvars\", \"\");\n                } else if (isSrcNode) {\n                    resetCssNodes(settings.rootElement, true);\n                }\n                isValid = true;\n            }\n        }\n        return isValid;\n    }\n    function isValidStyleTextMutation(mutation) {\n        var isValid = false;\n        if (mutation.type === \"childList\") {\n            var isStyleElm = isStyle(mutation.target);\n            var isOutNode = mutation.target.getAttribute(\"data-cssvars\") === \"out\";\n            isValid = isStyleElm && !isOutNode;\n        }\n        return isValid;\n    }\n    function isValidAddMutation(mutation) {\n        var isValid = false;\n        if (mutation.type === \"childList\") {\n            isValid = [].slice.call(mutation.addedNodes).some((function(node) {\n                var isElm = node.nodeType === 1;\n                var hasAttr = isElm && node.hasAttribute(\"data-cssvars\");\n                var isStyleWithVars = isStyle(node) && regex.cssVars.test(node.textContent);\n                var isValid = !hasAttr && (isLink(node) || isStyleWithVars);\n                return isValid && !isDisabled(node);\n            }));\n        }\n        return isValid;\n    }\n    function isValidRemoveMutation(mutation) {\n        var isValid = false;\n        if (mutation.type === \"childList\") {\n            isValid = [].slice.call(mutation.removedNodes).some((function(node) {\n                var isElm = node.nodeType === 1;\n                var isOutNode = isElm && node.getAttribute(\"data-cssvars\") === \"out\";\n                var isSrcNode = isElm && node.getAttribute(\"data-cssvars\") === \"src\";\n                var isValid = isSrcNode;\n                if (isSrcNode || isOutNode) {\n                    var dataGroup = node.getAttribute(\"data-cssvars-group\");\n                    var orphanNode = settings.rootElement.querySelector('[data-cssvars-group=\"'.concat(dataGroup, '\"]'));\n                    if (isSrcNode) {\n                        resetCssNodes(settings.rootElement, true);\n                    }\n                    if (orphanNode) {\n                        orphanNode.parentNode.removeChild(orphanNode);\n                    }\n                }\n                return isValid;\n            }));\n        }\n        return isValid;\n    }\n    if (!window.MutationObserver) {\n        return;\n    }\n    if (cssVarsObserver) {\n        cssVarsObserver.disconnect();\n        cssVarsObserver = null;\n    }\n    cssVarsObserver = new MutationObserver((function(mutations) {\n        var hasValidMutation = mutations.some((function(mutation) {\n            return isValidAttributeMutation(mutation) || isValidStyleTextMutation(mutation) || isValidAddMutation(mutation) || isValidRemoveMutation(mutation);\n        }));\n        if (hasValidMutation) {\n            cssVars(settings);\n        }\n    }));\n    cssVarsObserver.observe(document.documentElement, {\n        attributes: true,\n        attributeFilter: [ \"disabled\", \"href\" ],\n        childList: true,\n        subtree: true\n    });\n}\n\nfunction cssVarsDebounced(settings) {\n    var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;\n    clearTimeout(debounceTimer);\n    debounceTimer = setTimeout((function() {\n        settings.__benchmark = null;\n        cssVars(settings);\n    }), delay);\n}\n\nfunction fixKeyframes(rootElement) {\n    var animationNameProp = [ \"animation-name\", \"-moz-animation-name\", \"-webkit-animation-name\" ].filter((function(prop) {\n        return getComputedStyle(document.body)[prop];\n    }))[0];\n    if (animationNameProp) {\n        var allNodes = rootElement.getElementsByTagName(\"*\");\n        var keyframeNodes = [];\n        var nameMarker = \"__CSSVARSPONYFILL-KEYFRAMES__\";\n        for (var i = 0, len = allNodes.length; i < len; i++) {\n            var node = allNodes[i];\n            var animationName = getComputedStyle(node)[animationNameProp];\n            if (animationName !== \"none\") {\n                node.style[animationNameProp] += nameMarker;\n                keyframeNodes.push(node);\n            }\n        }\n        void document.body.offsetHeight;\n        for (var _i = 0, _len = keyframeNodes.length; _i < _len; _i++) {\n            var nodeStyle = keyframeNodes[_i].style;\n            nodeStyle[animationNameProp] = nodeStyle[animationNameProp].replace(nameMarker, \"\");\n        }\n    }\n}\n\nfunction fixRelativeCssUrls(cssText, baseUrl) {\n    var cssUrls = cssText.replace(regex.cssComments, \"\").match(regex.cssUrls) || [];\n    cssUrls.forEach((function(cssUrl) {\n        var oldUrl = cssUrl.replace(regex.cssUrls, \"$1\");\n        var newUrl = getFullUrl(oldUrl, baseUrl);\n        cssText = cssText.replace(cssUrl, cssUrl.replace(oldUrl, newUrl));\n    }));\n    return cssText;\n}\n\nfunction fixVarNames() {\n    var varObj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var reLeadingHyphens = /^-{2}/;\n    return Object.keys(varObj).reduce((function(obj, value) {\n        var key = reLeadingHyphens.test(value) ? value : \"--\".concat(value.replace(/^-+/, \"\"));\n        obj[key] = varObj[value];\n        return obj;\n    }), {});\n}\n\nfunction getFullUrl(url) {\n    var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : location.href;\n    var d = document.implementation.createHTMLDocument(\"\");\n    var b = d.createElement(\"base\");\n    var a = d.createElement(\"a\");\n    d.head.appendChild(b);\n    d.body.appendChild(a);\n    b.href = base;\n    a.href = url;\n    return a.href;\n}\n\nfunction getTimeStamp() {\n    return isBrowser && (window.performance || {}).now ? window.performance.now() : (new Date).getTime();\n}\n\nfunction resetCssNodes(rootElement) {\n    var resetDOMVariableStore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var resetNodes = [].slice.call(rootElement.querySelectorAll('[data-cssvars=\"skip\"],[data-cssvars=\"src\"]'));\n    resetNodes.forEach((function(node) {\n        return node.setAttribute(\"data-cssvars\", \"\");\n    }));\n    if (resetDOMVariableStore) {\n        variableStore.dom = {};\n    }\n}\n\nexport default cssVars;\n//# sourceMappingURL=css-vars-ponyfill.esm.js.map\n","import actions from 'actions';\nimport selectors from 'selectors';\n\nimport { parse } from 'helpers/cssVariablesParser';\n\nimport lightModeString from '!!raw-loader!../constants/light.scss';\nimport highContastLightModeString from '!!raw-loader!../constants/highContrastLight.scss';\nimport darkModeString from '!!raw-loader!../constants/dark.scss';\nimport highContrastDarkModeString from '!!raw-loader!../constants/highContrastDark.scss';\nimport cssVars from 'css-vars-ponyfill';\nimport Theme from '../constants/theme';\n\n/**\n * Sets the theme of WebViewer UI. Please note that this does not work in IE11.\n * @method UI.setTheme\n * @param {string} theme Theme of WebViewerInstance UI.\n * @see UI.Theme\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const theme = instance.UI.Theme;\n    instance.UI.setTheme(theme.DARK);\n  });\n */\n\nexport default store => {\n  let previousActiveTheme = Theme.LIGHT; // default\n  let previousIsHighContrastMode = false; // default\n\n  cssVars({});\n  store.subscribe(() => {\n    const activeTheme = selectors.getActiveTheme(store.getState());\n    const isHighContrastMode = selectors.getIsHighContrastMode(store.getState());\n\n    if (previousActiveTheme !== activeTheme || previousIsHighContrastMode !== isHighContrastMode) {\n      previousActiveTheme = activeTheme;\n      previousIsHighContrastMode = isHighContrastMode;\n      updateColors(activeTheme, isHighContrastMode);\n    }\n  });\n  return theme => {\n    const values = Object.values(Theme);\n    if (values.indexOf(theme) < 0) {\n      throw new Error(`${theme} is not one of: ${values.join(',')}}`);\n    }\n    store.dispatch(actions.setActiveTheme(theme));\n  };\n};\n\nconst setVariables = (themeVarString = '') => {\n  const root = document.documentElement;\n  const themeVariables = parse(themeVarString, {});\n  Object.keys(themeVariables).forEach(key => {\n    const themeVariable = themeVariables[key];\n    root.style.setProperty(`--${key}`, themeVariable);\n  });\n};\n\nconst updateColors = (activeTheme, isHighContrastMode) => {\n  if (activeTheme === Theme.LIGHT) {\n    setVariables(isHighContrastMode ? highContastLightModeString : lightModeString);\n  } else if (activeTheme === Theme.DARK) {\n    setVariables(isHighContrastMode ? highContrastDarkModeString : darkModeString);\n  }\n  cssVars({\n    // onlyLegacy: false,\n    // preserveVars: true,\n    // shadowDOM: true,\n  });\n};\n","export default \":root {\\n  --blue-1: #E7EDF3;\\n  --blue-2: #DDE6EE;\\n  --blue-3: #CFD8E0;\\n  --blue-4: #C7D2DD;\\n  --blue-5: #3183C8;\\n  --blue-6: #1A4971;\\n  --blue-7: #2651A1;\\n\\n  --gray-0: #FFFFFF;\\n  --gray-1: #F8F9FA;\\n  --gray-2: #F1F3F5;\\n  --gray-3: #E7EBEE;\\n  --gray-4: #DEE2E6;\\n  --gray-5: #CFD4DA;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #868E96;\\n  --gray-8: #485056;\\n  --gray-9: #343A40;\\n  --gray-10: #21242A;\\n  --gray-11: #101214;\\n  --gray-12: #000000;\\n\\n  --yellow-1: #FACE0080;\\n  --red: red;\\n\\n  --component-background: var(--gray-0);\\n  --mobile-presets-background: var(--gray-1);\\n  --faded-component-background: var(--gray-2);\\n  --signature-draw-background: var(--gray-2);\\n  --toggle-zoom-overlay-background: var(--gray-2);\\n  --ribbons-background: var(--gray-3);\\n  --document-background-color: var(--gray-2);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --slider-filled: var(--blue-5);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-8);\\n  --badge-text-color: var(--gray-0);\\n  --view-header-icon-active-fill: var(--blue-6);\\n\\n  --text-color: var(--gray-8);\\n  --faded-text: var(--gray-8);\\n  --placeholder-text: var(--gray-6);\\n  --ribbon-active-color: var(--blue-7);\\n\\n  --no-presets-text: var(--gray-8);\\n  --disabled-text: var(--gray-5);\\n  --disabled-icon: var(--gray-5);\\n\\n  --scroll-chevron-color: var(--gray-6);\\n  --icon-color: var(--gray-7);\\n  --selected-icon-color: var(--gray-8);\\n\\n  --view-header-button-hover: var(--blue-1);\\n  --view-header-button-active: var(--blue-2);\\n\\n  --popup-button-hover: var(--blue-1);\\n  --popup-button-active: var(--blue-2);\\n\\n  --primary-button: var(--blue-7);\\n  --primary-button-text: var(--gray-1);\\n  --primary-button-hover: var(--blue-6);\\n\\n  --secondary-button-text: var(--blue-7);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --box-shadow: var(--gray-6);\\n  --document-box-shadow: var(--gray-7);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --divider: var(--gray-5);\\n  --side-panel-border: var(--divider);\\n  --border: var(--gray-5);\\n  --focus-border: var(--blue-5);\\n  --color-palette-border: var(--gray-8);\\n\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: var(--border);\\n\\n  --list-separator-color: var(--gray-8);\\n  --scrollbar-color: var(--gray-6);\\n  --note-box-shadow: var(--box-shadow);\\n\\n  --tools-header-background: var(--gray-3);\\n  --view-header-background: var(--gray-1);\\n  --tools-overlay-background: var(--gray-0);\\n\\n  --tools-button-hover: var(--blue-3);\\n  --tools-button-active: var(--blue-4);\\n\\n  --tools-overlay-button-hover: var(--blue-1);\\n  --tools-overlay-button-active: var(--blue-2);\\n\\n  --outline-color: var(--blue-7);\\n  --outline-hover: var(--blue-1);\\n\\n  --preset-background: var(--gray-1);\\n}\\n\";","export default \":root {\\n  --blue-1: #E7EDF3;\\n  --blue-2: #DDE6EE;\\n  --blue-3: #CFD8E0;\\n  --blue-4: #C7D2DD;\\n  --blue-5: #3183C8;\\n  --blue-6: #1A4971;\\n\\n  --gray-0: #FFFFFF;\\n  --gray-1: #F8F9FA;\\n  --gray-2: #F1F3F5;\\n  --gray-3: #E7EBEE;\\n  --gray-4: #DEE2E6;\\n  --gray-5: #CFD4DA;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #868E96;\\n  --gray-8: #485056;\\n  --gray-9: #343A40;\\n  --gray-10: #21242A;\\n  --gray-11: #101214;\\n  --gray-12: #000000;\\n\\n  --yellow-1: #FACE0080;\\n  --red: red;\\n\\n  --component-background: var(--gray-0);\\n  --mobile-presets-background: var(--gray-1);\\n  --faded-component-background: var(--gray-2);\\n  --toggle-zoom-overlay-background: var(--gray-2);\\n  --ribbons-background: var(--gray-3);\\n  --document-background-color: var(--gray-2);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --slider-filled: var(--blue-5);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-8);\\n  --badge-text-color: var(--gray-0);\\n  --view-header-icon-active-fill: var(--blue-6);\\n\\n  --text-color: var(--gray-8);\\n  --faded-text: var(--gray-7);\\n  --placeholder-text: var(--gray-6);\\n  --ribbon-active-color: var(--blue-5);\\n\\n  --no-presets-text: var(--gray-6);\\n  --disabled-text: var(--gray-5);\\n  --disabled-icon: var(--gray-5);\\n\\n  --scroll-chevron-color: var(--gray-6);\\n  --icon-color: var(--gray-7);\\n  --selected-icon-color: var(--gray-8);\\n\\n  --view-header-button-hover: var(--blue-1);\\n  --view-header-button-active: var(--blue-2);\\n\\n  --popup-button-hover: var(--blue-1);\\n  --popup-button-active: var(--blue-2);\\n\\n  --primary-button: var(--blue-5);\\n  --primary-button-text: var(--gray-1);\\n  --primary-button-hover: var(--blue-6);\\n\\n  --secondary-button-text: var(--blue-5);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --box-shadow: var(--gray-6);\\n  --document-box-shadow: var(--gray-7);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --divider: var(--gray-5);\\n  --reply-divider: var(--gray-3);\\n  --side-panel-border: var(--divider);\\n  --border: var(--gray-5);\\n  --focus-border: var(--blue-5);\\n  --color-palette-border: var(--gray-8);\\n\\n  --image-signature-drop-background: var(--blue-1);\\n  --image-signature-drop-border: var(--blue-5);\\n  --signature-draw-background: var(--gray-2);\\n  --modal-stroke-and-border: var(--gray-5);\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: var(--border);\\n\\n  --list-separator-color: var(--gray-7);\\n  --scrollbar-color: var(--gray-6);\\n  --note-box-shadow: var(--gray-7);\\n  --note-box-shadow-expanded: rgba(134, 142, 150, 0.24);\\n\\n\\n  --tools-header-background: var(--gray-3);\\n  --view-header-background: var(--gray-1);\\n  --tools-overlay-background: var(--gray-0);\\n\\n  --tools-button-hover: var(--blue-3);\\n  --tools-button-active: var(--blue-4);\\n\\n  --tools-overlay-button-hover: var(--blue-1);\\n  --tools-overlay-button-active: var(--blue-2);\\n\\n  --outline-color: var(--blue-5);\\n  --outline-hover: var(--gray-2);\\n  --outline-selected: var(--blue-1);\\n\\n  --preset-background: var(--gray-1);\\n}\\n\";","export default \":root {\\n  --blue-1: #192530;\\n  --blue-2: #1B2B3A;\\n  --blue-3: #334250;\\n  --blue-4: #334758;\\n  --blue-5: #1A4971;\\n  --blue-6: #3183C8;\\n  --blue-7: #7FB7EB;\\n\\n  --gray-0: #000000;\\n  --gray-1: #16181C;\\n  --gray-2: #21242A;\\n  --gray-3: #343A40;\\n  --gray-4: #485056;\\n  --gray-5: #868E96;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #CFD4DA;\\n  --gray-8: #DEE2E6;\\n  --gray-9: #E7EBEE;\\n  --gray-10: #F1F3F5;\\n  --gray-11: #F8F9FA;\\n  --gray-12: #FFFFFF;\\n\\n  --yellow-1: #e1b90080;\\n  --red: red;\\n\\n  --panel-background: var(--gray-3);\\n  --faded-component-background: var(--gray-1);\\n  --signature-draw-background: var(--gray-3);\\n  --toggle-zoom-overlay-background: var(--gray-4);\\n  --component-background: var(--gray-2);\\n  --mobile-tool-style-popup: var(--gray-3);\\n  --preset-background: var(--gray-3);\\n  --mobile-divider: var(--gray-7);\\n  --mobile-presets-background: var(--gray-3);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --ribbons-background: var(--gray-1);\\n  --box-shadow: var(--gray-5);\\n  --document-box-shadow: var(--gray-5);\\n  --focus-border: var(--blue-6);\\n\\n  --scroll-chevron-color: var(--gray-5);\\n  --icon-color: var(--gray-6);\\n  --faded-text: var(--gray-8);\\n  --text-color: var(--gray-11);\\n  --placeholder-text: var(--gray-5);\\n  --ribbon-active-color: var(--blue-7);\\n\\n  --no-presets-text: var(--gray-8);\\n  --disabled-text: var(--gray-4);\\n  --disabled-icon: var(--gray-4);\\n\\n  --slider-filled: var(--blue-6);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-4);\\n  --badge-text-color: var(--gray-12);\\n  --primary-button: var(--blue-5);\\n  --primary-button-text: var(--gray-11);\\n  --secondary-button-text: var(--blue-7);\\n  --divider: var(--gray-4);\\n  --side-panel-border: var(--panel-background);\\n  --border: var(--gray-4);\\n  --selected-icon-color: var(--gray-8);\\n  --view-header-icon-active-fill: var(--gray-10);\\n  --document-background-color: var(--gray-2);\\n\\n  --view-header-button-hover: var(--blue-3);\\n  --view-header-button-active: var(--blue-4);\\n\\n  --popup-button-hover: var(--blue-3);\\n  --popup-button-active: var(--blue-4);\\n\\n  --primary-button-hover: var(--blue-6);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --color-palette-border: var(--gray-7);\\n\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: transparent;\\n\\n  --list-separator-color: var(--gray-8);\\n  --scrollbar-color: var(--gray-5);\\n  --note-box-shadow: transparent;\\n\\n  --tools-header-background: var(--gray-1);\\n  --view-header-background: var(--gray-3);\\n  --tools-overlay-background: var(--gray-2);\\n\\n\\n  --tools-button-hover: var(--blue-1);\\n  --tools-button-active: var(--blue-2);\\n\\n  --tools-overlay-button-hover: var(--blue-3);\\n  --tools-overlay-button-active: var(--blue-4);\\n\\n  --outline-color: var(--blue-7);\\n  --outline-hover: var(--blue-3);\\n}\\n\";","export default \":root {\\n  --blue-1: #192530;\\n  --blue-2: #1B2B3A;\\n  --blue-3: #334250;\\n  --blue-4: #334758;\\n  --blue-5: #1A4971;\\n  --blue-6: #3183C8;\\n\\n  --gray-0: #000000;\\n  --gray-1: #16181C;\\n  --gray-2: #21242A;\\n  --gray-3: #343A40;\\n  --gray-4: #485056;\\n  --gray-5: #868E96;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #CFD4DA;\\n  --gray-8: #DEE2E6;\\n  --gray-9: #E7EBEE;\\n  --gray-10: #F1F3F5;\\n  --gray-11: #F8F9FA;\\n  --gray-12: #FFFFFF;\\n\\n  --yellow-1: #e1b90080;\\n  --red: red;\\n\\n  --panel-background: var(--gray-3);\\n  --faded-component-background: var(--gray-1);\\n  --toggle-zoom-overlay-background: var(--gray-4);\\n  --component-background: var(--gray-2);\\n  --mobile-tool-style-popup: var(--gray-3);\\n  --preset-background: var(--gray-3);\\n  --mobile-divider: var(--gray-7);\\n  --mobile-presets-background: var(--gray-3);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --ribbons-background: var(--gray-2);\\n  --box-shadow: var(--gray-5);\\n  --document-box-shadow: var(--gray-5);\\n  --focus-border: var(--blue-6);\\n\\n  --scroll-chevron-color: var(--gray-5);\\n  --icon-color: var(--gray-6);\\n  --faded-text: var(--gray-6);\\n  --text-color: var(--gray-11);\\n  --placeholder-text: var(--gray-5);\\n  --ribbon-active-color: var(--blue-6);\\n\\n  --no-presets-text: var(--gray-6);\\n  --disabled-text: var(--gray-4);\\n  --disabled-icon: var(--gray-4);\\n\\n  --slider-filled: var(--blue-6);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-4);\\n  --badge-text-color: var(--gray-12);\\n  --primary-button: var(--blue-6);\\n  --primary-button-text: var(--gray-11);\\n  --secondary-button-text: var(--blue-6);\\n  --divider: var(--gray-4);\\n  --side-panel-border: var(--panel-background);\\n  --border: var(--gray-4);\\n  --selected-icon-color: var(--gray-8);\\n  --view-header-icon-active-fill: var(--gray-10);\\n  --document-background-color: var(--gray-2);\\n\\n  --view-header-button-hover: var(--blue-3);\\n  --view-header-button-active: var(--blue-4);\\n\\n  --popup-button-hover: var(--blue-3);\\n  --popup-button-active: var(--blue-4);\\n\\n  --primary-button-hover: var(--blue-5);\\n  --secondary-button-hover: var(--blue-5);\\n\\n  --color-palette-border: var(--gray-7);\\n\\n  --image-signature-drop-background: var(--blue-1);\\n  --image-signature-drop-border: var(--blue-6);\\n  --signature-draw-background: var(--gray-3);\\n  --modal-stroke-and-border: var(--gray-4);\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: transparent;\\n\\n  --list-separator-color: var(--gray-7);\\n  --scrollbar-color: var(--gray-5);\\n  --note-box-shadow: var(--gray-2);\\n  --note-box-shadow-expanded: var(--gray-2);\\n\\n  --tools-header-background: var(--gray-1);\\n  --view-header-background: var(--gray-3);\\n  --tools-overlay-background: var(--gray-2);\\n\\n\\n  --tools-button-hover: var(--blue-1);\\n  --tools-button-active: var(--blue-2);\\n\\n  --tools-overlay-button-hover: var(--blue-3);\\n  --tools-overlay-button-active: var(--blue-4);\\n\\n  --outline-color: var(--blue-6);\\n  --outline-hover: var(--blue-3);\\n  --outline-selected: var(--blue-3);\\n}\\n\";","import actions from 'actions';\n\n/**\n * Sets the current active toolbar group.\n * @method UI.setToolbarGroup\n * @param {string} groupDataElement The groups dataElement. Default values are: toolbarGroup-View, toolbarGroup-Annotate,\n * toolbarGroup-Shapes, toolbarGroup-Insert, toolbarGroup-Measure, toolbarGroup-Edit, toolbarGroup-Forms\n * @param {boolean} [pickTool] If true, after setting the toolbar group, the last picked tool for the group will be set as the current tool. Defaults to true.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Change the toolbar group to the `Shapes` group\n    instance.UI.setToolbarGroup('toolbarGroup-Shapes');\n */\n\nexport default store => (group, pickTool = true) => {\n  store.dispatch(actions.setToolbarGroup(group, pickTool));\n};","/**\n * Creates a new Toolbar group (Ribbon)\n *\n * @method UI.createToolbarGroup\n * @param {object} toolbarGroup\n * @param {string} toolbarGroup.name The label for the new Toolbar Group or the key value to get the label from translation files.\n * <p>Refer to the lib/ui/i18n folder to find the existing keys in the translation files</p>\n * @param {string} toolbarGroup.dataElementSuffix <p>The suffix value you want to use to select your Toolbar group by data element.\n * All toolbar groups have the data element in this format <strong>toolbarGroup-&#60;dataElementSuffix&#62</strong>.</p> <p>For example, if you set the dataElementSuffix as 'Draw',\n * the dataElement of your ribbon will be <strong>toolbarGroup-Draw</strong></p>\n * @param {Array} toolbarGroup.children A list of elements to be added on the toolbar group header.\n * Check [this guide]{@link https://www.pdftron.com/documentation/web/guides/customizing-header/#header-items} to see the available options to be used as a toolbar group child.\n * @param {boolean} [toolbarGroup.useDefaultElements] <p>If true, the common elements used in most toolbar groups will be added to the children list.</p>\n * <p>These elements are a spacer in the beginning and at the end of the header, the undo and redo buttons, and the eraser button.</p>\n * <p>In the example below you can see these elements being added. By default, the value will be false and these elements will not be added.</p>\n * @example\n  WebViewer(...)\n   .then(function(instance) {\n    const { annotationManager, documentViewer } = instance.Core;\n    const annotHistoryManager = documentViewer.getAnnotationHistoryManager();\n\n    // In case you want to use the Toolbar Group label with translation, you can\n    // set the values with the setTranslations API and use the translation key\n    // as the name parameter\n\n    instance.UI.setTranslations('en',\n     {\n        'option.toolbarGroup.draw': 'Draw'\n      }\n    );\n\n    instance.UI.createToolbarGroup(\n    {\n      name: 'option.toolbarGroup.draw',\n      dataElementSuffix: 'Draw',\n      useDefaultElements: false,\n      children: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandTools',\n          dataElement: 'freeHandToolGroupButton',\n          title: 'annotation.freehand'\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'ellipseAreaTools',\n          dataElement: 'ellipseAreaToolGroupButton',\n          title: 'annotation.areaMeasurement'\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleTools',\n          dataElement: 'shapeToolGroupButton',\n          title: 'annotation.rectangle'\n        },\n        { type: 'divider'},\n        // Undo Button\n        {\n          type: 'actionButton',\n          style: { 'marginLeft': '0px' },\n          dataElement: 'undoButton',\n          title: 'action.undo',\n          img: 'icon-operation-undo',\n          onClick: () => {\n            annotHistoryManager.undo();\n          },\n          isNotClickableSelector: () => !annotHistoryManager.canUndo()\n        },\n        // Redo Button\n        {\n          type: 'actionButton',\n          dataElement: 'redoButton',\n          title: 'action.redo',\n          img: 'icon-operation-redo',\n          onClick: () => {\n            annotHistoryManager.redo();\n          },\n          isNotClickableSelector: () => !annotHistoryManager.canRedo()\n        },\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] }\n      ]\n    })\n  }\n})\n*/\n\nimport { undoButton, redoButton } from 'helpers/commonToolbarElements';\n\nexport default store => toolbarGroup => {\n  const state = store.getState();\n\n  if (toolbarGroup.useDefaultElements) {\n    toolbarGroup.children = [\n      { type: 'spacer' },\n      ...toolbarGroup.children,\n      { type: 'divider' },\n      undoButton,\n      redoButton,\n      { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n      { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] }\n    ];\n  }\n\n  state.viewer.headers[`toolbarGroup-${toolbarGroup.dataElementSuffix}`] = toolbarGroup;\n};\n","/**\n * Sets zoom level.\n * @method UI.setZoomLevel\n * @param {(string|number)} zoomLevel Zoom level in either number or percentage.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setZoomLevel('150%'); // or setZoomLevel(1.5)\n    });\n  });\n */\n\nimport core from 'core';\nimport getActualZoomLevel from 'helpers/getActualZoomLevel';\n\nexport default zoomLevel => {\n  zoomLevel = getActualZoomLevel(zoomLevel);\n\n  if (zoomLevel) {\n    core.zoomTo(zoomLevel);\n  } else {\n    console.warn('Type of the argument for setZoomLevel must be either string or number');\n  }\n};","import actions from 'actions';\n\nexport default store => zoomList => {\n  store.dispatch(actions.setZoomList(zoomList));\n};","/**\n * Displays the custom error message\n * @method UI.showErrorMessage\n * @param {string} message An error message\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.showErrorMessage('My error message');\n  });\n * @deprecated Since version 8.0. Use [displayErrorMessage]{@link UI.displayErrorMessage} instead.\n */\n\nimport actions from 'actions';\n\nexport default store => message => {\n  console.warn('Deprecated since version 8.0. Please use displayErrorMessage instead');\n  store.dispatch(actions.showErrorMessage(message));\n};\n","import actions from 'actions';\n\n/**\n * Show outline control\n * @method UI.showOutlineControl\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.showOutlineControl();\n  });\n */\n\nexport default store => () => {\n  store.dispatch(actions.setOutlineControlVisibility(true));\n};\n","/**\n * Displays the custom error message\n * @method UI.showWarningMessage\n * @param {(string|object)} options Warning string message to display or an object for controlling the warning popup\n * @param {string} options.confirmBtnText The text that will be rendered in the confirm button\n * @param {string} options.title The title of the modal\n * @param {string} options.message The text that will rendered in the body of the modal\n * @param {function} options.onConfirm The callback function that will be invoked when the user clicks the Confirm button. The callback must return a Promise that resolves.\n * @param {function} options.onCancel The callback function that will be invoked when the user clicks the Cancel button. The callback must return a Promise that resolves.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.showWarningMessage({\n      title: 'This is my warning modal title',\n      message: 'This is the body of my modal',\n      confirmBtnText: 'Okay!',\n      onConfirm: () => {\n        console.log('The user clicked the confirm button');\n        return Promise.resolve();\n      },\n      onCancel: () => {\n        console.log('The user clicked the cancel button');\n        return Promise.resolve();\n      },\n    });\n  });\n */\nimport actions from 'actions';\n\nexport default store => options => {\n  store.dispatch(actions.showWarningMessage(options));\n};\n","import core from 'core';\n\n/**\n * Syncs the namespaces under the Core namespace for the window, this instance, as well as others instances.\n * <br/><br/>\n * This is required for interoperability between multiple instances of WebViewer since each loaded instance ends up with different class references despite sharing the same name.\n * @method UI.syncNamespaces\n * @param {WebViewerInstance | object} namespaces The object containing the namespaces that will be used for all instances. This can be a WebViewer instance or an object with the namespaces inside.\n * @param {object} [namespaces.PDFNet] The PDFNet namespace. This is probably the most common that needs to be synced.\n * @param {object} [namespaces.Actions] The Actions namespace.\n * @param {object} [namespaces.Annotations] The Annotations namespace.\n * @param {object} [namespaces.Math] The Math namespace.\n * @param {object} [namespaces.Tools] The Tools namespace.\n * @param {...WebViewerInstance} otherInstances Other instances that will share the same namespaces.\n * @example\n// Loaded PDFNet directly\nconst Core = window.Core;\nconst PDFNet = Core.PDFNet;\nCore.setWorkerPath('../../../lib/core');\nCore.enableFullPDF();\n...\nWebViewer(...)\n  .then(function(instance) {\n    // Force this instance to use the loaded PDFNet instead of the one loaded specific to this instance\n    instance.UI.syncNamespaces({ PDFNet });\n    // instance.UI.syncNamespaces({ PDFNet }, instance2, instance3);  // Alternative; instance, instance2, and instance3 will share the same PDFNet namespace.\n    ...\n  });\n */\n\nexport default (namespaces, ...otherInstances) => {\n  const instances = [window.instance, ...otherInstances];\n  if (!namespaces) {\n    namespaces = window.instance;\n  }\n  const { PDFNet, Actions, Annotations, Math, Tools } = namespaces;\n  instances.forEach(instance => {\n    if (instance && instance !== namespaces) {\n      core.syncNamespaces(namespaces);\n      if (PDFNet) {\n        instance.Core.PDFNet = PDFNet;\n        // Remove in 9.0\n        instance.CoreControls.PDFNet = instance.PDFNet = PDFNet;\n      }\n      if (Actions) {\n        instance.Core.Actions = Actions;\n        // Remove in 9.0\n        instance.CoreControls.Actions = instance.Actions = Actions;\n      }\n      if (Annotations) {\n        instance.Core.Annotations = Annotations;\n        // Remove in 9.0\n        instance.CoreControls.Annotations = instance.Annotations = Annotations;\n      }\n      if (Math) {\n        instance.Core.Math = Math;\n        // Remove in 9.0\n        instance.CoreControls.Math = instance.Math = Math;\n      }\n      if (Tools) {\n        instance.Core.Tools = Tools;\n        // Remove in 9.0\n        instance.CoreControls.Tools = instance.Tools = Tools;\n      }\n    }\n  });\n};\n","/**\n * An instance of Popup that can be used to edit items in the text popup component\n * @name UI.textPopup\n * @implements {UI.Popup}\n * @type {UI.Popup}\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    instance.UI.textPopup.someAPI();\n  });\n */\nimport createPopupAPI from 'helpers/createPopupAPI';\n\nexport default store => createPopupAPI(store, 'textPopup');","/**\n * Toggles a visibility state of the element to be visible/hidden. Note that toggleElement works only for panel/overlay/popup/modal elements.\n * @deprecated Since version 8.0. Use [toggleElementVisibility]{@link WebViewerInstance#toggleElementVisibility} instead.\n * @method UI.toggleElement\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://www.pdftron.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleElement('leftPanel'); // open LeftPanel if it is closed, or vice versa\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => dataElement => {\n  console.warn('Deprecated since version 8.0. Please use toggleElementVisibility instead');\n  store.dispatch(actions.toggleElement(dataElement));\n};\n","/**\n * Toggles full scree mode of the browser.\n * @method UI.toggleFullScreen\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleFullScreen();\n  });\n */\n\nimport toggleFullscreen from 'helpers/toggleFullscreen';\n\nexport default () => {\n  toggleFullscreen();\n};\n","/**\n * Unregisters tool in the document viewer tool mode map, and removes the button object.\n * @method UI.unregisterTool\n * @param {string} toolName Name of the tool, either from <a href='https://www.pdftron.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.unregisterTool('MyTool');\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\n\nexport default store => toolName => {\n  unregisterToolInHeader(store, toolName);\n  unregisterToolInRedux(store, toolName);\n  unregisterToolInToolModeMap(toolName);\n};\n\nconst unregisterToolInHeader = (store, toolName) => {\n  const state = store.getState();\n\n  Object.keys(state.viewer.headers).forEach(header => {\n    const headerItems = state.viewer.headers[header].filter(headerItem => headerItem.toolName !== toolName);\n\n    store.dispatch(actions.setHeaderItems(header, headerItems));\n  });\n};\n\nconst unregisterToolInRedux = (store, toolName) => {\n  store.dispatch(actions.unregisterTool(toolName));\n};\n\nconst unregisterToolInToolModeMap = toolName => {\n  delete core.getToolModeMap()[toolName];\n};","import actions from 'actions';\nimport setColorPalette from './setColorPalette';\n\n/**\n * Update an element in the viewer.\n * @method UI.updateElement\n * @param {string} dataElement the data element of the element that will be updated. Only the data element of HTML elements that have 'Button' in the class name will work.\n * @param {object} props An object that is used to override an existing item's properties.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.updateElement('thumbnailsPanelButton', {\n      img: 'path/to/image',\n      title: 'new_tooltip',\n    })\n  });\n */\nexport default store => (dataElement, overrides) => {\n  switch (dataElement) {\n    // for backwards compatibility\n    case 'colorPalette':\n      setColorPalette(store)(overrides);\n      break;\n    default:\n      if (validateButtonOverrides(overrides)) {\n        store.dispatch(actions.setCustomElementOverrides(dataElement, overrides));\n      }\n  }\n};\n\nconst validateButtonOverrides = overrides => {\n  if (overrides !== null && typeof overrides !== 'object') {\n    return console.warn(\n      'The second argument needs to be an object to update a button',\n    );\n  }\n\n  return overrides;\n};\n","import core from 'core';\nimport actions from 'actions';\n\nexport default store => () => {\n  console.warn('UI.updateOutlines is deprecated since version 8.3. Please use reloadOutline instead');\n  core.getOutlines(outlines => {\n    store.dispatch(actions.setOutlines(outlines));\n  });\n};","/**\n * Update existing tool's properties.\n * @method UI.updateTool\n * @param {string} toolName Name of the tool, either from <a href='https://www.pdftron.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @param {object} [properties] Tool properties\n * @param {string} [properties.buttonImage] Path to an image or base64 data for the tool button\n * @param {string} [properties.buttonName] Name of the tool button that will be used in data-element\n * @param {string} [properties.buttonGroup] Group of the tool button belongs to\n * @param {string} [properties.tooltip] Tooltip of the tool button\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.updateTool('AnnotationCreateSticky', {\n      buttonImage: 'https://www.pdftron.com/favicon-32x32.png'\n    });\n  });\n */\nexport default store => (toolName, properties) => {\n  store.dispatch({\n    type: 'UPDATE_TOOL',\n    payload: { toolName, properties },\n  });\n};\n","/**\n * Use/not use embedded printing. Only applicable to Chrome.\n * The printing process will be faster and the quality might be higher when using Chrome's native printing.\n * You may not want to use embedded printing if there are custom annotations in your document.\n * @method UI.useEmbeddedPrint\n * @param {boolean} [use=true] Whether or not to use embedded printing\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.useEmbeddedPrint(false); // disable embedded printing\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => useEmbeddedPrint => {\n  store.dispatch(actions.useEmbeddedPrint(useEmbeddedPrint));\n};","import touchEventManager from 'helpers/TouchEventManager';\n\n/**\n * @deprecated Since version 8.0.\n */\nexport default useNativeScroll => {\n  console.warn('Deprecated since version 8.0. Please use enableNativeScrolling and disableNativeScrolling instead');\n  touchEventManager.useNativeScroll = useNativeScroll;\n};","import actions from 'actions';\n\n/**\n * @callback SignatureFilterFunction\n * @memberof UI\n * @param {Core.Annotations.Annotation} annotation  A signature annotation found in the SignatureCreateTool saved signatures list\n * @param {number} index An optional parameter for the index of the annotaiton parameter within the SignatureCreateTool saved signatures list\n * @returns {boolean} Whether or not a signature annotation should be included in the annotation preset\n */\n\n/**\n * Accepts a function that filters what saved signatures will be displayed in the signature annotation preset. Changing this function will instantly changes signatures displayed in the preset.\n *\n * @method UI.setDisplayedSignaturesFilter\n * @param {UI.SignatureFilterFunction} filterFunction The function that will be used to filter signatrues displayed in the preset\n * @example\nWebviewer(...)\n  .then(instance => {\n    // Only signatures that have a value set for the 'isInitial' custom data property will display in the preset\n    instance.UI.setDisplayedSignaturesFilter((a) => a.getCustomData('isInitial'));\n  });\n */\nexport default store => filterFunction => {\n  store.dispatch(actions.setDisplayedSignaturesFilterFunction(filterFunction));\n};\n","/**\n * Sets the units that will be displayed in the measurement tools' styles popup\n * Valid units are: 'mm', 'cm', 'm', 'km', 'mi', 'yd', 'ft', 'in', 'pt'\n * @method UI.setMeasurementUnits\n * @param {Object} units an object which contains the from units and to units\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMeasurementUnits({\n      from: ['in', 'cm', 'm'],\n      to: ['cm', 'm', 'km']\n    });\n  });\n */\n\nexport default store => ({ from, to }) => {\n  const { measurementUnits } = store.getState().viewer;\n\n  if (!from) {\n    from = measurementUnits.from;\n  }\n  if (!to) {\n    to = measurementUnits.to;\n  }\n\n  store.dispatch({\n    type: 'SET_MEASUREMENT_UNITS',\n    payload: { from, to },\n  });\n};\n","/**\n * Set the number of signatures that can be stored in the WebViewer (default is 2)\n * @method UI.setMaxSignaturesCount\n * @param {number} [maxSignaturesCount=2] Number of signature webViewer can store\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMaxSignaturesCount(5); // allow up to 5 stored signatures\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => maxSignaturesCount => {\n  store.dispatch(actions.setMaxSignaturesCount(maxSignaturesCount));\n};","/**\n * Set the fonts that are used when typing a signature in the signature dialog.\n * @method UI.setSignatureFonts\n * @param {Array.<string>|UI.setSignatureFontsCallback} fonts An array of font families.\n * @example // 6.1\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setSignatureFonts(['GreatVibes-Regular']);\n    instance.UI.setSignatureFonts(currentFonts => [\n      ...currentFonts,\n      'sans-serif',\n    ]);\n  });\n */\n\n/**\n * @callback UI.setSignatureFontsCallback\n * @param {Array.<string>} fonts current font families\n * @returns {Array.<string>} fonts to set.\n */\n\nimport selectors from 'selectors';\n\nexport default store => arg => {\n  let fonts;\n\n  if (typeof arg === 'string') {\n    fonts = [arg];\n  }\n\n  if (Array.isArray(arg)) {\n    fonts = arg;\n  }\n\n  if (typeof arg === 'function') {\n    const currentFonts = selectors.getSignatureFonts(store.getState());\n    fonts = arg(currentFonts);\n  }\n\n  if (fonts) {\n    store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  }\n};\n","/**\n * Disable reply for annotations if the callback function returns true. The callback function gets evaluated when the Comments panel is open, an annotation is selected, and the selected annotation has a comment.\n * Only one callback function will be stored and invoked. If multiple criteria is needed to disable replies you must write them in a single callback function.\n * @method UI.disableReplyForAnnotations\n * @param {UI.disableReplyForAnnotationsCallback} isReplyDisabledCallback Callback function that returns true if reply will be disabled for the annotation passed in. False otherwise.\n * @example\n WebViewer(...)\n  .then(instance => {\n\n    // disable reply for Freehand annotations\n    instance.UI.disableReplyForAnnotations((annotation) => {\n      return annotation instanceof instance.Annotations.FreeHandAnnotation;\n    });\n\n    // disable reply for annotations authored by Guest\n    instance.UI.disableReplyForAnnotations((annotation) => {\n      return annotation['Author'] === 'Guest';\n    });\n\n    // disable reply for annotations created more than 10 seconds ago\n    instance.UI.disableReplyForAnnotations((annotation) => {\n      const createdDate = new Date(annotation['DateCreated']);\n      const todayDate = new Date();\n      return (todayDate - createdDate) > 10000;\n    });\n  });\n */\n\n/**\n * Callback that gets passed to {@link UI.disableReplyForAnnotations disableReplyForAnnotations}.\n * @callback UI.disableReplyForAnnotationsCallback\n * @param {Core.Annotations.Annotation} annotation Annotation object\n * @returns {boolean} True if replies for the annotation passed in should be disabled. False otherwise.\n */\n\nimport actions from 'actions';\n\nexport default store => isReplyDisabledFunc => {\n  store.dispatch(actions.disableReplyForAnnotations(isReplyDisabledFunc));\n};","import getHashParameters from 'helpers/getHashParameters';\n\n/**\n * A getter that returns a stringified version of the 'custom' property that is passed to the WebViewer constructor\n * <a href='https://www.pdftron.com/documentation/web/guides/config-files/#passing-custom-data' target='_blank'>Refer to the passing custom data section</a>.\n * @method UI.getCustomData\n * @returns {string} returns a stringified version of the 'custom' property that is passed to the WebViewer constructor\n */\nexport default () => getHashParameters('custom', null);","import action from 'actions';\n\n/**\n * Adds a custom overlay to annotations if that annotation currently support it. Currently only the Ellipsis annotation supports it.\n * @method UI.setCustomMeasurementOverlay\n * @param {array} customOverlayInfo an array of customOverlay configurations. The configuration object has five properties: title, label, validate, value, and onChange\n * @example\nWebViewer(...)\n  .then(function(instance) {\n      instance.UI.setCustomMeasurementOverlayInfo([\n      {\n        title: \"Radius Measurement\", //Title for overlay\n        label: \"Radius\", // Label to be shown for the value\n        // Validate is a function to validate the annotation is valid for the current custom overlay\n        validate: annotation => annotation instanceof instance.Annotations.EllipseAnnotation,\n        // The value to be shown in the custom overlay\n        value: annotation => annotation.Width / 2,\n        // onChange will be called whenever the value in the overlay changes from user input\n        onChange: (e, annotation) => {\n          // Do something with the annot like resize/redraw\n          instance.Core.annotationManager.redrawAnnotation(annotation);\n        }\n      }\n    ])\n  });\n */\n\nexport default store => customOverlayInfo => {\n  store.dispatch(action.setCustomMeasurementOverlay(customOverlayInfo));\n};\n","import actions from 'actions';\n\n/**\n * @callback NoteTransformFunction\n * @memberof UI\n * @param {HTMLElement} wrapperElement  A reference to the DOM node that wraps the note. You can use this to query select child elements to mutate (see the examples below)\n * @param {object} state The state of the note. Contains two properties, 'annotation' and 'isSelected'\n * @param {Core.Annotations.Annotation} state.annotation A reference to the annotation object associated with the note\n * @param {boolean} state.isSelected whether or not the note is currently expanded\n * @param {function} createElement A utility function that should be used when creating DOM nodes. This is a replacement for `document.createElement`.\n * Accepts the same parameters as `document.createElement`. Using document.createElement instead of this function will cause your DOM nodes to not be cleaned up on subsequent renders.\n */\n\n/**\n * Accepts a function that will be called every time a note in the left panel is rendered.\n * This function can be used to add, edit or hide the contents of the note.\n * <br><br>\n * <span style='font-size: 18px'><b>Please carefully read the documentation and the notes below before using this API</b></span><br><br>\n *\n * <b>This API is experimental and should be used sparingly.</b> If you find you are heavily relying on this function,\n *  it is recommended that you <a href='https://www.pdftron.com/documentation/web/guides/advanced-customization/'>fork the UI repo</a> and make the changes directly in the source code (Note.js).\n * <br><br>\n *\n *\n * The structure of the HTML that is passed into this function may change may change without notice in any release. <b>Please make sure\n * to test this function thoroughly when upgrading WebViewer versions.</b>\n * <br><br>\n *\n *\n *  There may be unexpected behaviour when using this API. The HTML that is provided is controlled by React, and sometimes React will override any changes you make.\n *  If you find any unexpected behaviour when using this API, then this API probably won't work for your use case and you will have to make the changes directly in the source code.\n * <br><br>\n *\n *  <b>Do not use document.createElement to create DOM elements</b>. Instead, use the provided `createElement` utility function provided as the third parameter.\n *\n *  <b>Do not use HTMLElement.removeChild or any other APIs that remove elements from the DOM.</b> Doing so will cause React to lose reference to this node, and will crash.\n *  If you need to hide an HTML element, set the style to `display: none` instead.\n * <br><br>\n * @method UI.dangerouslySetNoteTransformFunction\n * @param {UI.NoteTransformFunction} noteTransformFunction The function that will be used to transform notes in the left panel\n * @example\nWebviewer(...)\n  .then(instance => {\n    instance.UI.dangerouslySetNoteTransformFunction((wrapper, state, createElement) => {\n      // Change the title of every note\n      wrapper.querySelector('.author-and-time>span').innerHTML = 'My custom note title';\n\n      // Add a button that alerts the user when clicked\n      const button = createElement('button');\n      button.onmousedown = (e) => {\n        if(state.isSelected) {\n          alert('Hello world!');\n        } else {\n          alert('Goodbye world!');\n        }\n      };\n      button.innerHTML = 'Alert me'\n      wrapper.appendChild(button);\n\n      // Add a button that makes the annotation blue\n      const button = createElement('button');\n      button.onmousedown = (e) => {\n        state.annotation.StrokeColor = new instance.Annotations.Color(0, 0, 255);\n        instance.UI.annotManager.redrawAnnotation(state.annotation)\n      };\n      button.innerHTML = 'Make me blue'\n      wrapper.appendChild(button);\n    })\n  });\n */\nexport default store => noteTransformFunction => {\n  store.dispatch(actions.setNoteTransformFunction(noteTransformFunction));\n};","import actions from 'actions';\n\n/**\n * @callback CustomNoteSelectionFunction\n * @memberof UI\n * @param {Core.Annotations.Annotation} annotation A reference to the annotation object associated with the note\n */\n\n/**\n * @method UI.setCustomNoteSelectionFunction\n * @param {UI.CustomNoteSelectionFunction} customNoteSelectionFunction The function that will be invoked when clicking on a note in notes panel.\n * The function will only be invoked when the underlying annotation is not already selected.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomNoteSelectionFunction(annotation => {\n      // some code\n    })\n  });\n */\n\nexport default store => customNoteSelectionFunction => {\n  store.dispatch(actions.setCustomNoteSelectionFunction(customNoteSelectionFunction));\n};","import actions from 'actions';\n\n/**\n * @callback CustomApplyRedactionsHandler\n * @memberof UI\n * @param {Array.<Core.Annotations.Annotation>} annotations\n * @param {function} originalApplyRedactionsFunction The original applyRedactions function\n */\n\n/**\n * @method UI.setCustomApplyRedactionsHandler\n * @param {UI.CustomApplyRedactionsHandler} customApplyRedactionsHandler\n * The function that will be invoked when clicking on the 'Redact All' button.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomApplyRedactionsHandler((annotationsToRedact, originalApplyRedactionsFunction) => {\n      // custom code\n      ...\n      originalApplyRedactionsFunction();\n    })\n  });\n */\n\nexport default store => customApplyRedactionsHandler => {\n  store.dispatch(actions.setCustomApplyRedactionsHandler(customApplyRedactionsHandler));\n};","/**\n * Select thumbnails in the thumbnail panel. This requires the \"ThumbnailMultiselect\" feature to be enabled\n * @method UI.selectThumbnailPages\n * @param {Array<number>} pageNumbers array of page numbers to select\n * @example // 6.1 and after\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableFeatures(['ThumbnailMultiselect']);\n\n    const pageNumbersToSelect = [1, 2, 3];\n    instance.UI.selectThumbnailPages(pageNumbersToSelect);\n  });\n */\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\n\nexport default store => pageNumbers => {\n  console.warn('UI.selectThumbnailPages is deprecated since version 8.5. Please use UI.ThumbnailsPanel.selectPages instead');\n  const selectedIndex = selectors.getSelectedThumbnailPageIndexes(store.getState());\n  const selectedPages = selectedIndex.map(index => index + 1);\n\n  const pageCount = core.getTotalPages();\n  const mutliSelectEnable = selectors.isThumbnailMultiselectEnabled(store.getState());\n\n  if (!mutliSelectEnable) {\n    console.warn(`Thumbnail multiselect is not enabled`);\n    return;\n  }\n\n  if (!pageNumbers || !Array.isArray(pageNumbers)) {\n    console.warn(`Invalid input, 'selectThumbnailPages' expect an array of numbers`);\n    return;\n  }\n\n  const alreadySelected = pageNumbers.filter(pageNumber => selectedPages.includes(pageNumber));\n  if (alreadySelected.length) {\n    console.warn(`The following pages were already selected: ${alreadySelected.join(', ')}`);\n  }\n\n  const outOfRangePages = pageNumbers.filter(pageNumber => pageNumber < 1 || pageNumber > pageCount);\n  if (outOfRangePages.length) {\n    console.warn(`The following pages are out of range: ${outOfRangePages.join(', ')}`);\n  }\n\n  let pagesToSelect = pageNumbers.filter(pageNumber => pageNumber >= 1 && pageNumber <= pageCount && !selectedPages.includes(pageNumber) && !isNaN(pageNumber));\n\n  pagesToSelect = pagesToSelect.filter(function(page, index, self) {\n    return self.indexOf(page) === index;\n  });\n\n  store.dispatch(actions.setSelectedPageThumbnails([...selectedIndex, ...pagesToSelect.map(page => page - 1)]));\n};","/**\n * Unselect selected thumbnails\n * @method UI.unselectThumbnailPages\n * @param {Array<number>} pageNumbers array of page numbers to unselect\n * @example // 6.1 and after\nWebViewer(...)\n  .then(function(instance) {\n    const pageNumbersToUnselect = [1, 2];\n    instance.UI.unselectThumbnailPages(pageNumbersToUnselect);\n  });\n */\nimport selectors from 'selectors';\nimport actions from 'actions';\n\nexport default store => pageNumbers => {\n  console.warn('UI.unselectThumbnailPages is deprecated since version 8.5. Please use UI.ThumbnailsPanel.unselectPages instead');\n  const selectedIndex = selectors.getSelectedThumbnailPageIndexes(store.getState());\n\n  if (!pageNumbers || !Array.isArray(pageNumbers)) {\n    console.warn(`Invalid input, 'unselectThumbnailPages' expect an array of numbers`);\n    return;\n  }\n\n  store.dispatch(actions.setSelectedPageThumbnails(selectedIndex.filter(i => !pageNumbers.includes(i + 1))));\n};","import core from 'core';\r\n\r\nexport default results => {\r\n  core.clearSearchResults();\r\n  core.displayAdditionalSearchResults(results);\r\n};\r\n","import core from 'core';\n\nexport default (result, index) => {\n  if (!result && index >= 0) {\n    // core doesn't have concept of active result index. In previous implementation,\n    // there is theoretically a case where not setting result, but passing index and that should have worked\n    // To have backward compatibility here, we check if user didn't give result and then try to use index\n    // to retrieve result object from all current search results and set that as new active search result\n    const searchResults = core.getPageSearchResults();\n    const newActiveResult = searchResults[index];\n    if (newActiveResult) {\n      core.setActiveSearchResult(newActiveResult);\n    }\n  } else {\n    core.setActiveSearchResult(result);\n  }\n};\n","import action from 'actions';\n\n/**\n * Adds a custom overlay to annotations on mouseHover, overriding the existing overlay.\n * @method UI.setAnnotationContentOverlayHandler\n * @param {function} customOverlayHandler A function that takes an annotation and returns a DOM Element, which is rendered as a tooltip when hovering over the annotation. Returning null or false will render nothing. Returning 'undefined' will use default behavior.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setAnnotationContentOverlayHandler(annotation => {\n        const div = document.createElement('div');\n        div.appendChild(document.createTextNode(`Created by: ${annotation.Author}`));\n        div.appendChild(document.createElement('br'));\n        div.appendChild(document.createTextNode(`Created on ${annotation.DateCreated}`));\n        return div;\n    });\n  });\n */\n\nexport default store => annotationContentOverlayHandler => {\n  store.dispatch(action.setAnnotationContentOverlayHandler(annotationContentOverlayHandler));\n};","import { overrideSearchExecution as overrideSearchExecutionHelper } from 'helpers/search';\n\n/**\n * Add custom override function for default search on UI.\n * overrideSearchExecutionCallback function will be executed with search value and search options\n * when user executes search from UI. This function won't be executed when search is triggered through programmatic searches.\n * @method UI.overrideSearchExecution\n * @param {function} overrideSearchExecutionCallback Function that will executed instead of default search functionality.\n * @example\n WebViewer(...)\n .then(function(instance) {\n    function searchFn(searchValue, options) {\n      console.log(searchValue, options);\n    };\n\n    instance.UI.overrideSearchExecution(searchFn);\n  });\n */\nexport default function overrideSearchExecution(overrideSearchExecutionCallback) {\n  overrideSearchExecutionHelper(overrideSearchExecutionCallback);\n}\n","import React from 'react';\nimport PageNavOverlay from 'src/components/PageNavOverlay';\n\nexport default {\n  getPageNavOverlay: () => <PageNavOverlay dataElement=\"customPageNavOverlay\"/>,\n};","import actions from 'actions';\n\n/**\n * NOTE: Digital Signature Verification requires the WebViewer Full API\n * @namespace UI.VerificationOptions\n */\n\n/**\n * Loads the Public Key Certificates to be used for Digital Signature\n * Verification.\n *\n * The contents of the X.509 Public Key Certificate need to encoded in a binary\n * Distinguished Encoding Rules (DER) format, or in the plaintext\n * Privacy-Enhanced Mail (PEM) format, which includes an appropriate header,\n * Base64 encoded DER representing the public key certificate, and appropriate\n * footer.\n * @method UI.VerificationOptions.addTrustedCertificates\n *\n * @param {\n *  Array<\n *    string | File | ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray\n *  >\n * } certificates An array of URLs, and/or instance of the File type, and/or\n * a Binary Array datatype that contain the X.509 Public Key Certificates to be\n * used for validating Digital Signatures on a document.\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *   const response = await fetch(\n *     'https://mydomain.com/api/returns/certificate/as/arraybuffer'\n *   );\n *   const certificateAsArrayBuffer = await response.arrayBuffer();\n *   instance.UI.VerificationOptions.addTrustedCertificates([\n *      certificateAsArrayBuffer,\n *     'https://mydomain.com/path/to/certificate1.cer',\n *     'https://mydomain.com/path/to/certificate2.crt',\n *   ])\n * });\n */\nconst addTrustedCertificates = store => certificates => {\n  store.dispatch(actions.addTrustedCertificates(certificates));\n};\n\n/**\n * Loads a Trust List to be used for Digital Signature Verification.\n *\n * The Trust List is structured in Acrobat's FDF Data/Cert Exchange format into\n * the VerificationOptions certificate store.\n *\n * Certificates inside the FDF trust list that cannot be decoded and loaded,\n * will be skipped.\n * @method UI.VerificationOptions.loadTrustList\n *\n * @param {Blob | ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray} TrustList\n * A buffer representation of FDF Certificate Exchange Data\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *   const response = await fetch(\n *     'https://mydomain.com/api/returns/trustList/'\n *   );\n *   const trustListAsArrayBuffer = await response.arrayBuffer();\n *   instance.UI.VerificationOptions.loadTrustList(trustListAsArrayBuffer);\n * });\n */\nconst loadTrustList = store => trustList => {\n  store.dispatch(actions.addTrustList(trustList));\n};\n\nexport {\n  addTrustedCertificates,\n  loadTrustList,\n};\n","import actions from 'actions';\n\n/**\n * @namespace UI.NotesPanel\n */\n\n/**\n * Enables the collapsing of the annotation's text in the Notes Panel.\n *\n * @method UI.NotesPanel.enableTextCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.enableTextCollapse()\n *\n * });\n */\nconst enableTextCollapse = store => () => {\n  store.dispatch(actions.setNotesPanelTextCollapsing(true));\n};\n\n/**\n * Disables the collapsing of the annotation's text in the Notes Panel.\n *\n * @method UI.NotesPanel.disableTextCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.disableTextCollapse()\n * });\n */\nconst disableTextCollapse = store => () => {\n  store.dispatch(actions.setNotesPanelTextCollapsing(false));\n};\n\n/**\n * Enables the collapsing of the replies in the Notes Panel.\n *\n * @method UI.NotesPanel.enableReplyCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.enableReplyCollapse()\n * });\n */\nconst enableReplyCollapse = store => () => {\n  store.dispatch(actions.setNotesPanelRepliesCollapsing(true));\n};\n\n/**\n * Disables the collapsing of the replies in the Notes Panel.\n *\n * @method UI.NotesPanel.disableReplyCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.disableReplyCollapse()\n * });\n */\nconst disableReplyCollapse = store => () => {\n  store.dispatch(actions.setNotesPanelRepliesCollapsing(false));\n};\n\n/**\n * Disables the automatic expansion of all the comments threads in the Notes Panel.\n *\n * @method UI.NotesPanel.disableAutoExpandCommentThread\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.disableAutoExpandCommentThread()\n * });\n */\nconst disableAutoExpandCommentThread = store => () => {\n  store.dispatch(actions.setCommentThreadExpansion(false));\n};\n\n/**\n * Enables the automatic expansion of the comments threads in the Notes Panel.\n *\n * @method UI.NotesPanel.enableAutoExpandCommentThread\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.enableAutoExpandCommentThread()\n * });\n */\nconst enableAutoExpandCommentThread = store => () => {\n  store.dispatch(actions.setCommentThreadExpansion(true));\n};\n\nexport {\n  enableTextCollapse,\n  disableTextCollapse,\n  enableReplyCollapse,\n  disableReplyCollapse,\n  disableAutoExpandCommentThread,\n  enableAutoExpandCommentThread\n};\n","import selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport thumbnailSelectionModes from 'constants/thumbnailSelectionModes';\n\n/**\n * @namespace UI.ThumbnailsPanel\n */\n\n/**\n * Enable multi select in the left thumbnail panel\n * @method UI.ThumbnailsPanel.enableMultiselect\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.enableMultiselect();\n  });\n */\nconst enableMultiselect = store => () => {\n  store.dispatch(actions.setThumbnailSelectingPages(true));\n};\n\n/**\n * Disable multi select in the left thumbnail panel\n * @method UI.ThumbnailsPanel.disableMultiselect\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.disableMultiselect();\n  });\n */\nconst disableMultiselect = store => () => {\n  store.dispatch(actions.setThumbnailSelectingPages(false));\n};\n\n/**\n * Select thumbnails in the thumbnail panel. This requires the \"ThumbnailMultiselect\" feature to be enabled\n * @method UI.ThumbnailsPanel.selectPages\n * @param {Array<number>} pageNumbers array of page numbers to select\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableFeatures(['ThumbnailMultiselect']);\n\n    const pageNumbersToSelect = [1, 2, 3];\n    instance.UI.ThumbnailsPanel.selectPages(pageNumbersToSelect);\n  });\n */\nconst selectPages = store => pageNumbers => {\n  const multiSelectEnable = selectors.isThumbnailMultiselectEnabled(store.getState());\n\n  if (!multiSelectEnable) {\n    console.warn(`Thumbnail multiselect is not enabled`);\n    return;\n  }\n\n  if (!pageNumbers || !Array.isArray(pageNumbers)) {\n    console.warn(`Invalid input, 'selectThumbnailPages' expect an array of numbers`);\n    return;\n  }\n\n  const selectedIndex = selectors.getSelectedThumbnailPageIndexes(store.getState());\n  const selectedPages = selectedIndex.map(index => index + 1);\n\n  const pageCount = core.getTotalPages();\n  const alreadySelected = pageNumbers.filter(pageNumber => selectedPages.includes(pageNumber));\n  if (alreadySelected.length) {\n    console.warn(`The following pages were already selected: ${alreadySelected.join(', ')}`);\n  }\n\n  const outOfRangePages = pageNumbers.filter(pageNumber => pageNumber < 1 || pageNumber > pageCount);\n  if (outOfRangePages.length) {\n    console.warn(`The following pages are out of range: ${outOfRangePages.join(', ')}`);\n  }\n\n  let pagesToSelect = pageNumbers.filter(\n    pageNumber =>\n      pageNumber >= 1 && pageNumber <= pageCount && !selectedPages.includes(pageNumber) && !isNaN(pageNumber),\n  );\n\n  pagesToSelect = pagesToSelect.filter(function(page, index, self) {\n    return self.indexOf(page) === index;\n  });\n\n  store.dispatch(actions.setSelectedPageThumbnails([...selectedIndex, ...pagesToSelect.map(page => page - 1)]));\n};\n\n/**\n * Unselect selected thumbnails\n * @method UI.ThumbnailsPanel.unselectPages\n * @param {Array<number>} pageNumbers array of page numbers to unselect\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const pageNumbersToUnselect = [1, 2];\n    instance.UI.ThumbnailsPanel.unselectPages(pageNumbersToUnselect);\n  });\n */\nconst unselectPages = store => () => {\n  store.dispatch(actions.setNotesPanelRepliesCollapsing(false));\n};\n\n/**\n * Get the currently selected pages\n * @method UI.ThumbnailsPanel.getSelectedPageNumbers\n * @return {Array<number>} an array of select page numbers\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.getSelectedPageNumbers();\n  });\n */\nconst getSelectedPageNumbers = store => () =>\n  selectors.getSelectedThumbnailPageIndexes(store.getState()).map(pageIndex => pageIndex + 1);\n\n/**\n * Sets thumbnail selection mode.\n * @method UI.ThumbnailsPanel.setThumbnailSelectionMode\n * @param {string} thumbnailSelectionMode Thumbnail selection mode to set\n * @param {string} thumbnailSelectionMode.thumbnail Set selection mode to use entire thumbnail to select a page\n * @param {string} thumbnailSelectionMode.checkbox (default) Set selection mode to use only checkbox to select a page\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.setThumbnailSelectionMode('thumbnail');\n  });\n */\n\nconst setThumbnailSelectionMode = store => thumbnailSelectionMode => {\n  if (Object.values(thumbnailSelectionModes).indexOf(thumbnailSelectionMode) > -1) {\n    store.dispatch(actions.setThumbnailSelectionMode(thumbnailSelectionMode));\n  } else {\n    console.error(`Thumbnail Selection Mode must be one of: \"${Object.values(thumbnailSelectionModes).join('\", \"')}\"`);\n  }\n};\n\nexport {\n  enableMultiselect,\n  disableMultiselect,\n  selectPages,\n  unselectPages,\n  getSelectedPageNumbers,\n  setThumbnailSelectionMode,\n};\n","/**\n * Toggles Reader mode of the viewer.\n * Note that Reader mode only works with fullAPI enabled.\n * @method UI.toggleReaderMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleReaderMode();\n  });\n */\n\nimport { enterReaderMode, exitReaderMode } from 'helpers/readerMode';\nimport core from 'core';\nimport selectors from 'selectors';\n\nlet previousDisplayMode;\n\nexport default store => () => {\n  const isInReaderMode = selectors.isReaderMode(store.getState());\n  if (isInReaderMode) {\n    exitReaderMode(store);\n    if (previousDisplayMode) {\n      setTimeout(() => {\n        core.setDisplayMode(previousDisplayMode);\n        previousDisplayMode = undefined;\n      });\n    }\n  } else {\n    previousDisplayMode = core.getDisplayMode();\n    enterReaderMode(store);\n  }\n};\n","/**\n * Toggles the visibility of the element to be visible/hidden. Note that toggleElementVisibility works only for panel/overlay/popup/modal elements.\n * @method UI.toggleElementVisibility\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://www.pdftron.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleElementVisibility('leftPanel'); // open LeftPanel if it is closed, or vice versa\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => dataElement => {\n  store.dispatch(actions.toggleElement(dataElement));\n};\n","import actions from 'actions';\n\n/**\n * Set the read/unread state of an annotation. The default state of annotations is read.\n * @method UI.setAnnotationReadState\n * @param {object} options\n * @param {boolean} options.isRead whether setting the annotation to read state; false for setting it as unread.\n * @param {string} options.annotationId Id of the annotation to be set.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setAnnotationReadState({ isRead: true, annotationId: 'test-annotation-id' });\n  });\n */\nexport default store => ({ isRead, annotationId }) => {\n  if (typeof annotationId !== 'string') {\n    console.warn('Invalid annotation ID');\n    return;\n  }\n  store.dispatch(actions.setAnnotationReadState({ isRead, annotationId }));\n};\n","import selectors from 'selectors';\nimport core from 'core';\n\n/**\n * Return the read/unread state of an annotation. True for read, false for unread.\n * @method UI.getAnnotationReadState\n * @param {string} annotationId Id of the annotation.\n * @return {boolean} Whether the annotation is read.\n * @throws Will throw an error if the annotation with the given ID does not exist.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const isAnnotationRead = instance.UI.getAnnotationReadState('test-annotation-id');\n */\nexport default store => annotationId => {\n  if (typeof annotationId !== 'string') {\n    console.warn('Invalid annotation ID');\n    return;\n  }\n  const annotation = core.getAnnotationManager().getAnnotationById(annotationId);\n  if (!annotation) {\n    throw new Error(`Annotation with ID ${annotationId} not found.`);\n  }\n  const unreadAnnotationIdSet = selectors.getUnreadAnnotationIdSet(store.getState());\n  return unreadAnnotationIdSet.has(annotationId);\n};\n","import actions from 'actions';\n\n/**\n * Enable clearing search results when user closes search panel. When this is enabled and user closes search panel\n * all search results are cleared.\n *\n * Note, mobile devices never clear search results even if this setting is enabled. This is because the panel needs to be closed to view the search results on the document.\n * @method UI.enableClearSearchOnPanelClose\n * @example\n WebViewer(...)\n .then(function(instance) {\n    // Will not affect on mobile devices\n    instance.UI.enableClearSearchOnPanelClose();\n  });\n */\nfunction enableClearSearchOnPanelCloseClosure(store) {\n  return function enableClearSearchOnPanelClose() {\n    const shouldClear = true;\n    store.dispatch(actions.setClearSearchOnPanelClose(shouldClear));\n  };\n}\n\nexport default enableClearSearchOnPanelCloseClosure;\n","import actions from 'actions';\n\n/**\n * Disable clearing search results when user closes search panel. When disabled, search results are kept even if user\n * closes and reopens search panel.\n *\n * Note, mobile devices never clear search results even if this setting is enabled. This is because the panel needs to be closed to view the search results on the document.\n * @method UI.disableClearSearchOnPanelClose\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disableClearSearchOnPanelClose();\n  });\n */\nfunction disableClearSearchOnPanelCloseClosure(store) {\n  return function disableClearSearchOnPanelClose() {\n    const shouldClear = false;\n    store.dispatch(actions.setClearSearchOnPanelClose(shouldClear));\n  };\n}\n\nexport default disableClearSearchOnPanelCloseClosure;\n","/**\n * Always keep the Page Navigation Component on screen. Default behaviour is to fade it after certain period of inactivity.\n * @method UI.disableFadePageNavigationComponent\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Keeps the page navigation component on screen all the time\n    instance.UI.disableFadePageNavigationComponent();\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => () => {\n  return store.dispatch(actions.disableFadePageNavigationComponent());\n};","/**\n * Fade the Page Navigation Component after it has not been interacted with. Reappears whenever the document is scrolled.\n * @method UI.enableFadePageNavigationComponent\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Sets behaviour to fade the page navigation component.\n    // enabled by default\n    instance.UI.enableFadePageNavigationComponent();\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => () => {\n  return store.dispatch(actions.enableFadePageNavigationComponent());\n};","import actions from 'actions';\n\n/**\n * Disable the confirmation modal when deleting a page from the thumbnail view\n *\n * @method UI.disablePageDeletionConfirmationModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disablePageDeletionConfirmationModal();\n  });\n */\nfunction disablePageDeletionConfirmationModal(store) {\n  return function disablePageDeletionConfirmationModal() {\n    store.dispatch(actions.disablePageDeletionConfirmationModal());\n  };\n}\n\nexport default disablePageDeletionConfirmationModal;\n","import actions from 'actions';\n\n/**\n * Enable the confirmation modal when deleting a page from the thumbnail view\n *\n * @method UI.enablePageDeletionConfirmationModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.enablePageDeletionConfirmationModal();\n  });\n */\nfunction enablePageDeletionConfirmationModal(store) {\n  return function enablePageDeletionConfirmationModal() {\n    store.dispatch(actions.enablePageDeletionConfirmationModal());\n  };\n}\n\nexport default enablePageDeletionConfirmationModal;\n","/**\n * Add an event listener for the given WebViewer UI event.\n * @method UI.addEventListener\n * @param {string} eventName UI event name.\n * @param {function} listener Callback function that will be invoked when the event is dispatched.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addEventListener(instance.UI.Events.ANNOTATION_FILTER_CHANGED, e => {\n      const { types, authors, colors } = e.detail;\n      console.log(types, authors, colors);\n    });\n  });\n */\n\nimport Events from 'constants/events';\n\nexport default (eventName, listener) => {\n  if (eventName === Events.FINISHED_SAVING_PDF) {\n    console.warn('FINISHED_SAVING_PDF is deprecated since version 8.3. Please use FILE_DOWNLOADED instead.');\n  }\n  window.addEventListener(eventName, listener);\n};\n","/**\n * \"Remove an event listener for the given WebViewer UI event.\n * @method UI.removeEventListener\n * @param {string} eventName UI event name.\n * @param {function} listener Event handler function that should no longer be bound to the event.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const listener = e => {\n      const { types, authors, colors } = e.detail;\n      console.log(types, authors, colors);\n\n      instance.UI.removeEventListener(instance.UI.Events.ANNOTATION_FILTER_CHANGED, listener);\n    };\n    instance.UI.addEventListener(instance.UI.Events.ANNOTATION_FILTER_CHANGED, listener);\n  });\n */\n\nexport default (eventName, listener) => {\n  window.removeEventListener(eventName, listener);\n};\n","import actions from 'actions';\n/**\n * Enables desktop only mode on WebViewer UI.\n * This means that at small browser width/height, mobile/tablet CSS styling will not be applied.\n * @method UI.enableDesktopOnlyMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableDesktopOnlyMode();\n  });\n */\nexport default store => () => {\n  store.dispatch(actions.setEnableDesktopOnlyMode(true));\n};\n","import actions from 'actions';\n/**\n * Disables desktop only mode on WebViewer UI.\n * This means that at small browser width/height, mobile/tablet CSS styling will be applied.\n * @method UI.disableDesktopOnlyMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableDesktopOnlyMode();\n  });\n */\nexport default store => () => {\n  store.dispatch(actions.setEnableDesktopOnlyMode(false));\n};\n","import selectors from 'selectors';\n/**\n * Returns a boolean to denote if the UI is in desktop only mode.\n * @method UI.isInDesktopOnlyMode\n * @return {boolean} boolean to denote if the UI is in desktop only mode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.isInDesktopOnlyMode();\n  });\n */\nexport default store => () => {\n  return selectors.isInDesktopOnlyMode(store.getState());\n};\n","/**\n * An  instance of PageManipulationsOverlay that can be used to edit the items included in the overlay\n * @name UI.pageManipulationsOverlay\n * @implements {UI.PageManipulationOverlay}\n * @type {UI.PageManipulationOverlay}\n * @example\n WebViewer(...)\n  .then(function (instance) {\n    instance.UI.pageManipulationOverlay.someAPI();\n  })\n */\n\n/**\n * A class which contains PageManipulationOverlay APIs. <br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in the PageManipulationOverlay, use {@link UI.disableElements disableElements}.\n * @interface UI.PageManipulationOverlay\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default store => Object.create(PageManipulationOverlayAPI).initialize(store);\n\nconst PageManipulationOverlayAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * @typedef UI.PageManipulationOverlay.PageManipulationSection\n   * @type {object}\n   * @property {string} type Required type of 'customPageOperation'\n   * @property {string} header Header to be displayed in the UI for this section\n   * @property {string} dataElement Unique dataElement\n   * @property {UI.PageManipulationOverlay.PageOperation[]} operations the operations that will be available under this section\n   */\n  /**\n   * @typedef UI.PageManipulationOverlay.PageOperation\n   * @type {object}\n   * @property {string} title Title to be displayed for the operation\n   * @property {string} img path to imge to be used as an icon for the operation\n   * @property {function} onClick onClick handler, which takes as a parameter an array of selected page numbers\n   * @property {string} dataElement Unique dataElement for this operation\n   */\n  /**\n   * Adds an array of page manipulation operations to the default operations. If passed a dataElement parameter, it will\n   * add the new operations after this element. Otherwise, they will be appended to the start of the existing list\n   * of operations.\n   * @method UI.PageManipulationOverlay#add\n   * @param {Array.<UI.PageManipulationOverlay.PageManipulationSection>} PageManipulationSection Array of sections to be added, each with its individual operations. See example below.\n   * @param {('pageRotationControls' | 'pageInsertionControls' | 'pageManipulationControls')} [dataElementToInsertAfter] An optional string that determines where in the overlay the new section will be added. If not included, the new page manipulation section will be added at the top.\n   * You can call {@link UI.PageManipulationOverlay#getItems getItems} to get existing items and their dataElements.\n   * @returns {UI.PageManipulationOverlay} The instance itself\n   * @example\n   * // Each object in the operations array shall consist of the following:\n    {\n      type: 'customPageOperation', // Required type of 'customPageOperation'\n      header: 'Custom options', // Header to be displayed in the UI\n      dataElement: 'customPageOperations', // Unique dataElement\n      // Each new section can have one more more operations.\n      // The onClick handler for each operation gets passed an array of the currently selected\n      // thumbnail page numbers.\n      operations: [\n        {\n          title: 'Alert me of selected thumbnail page numbers',\n          img: '/path-to-image',\n          onClick: (selectedPageNumbers) => {\n            alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n          },\n          dataElement: 'customPageOperationButton', // Each operation must have a dataElement\n        }\n      ]\n    }\n\n    // Additionally, to add dividers you can include this in the operations array:\n    { type: 'divider' }\n    // Example:\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.pageManipulationOverlay.add([\n          {\n            type: 'customPageOperation',\n            header: 'Custom options',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Alert me',\n                img: '/path-to-image',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'customPageOperationButton',\n              }\n            ]\n          },\n          { type: 'divider' }\n        ]);\n      });\n   */\n  add(operations, dataElementToInsertAfter) {\n    if (!operations || operations.length === 0) {\n      return;\n    }\n\n    if (!Array.isArray(operations)) {\n      operations = [operations];\n    }\n\n    const index = this._getIndexByDataElement(dataElementToInsertAfter);\n    const items = this.getItems();\n\n    items.splice(index + 1, 0, ...operations);\n\n    this.store.dispatch(actions.setPageManipulationOverlayItems(items));\n\n    return this;\n  },\n\n  /**\n   * Update all the operations in the PageManipulationOverlay, essentially replacing them with\n   * a new list of operations.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.PageManipulationOverlay#update\n   * @param {Array.<UI.PageManipulationOverlay.PageManipulationSection>} PageManipulationSection The list of PageManipulationSections that will be rendered in the PageManipulation overlay. See the add documentation for an example.\n   * @returns {UI.PageManipulationOverlay} The instance of itself\n   * @example\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.pageManipulationOverlay.update([\n          {\n            type: 'customPageOperation',\n            header: 'Print Operations',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Print page',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'printThumbnailPage',\n              }\n            ]\n          },\n          { type: 'divider' },\n          {\n            type: 'customPageOperation',\n            header: 'Alert Operations',\n            dataElement: 'customPageOperations-2',\n            operations: [\n              {\n                title: 'Alert me',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'alertPage',\n              }\n            ]\n          }\n        ]);\n      });\n   */\n  update(operations) {\n    if (!operations) {\n      operations = [];\n    }\n    this.store.dispatch(actions.setPageManipulationOverlayItems(operations));\n\n    return this;\n  },\n\n  /**\n   * Return the array of items in the PageManipulationOverlay.\n   * @method UI.PageManipulationOverlay#getItems\n   * @returns {Array.<UI.PageManipulationOverlay.PageManipulationSection>} Current items in the PageManipulationOverlay.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.pageManipulationOverlay.getItems();\n  });\n   */\n  getItems() {\n    return [...selectors.getPageManipulationOverlayItems(this.store.getState())];\n  },\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getPageManipulationOverlayItems(state).findIndex(obj => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n};\n","/**\n * An  instance of ThumbnailControlMenu that can be used to edit the items included in the thumbnail menu overlay\n * @name UI.thumbnailControlMenu\n * @implements {UI.ThumbnailControlMenu}\n * @type {UI.ThumbnailControlMenu}\n * @example\n WebViewer(...)\n  .then(function (instance) {\n    instance.UI.thumbnailControlMenu.someAPI();\n  })\n */\n/**\n * A class which contains ThumbnailControlMenu APIs. <br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in the ThumbnailControlMenu, use {@link UI.disableElements disableElements}.\n * @interface UI.ThumbnailControlMenu\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default store => Object.create(ThumbnailControlMenuAPI).initialize(store);\n\nconst ThumbnailControlMenuAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n\n  /**\n   * @typedef UI.ThumbnailControlMenu.MenuItem\n   * @type {object}\n   * @property {string} title Title to be displayed for the operation\n   * @property {string} img path to image to be used as an icon for the operation\n   * @property {function} onClick onClick handler, which takes as a parameter an array of selected page numbers\n   * @property {string} dataElement Unique dataElement for this operation\n   */\n\n  /**\n   * Adds an array of thumbnail menu buttons to the default menu. If passed a dataElement parameter, it will\n   * add the new menu buttons after this element. Otherwise, they will be appended to the start of the existing list\n   * of buttons.\n   * @method UI.ThumbnailControlMenu#add\n   * @param {Array.<UI.ThumbnailControlMenu.MenuItem>} MenuItem Array of buttons to be added, each with its individual operations. See example below.\n   * @param {('thumbRotateClockwise' | 'thumbDelete' )} [dataElementToInsertAfter] An optional string that determines where in the overlay the new section will be added. If not included, the new page manipulation section will be added at the top.\n   * You can call {@link UI.ThumbnailControlMenu#getItems getItems} to get existing items and their dataElements.\n   * @returns {UI.ThumbnailControlMenu} The instance itself\n   * @example\n      WebViewer(...)\n      .then(function (instance) {\n        instance.UI.thumbnailControlMenu.add([\n          {\n            title: 'alertme',\n            img: 'data:image/png;base64,...',\n            onClick: (selectedPageNumbers) => {\n              alert(`Selected thumbnail: ${selectedPageNumbers}`);\n            },\n            dataElement: 'alertMeDataElement',\n          },\n        ]);\n      })\n   */\n  add(operations, dataElementToInsertAfter) {\n    if (!operations || operations.length === 0) {\n      return;\n    }\n\n    if (!Array.isArray(operations)) {\n      operations = [operations];\n    }\n\n    const index = this._getIndexByDataElement(dataElementToInsertAfter);\n    const items = this.getItems();\n\n    items.splice(index + 1, 0, ...operations);\n    this.store.dispatch(actions.setThumbnailControlMenuItems(items));\n\n    return this;\n  },\n\n  /**\n   * Update all the buttons in the ThumbnailControlMenu, essentially replacing them with\n   * a new list of buttons.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.ThumbnailControlMenu#update\n   * @param {Array.<UI.ThumbnailControlMenu.MenuItem>} MenuItem The list of MenuItems that will be rendered in the thumbnail menu overlay. See the add documentation for an example.\n   * @returns {UI.ThumbnailControlMenu} The instance of itself\n   * @example\n      WebViewer(...)\n      .then(function (instance) {\n        instance.UI.thumbnailControlMenu.update([\n          {\n            title: 'alertme',\n            img: 'data:image/png;base64,...',\n            onClick: (selectedPageNumbers) => {\n              alert(`Selected thumbnail: ${selectedPageNumbers}`);\n            },\n            dataElement: 'alertMeDataElement',\n          },\n        ]);\n      })\n  */\n  update(operations) {\n    if (!operations) {\n      operations = [];\n    }\n    this.store.dispatch(actions.setThumbnailControlMenuItems(operations));\n\n    return this;\n  },\n\n  /**\n   * Return the array of items in the ThumbnailControlMenu.\n   * @method UI.ThumbnailControlMenu#getItems\n   * @returns {Array.<UI.ThumbnailControlMenu.MenuItem>} Current items in the ThumbnailControlMenu.\n   * @example\n    WebViewer(...)\n      .then(function(instance) {\n        instance.UI.ThumbnailControlMenu.getItems();\n      });\n   */\n  getItems() {\n    return [...selectors.getThumbnailControlMenuItems(this.store.getState())];\n  },\n\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getThumbnailControlMenuItems(state).findIndex(obj => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n};","/**\n * Gets the watermark options created in print modal.\n * @method UI.getWatermarkModalOptions\n * @return {object} Returns the watermark options created in print modal.\n */\nimport selectors from 'selectors';\n\nexport default store => () => selectors.getWatermarkModalOptions(store.getState());","import actions from 'actions';\n\n/**\n * Enable the ability to submit notes by only pressing Enter. Default mode is Ctrl/Cmd + Enter.\n * @method UI.enableNoteSubmissionWithEnter\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableNoteSubmissionWithEnter();\n  });\n */\n\nexport default store => () => {\n  store.dispatch(actions.setNoteSubmissionEnabledWithEnter(true));\n};","/**\n * Returns whether Webviewer will use/not use embedded printing.\n * Will return false if the browser doesn't support embedded printing or if UI.useEmbeddedPrint is set to false.\n * @method UI.willUseEmbeddedPrinting\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.willUseEmbeddedPrinting(); // Returns true/false if embedded printing is supported and enabled\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default store => () => !!selectors.isEmbedPrintSupported(store.getState());","/**\n * Reloads the Bookmark Outline in the WebViewer UI.\n * @method UI.reloadOutline\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const { documentViewer } = instance.Core;\n\n    // you must have a document loaded when calling this api\n    documentViewer.addEventListener('documentLoaded', async () => {\n      const doc = documentViewer.getDocument();\n      const pdfDoc = await doc.getPDFDoc();\n      const firstBookmark = await doc.getFirstBookmark();\n\n      const bookmarkToDelete = await firstBookmark.find('bookmark-to-delete');\n      if (bookmarkToDelete !== null && await bookmarkToDelete.isValid()) {\n        await bookmarkToDelete.delete();\n        instance.UI.reloadOutline();\n      }\n    });\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\n\nexport default store => () => {\n  core.getOutlines(outlines => {\n    store.dispatch(actions.setOutlines(outlines));\n  });\n};\n","import actions from 'actions';\nimport selectors from 'selectors';\n\n/**\n * A namespace which contains Font APIs for the UI. <br/><br/>\n * @namespace Fonts\n * @memberof UI\n * @example\n * WebViewer(...)\n * .then(function (instance) {\n *   instance.UI.Fonts.getFonts();\n * });\n */\nexport default store => Object.create(FontsAPI).initialize(store);\n\nconst FontsAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * Return the currently available fonts in the UI to be used for Annotations.\n   * @method UI.Fonts.getAnnotationFonts\n   * @returns {Array.<String>} Fonts avaialable in the UI.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.getAnnotationFonts();\n  });\n   */\n  getAnnotationFonts() {\n    return [...selectors.getFonts(this.store.getState())];\n  },\n  /**\n   * Add a font to be available in the UI for Annotation font pickers.\n   * @method UI.Fonts.addAnnotationFont\n   * @param {String} font - The font to be added.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.addAnnotationFont(\"Arial\");\n  });\n   */\n  addAnnotationFont(font) {\n    if (typeof font !== 'string') {\n      throw new Error('Font must be a string');\n    }\n    const fonts = selectors.getFonts(this.store.getState());\n    if (fonts.indexOf(font) !== -1) {\n      return console.warn('Font already added');\n    }\n    fonts.push(font);\n    this.store.dispatch(actions.setFonts(fonts));\n  },\n  /**\n   * Remove a font from the UI's Annotation font pickers.\n   * @method UI.Fonts.removeAnnotationFont\n   * @param {String} font - The font to be removed.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.removeAnnotationFont(\"Arial\");\n  });\n   */\n  removeAnnotationFont(font) {\n    const fonts = selectors.getFonts(this.store.getState());\n    const fontIndex = fonts.indexOf(font);\n    if (fontIndex === -1) {\n      return console.warn('Font not found');\n    }\n    fonts.splice(fontIndex, 1);\n    this.store.dispatch(actions.setFonts(fonts));\n  },\n  /**\n   * Set the fonts available in the UI's Annotation font pickers.\n   * @method UI.Fonts.setAnnotationFonts\n   * @param {Array.<String>} fonts - The fonts to be set.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.setAnnotationFonts([\"Arial\", \"Times New Roman\"]);\n  });\n   */\n  setAnnotationFonts(fonts) {\n    this.store.dispatch(actions.setFonts(fonts));\n  },\n  /**\n   * Returns the currently available fonts to be used when typing a signature in the signature dialog\n   * @method UI.Fonts.getSignatureFonts\n   * @returns {Array.<String>} Fonts avaialable in the UI.\n   */\n  getSignatureFonts() {\n    return [...selectors.getSignatureFonts(this.store.getState())];\n  },\n  /**\n   * Add a font to be available in the UI for Signature font pickers.\n   * @method UI.Fonts.addSignatureFont\n   * @param {String} font - The font to be added.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.addSignatureFont(\"Arial\");\n  });\n   */\n  addSignatureFont(font) {\n    if (typeof font !== 'string') {\n      throw new Error('Font must be a string');\n    }\n    const fonts = selectors.getSignatureFonts(this.store.getState());\n    if (fonts.indexOf(font) !== -1) {\n      return console.warn('Font already added');\n    }\n    fonts.push(font);\n    this.store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  },\n  /**\n   * Remove a font from the UI's Signature font pickers.\n   * @method UI.Fonts.removeSignatureFont\n   * @param {String} font - The font to be removed.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.removeSignatureFont(\"Arial\");\n  });\n   */\n  removeSignatureFont(font) {\n    const fonts = selectors.getSignatureFonts(this.store.getState());\n    const fontIndex = fonts.indexOf(font);\n    if (fontIndex === -1) {\n      return console.warn('Font not found');\n    }\n    fonts.splice(fontIndex, 1);\n    this.store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  },\n  /**\n   * Set the fonts available in the UI's Signature font pickers.\n   * @method UI.Fonts.setSignatureFonts\n   * @param {Array.<String>} fonts - The fonts to be set.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.setSignatureFonts([\"Arial\", \"Times New Roman\"]);\n  });\n   */\n  setSignatureFonts(fonts) {\n    this.store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  },\n};","import selectors from 'selectors';\n\n/**\n * An instance of TabManager that can be used to edit the open document Tabs **Only Multi-Tab Mode**.\n * @namespace TabManager\n * @memberof UI\n * @example\n WebViewer(...)\n .then(function (instance) {\n    instance.UI.TabManager.setActiveTab(0);\n  })\n */\n\n/**\n * @typedef {Object} UI.addTabOptions\n * @property {UI.loadDocumentOptions} [loadDocumentOptions] The document loading options\n * @property {boolean} [setActive] Whether to set the new tab as active immediately after adding it (default: true)\n * @property {boolean} [saveCurrentActiveTabState] Whether to save the current tab annotations, scroll position, and zoom level before adding the new tab (only used when setActive=true) (default: true)\n */\n\nexport default store => Object.create(TabManagerAPI).initialize(store);\n\nconst TabManagerAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * Set the currently open tab in the UI\n   * @method UI.TabManager.setActiveTab\n   * @param tabId {number} The tab id to set as the current tab\n   * @param [saveCurrentActiveTabState] {boolean} Whether to save the current tab annotations, scroll position, and zoom level before switching to the new tab (default: true)\n   * @returns {Promise<void>} Resolves when the tab is loaded\n   * @example\n   * WebViewer(...).then(function(instance) {\n   *   instance.UI.TabManager.setActiveTab(0, false); // Set to tab id 0 discarding current tab state\n   * });\n   */\n  async setActiveTab(tabId, saveCurrentActiveTabState = true) {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    await tabManager.setActiveTab(tabId, saveCurrentActiveTabState);\n  },\n  /**\n   * Delete a tab by id in the UI\n   * @method UI.TabManager.deleteTab\n   * @param tabId {number} The tab id to be deleted from the tab header\n   * @returns {void}\n   * @example\n   * WebViewer(...).then(function(instance) {\n   *   instance.UI.TabManager.deleteTab(0); // Delete tab id 0\n   * });\n   */\n  deleteTab(tabId) {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    tabManager.deleteTab(tabId);\n  },\n  /**\n   * Add a new tab to the UI\n   * @method UI.TabManager.addTab\n   * @param {(string|File|Blob|Core.Document|Core.PDFNet.PDFDoc)} src The source of the tab to be added (e.g. a URL, a blob, ArrayBuffer, or a File)\n   * @param {UI.addTabOptions} [options] The options for the tab to be added\n   * @returns {Promise<number>} Resolves to the tab id of the newly added tab\n   * @example\n   * WebViewer(...).then(function(instance) {\n   *   instance.UI.TabManager.addTab('http://www.example.com/pdf', {extension: \"pdf\", setActive: true, saveCurrentActiveTabState: true}); // Add a new tab with the URL http://www.example.com\n   * });\n   */\n  async addTab(src, options) {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    return tabManager.addTab(src, options);\n  },\n  /**\n   * Get the currently active tab id\n   * @method UI.TabManager.getActiveTab\n   * @returns {object} The current tab with the following properties: { id: Number, options: Object, src: string|Blob|File|ArrayBuffer }\n   */\n  getActiveTab() {\n    const state = this.store.getState();\n    const activeTab = selectors.getActiveTab(state);\n    const tabs = selectors.getTabs(state);\n    const currentTab = tabs.find(tab => tab.id === activeTab);\n    return {\n      id: currentTab.id,\n      options: currentTab.options,\n      src: currentTab.src,\n    };\n  },\n  /**\n   * Get all the tabs from the UI\n   * @method UI.TabManager.getAllTabs\n   * @returns {Array<Object>} Array of tab objects containing the following properties: { id: Number, options: Object, src: string|Blob|File|ArrayBuffer }\n   */\n  getAllTabs() {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    return tabManager.map(tab => ({\n      id: tab.id,\n      options: tab.options,\n      src: tab.src,\n    }));\n  },\n};\n","/**\n * Sets a specific regex to be used when searching for one of the supported patterns in the redaction search panel\n * @method UI.replaceRedactionSearchPattern\n * @param {UI.RedactionSearchPatterns} searchPattern A search pattern for which the regex should be replaced\n *\n * @param {string} regex The regex to be used for the search pattern\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.replaceRedactionSearchPattern(instance.UI.RedactionSearchPatterns.EMAILS, /\\w+@\\w+\\.\\w+/);\n  });\n */\n\nimport actions from 'actions';\n\nexport default store => (searchPattern, regex) => {\n  store.dispatch(actions.replaceRedactionSearchPattern(searchPattern, regex));\n};\n","/**\n * Sets preset crop dimensions to be used when selecting a preset crop in the document cropping popup\n * @method UI.setPresetCropDimensions\n * @param {string} presetName The name of a current preset or the name to give to a new preset\n * @param {object} newPreset A set of dimensions to use for a preset crop\n * @param {number} newPreset.yOffset The amount of inches to move the cropped area from the top of the page\n * @param {number} newPreset.height The height of the area to crop the page to in inches\n * @param {number} newPreset.xOffset The amount of inches to move the cropped area from the left of the page\n * @param {number} newPreset.width The width of the area to crop the page to in inches\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPresetCropDimensions('Letter', {'yOffset': 0, 'height': 11, 'xOffset': 0, 'width': 8.5});\n  });\n */\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nconst dimensions = ['yOffset', 'height', 'xOffset', 'width'];\n\nexport default store => (presetName, newPreset) => {\n  if (!presetName || typeof presetName !== 'string' || presetName.trim().length < 1) {\n    return console.error('presetName must be a string of length 1 or more');\n  }\n  if (!newPreset || typeof newPreset !== 'object') {\n    return console.error('newPreset must be an object with \"yOffset\", \"height\", \"xOffset\", and \"width\" properties');\n  }\n\n  for (const dimension of dimensions) {\n    if (!(dimension in newPreset)) {\n      return console.error(`${dimension} must be included in newPreset`);\n    }\n    if (typeof newPreset[dimension] !== 'number' || newPreset[dimension] < 0) {\n      return console.error(`${dimension} must be a number greater than or equal to 0`);\n    }\n  }\n\n  const presets = selectors.getPresetCropDimensions(store.getState());\n  presets[presetName] = newPreset;\n\n  store.dispatch(actions.setPresetCropDimensions(presets));\n};\n","import selectors from 'selectors';\nimport actions from 'actions';\n\n/**\n * Adds a date and time format for the UI date and time dropdowns.\n * List of formats can be found here: {@link https://github.com/iamkun/dayjs/blob/v1.11.1/docs/en/API-reference.md#format-formatstringwithtokens-string dayjs API}.\n * @method UI.addDateTimeFormat\n * @param {object} dateTimeFormat An object containing the date and time formats with the respective keys. At least one of the date or time keys must be present.\n * @param {string} [dateTimeFormat.date] String of date format\n * @param {string} [dateTimeFormat.time] String of time format\n * @param {boolean} [dateTimeFormat.timeFirst] Boolean value to indicate if time should be before date in UI\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.addDateTimeFormat({\n        date: 'MM/DD/YYYY',\n        time: 'HH:mm:ss',\n        timeFirst: true\n      });\n  });\n */\n\nexport default store => dateTimeFormat => {\n  if (typeof dateTimeFormat !== 'object') {\n    return console.error('UI.addDateTimeFormat: dateTimeFormat must be an object');\n  }\n  let validKeyFound = false;\n  const requiredKeys = ['date', 'time'];\n  for (const param of requiredKeys) {\n    if (!dateTimeFormat[param]) {\n      dateTimeFormat[param] = '';\n    } else {\n      validKeyFound = true;\n    }\n  }\n  if (!validKeyFound) {\n    return console.error(`UI.addDateTimeFormat: dateTimeFormat must contain at least one of the following keys: ${requiredKeys.join(', ')}`);\n  }\n  store.dispatch(actions.setDateTimeFormats([\n    ...selectors.getDateTimeFormats(store.getState()),\n    dateTimeFormat,\n  ]));\n};","/**\n * Adds a new search pattern to the redaction search panel\n * @method UI.addRedactionSearchPattern\n * @param {UI.RedactionSearchPattern} searchPattern A search pattern to add to the redaction search panel\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addRedactionSearchPattern(\n      {\n        label: 'Social Security Number',\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\" viewBox=\"0 0 30 30\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\"/></svg>',\n        type: 'socialSecurityNumber',\n        regex: /\\b\\d{3}-?\\d{2}-?\\d{4}\\b/,\n      }\n    );\n  });\n\n// Or to search kewyord(s):\nWebViewer(...)\n.then(function(instance) {\n  instance.UI.addRedactionSearchPattern(\n    {\n      label: 'Confidential Information',\n      type: 'confidentialInformation',\n      regex: /confidential information/i, //Regex based search for text, case insensitive\n    }\n  );\n});\n\n */\n\nimport actions from 'actions';\n\nexport default store => (redactionSearchPattern, regex) => {\n  store.dispatch(actions.addRedactionSearchPattern(redactionSearchPattern, regex));\n};\n\n\n/**\n* @typedef {Object} UI.RedactionSearchPattern\n* @property {string} label The label to be used for the search pattern in the UI\n* @property {string} type A string representing the type of item being searched for. For example, if searching for postal codes, this could be 'postalCode'. This is used\n* to determine which icon will be used to render the result in the search panel.\n* @property {string} [icon] The icon to be used for the search pattern in the search dropdown for the UI and the redaction panel for this type of search. Can be an inline SVG, or the name of an icon included in the WebViewer UI icon set.\n* If no icon is passed, the default icon for text searches will be used.\n* @property {RegExp} regex The regex to be used for the search pattern\n*/\n","/**\n * Removes a search pattern from the redaction search panel\n * @method UI.removeRedactionSearchPattern\n * @param {UI.RedactionSearchPatterns | string} searchPattern A search pattern to remove from the redaction search panel. If you added a custom search pattern with {@link UI.addRedactionSearchPattern}, you must pass the type of the search pattern you added.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.removeRedactionSearchPattern(instance.UI.RedactionSearchPatterns.EMAILS);\n  });\n\n// If you added a custom search pattern for Social Security Number where the type is 'socialSecurityNumber'.\nWebViewer(...)\n.then(function(instance) {\n  instance.UI.removeRedactionSearchPattern('socialSecurityNumber');\n});\n */\n\nimport actions from 'actions';\n\nexport default store => redactionSearchPattern => {\n  store.dispatch(actions.removeRedactionSearchPattern(redactionSearchPattern));\n};","import selectors from 'selectors';\n\nexport default store => () => selectors.getZoomStepFactors(store.getState());","/**\n * Set the zoom step size for zooming in/out.\n * @method UI.setZoomStepFactors\n * @param {zoomStepFactor[]} zoomStepFactors an array that contains objects of zoomStep and zoom start level. zoomStepFactors must contain at least one zoomStepFactor object that has startZoom: 0\n * @typedef {Object} zoomStepFactor\n * @property {number} zoomStepFactor.step zoom step size in %, should always be positive\n * @property {number} zoomStepFactor.startZoom zoom level that the zoom step size start to apply, should always be positive.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const documentViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    documentViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setZoomStepFactors([\n        {\n          step: 50,\n          startZoom: 0\n        }\n      ]);\n    });\n  });\n*/\n\nimport actions from 'actions';\n\nexport default store => zoomStepFactors => {\n  if (!zoomStepFactors.length) {\n    return console.warn('Invalid Input');\n  }\n  const newZoomFactorsHasInitialZoomFactor =\n    zoomStepFactors.find(stepFactor => stepFactor.startZoom === 0);\n  if (!newZoomFactorsHasInitialZoomFactor) {\n    return console.warn('zoomStepFactors should have at least one zoomStepFactor object with startZoom equals to 0.');\n  }\n  for (let i = 0; i < zoomStepFactors.length; i++) {\n    const zoomStepFactor = zoomStepFactors[i];\n    if (\n      zoomStepFactor['step'] === undefined ||\n      typeof zoomStepFactor.step !== 'number' ||\n      zoomStepFactor['step'] < 0\n    ) {\n      return console.warn('zoomStepFactor object must have a property called \"step\" with a positive number as its value.');\n    }\n    if (\n      zoomStepFactor['startZoom'] === undefined ||\n      typeof zoomStepFactor.startZoom !== 'number' ||\n      zoomStepFactor['startZoom'] < 0\n    ) {\n      return console.warn('zoomStepFactor objectm ust have a property called \"startZoom\" with a positive number as its value.');\n    }\n  }\n  store.dispatch(actions.setZoomStepFactors(zoomStepFactors));\n};","import i18next from 'i18next';\n\nimport LayoutMode from 'constants/layoutMode';\nimport FitMode from 'constants/fitMode';\nimport Feature from 'constants/feature';\nimport Events from 'constants/events';\nimport ToolbarGroup from 'constants/toolbar';\nimport { NotesPanelSortStrategy } from 'constants/sortStrategies';\nimport Theme from 'constants/theme';\nimport RedactionSearchPatterns from 'constants/redactionSearchPatterns';\nimport addSearchListener from './addSearchListener';\nimport addSortStrategy from './addSortStrategy';\nimport annotationPopup from './annotationPopup';\nimport closeDocument from './closeDocument';\nimport closeElements from './closeElements';\nimport contextMenuPopup from './contextMenuPopup';\nimport disableAnnotations from './disableAnnotations';\nimport disableDownload from './disableDownload';\nimport disableElement from './disableElement';\nimport disableElements from './disableElements';\nimport disableFeatures from './disableFeatures';\nimport disableFilePicker from './disableFilePicker';\nimport disableHighContrastMode from './disableHighContrastMode';\nimport disableLocalStorage from './disableLocalStorage';\nimport disableMeasurement from './disableMeasurement';\nimport disableNativeScrolling from './disableNativeScrolling';\nimport disableNotesPanel from './disableNotesPanel';\nimport disableNoteSubmissionWithEnter from './disableNoteSubmissionWithEnter';\nimport disablePrint from './disablePrint';\nimport disableRedaction from './disableRedaction';\nimport disableTextSelection from './disableTextSelection';\nimport disableTool from './disableTool';\nimport disableTools from './disableTools';\nimport disableTouchScrollLock from './disableTouchScrollLock';\nimport displayErrorMessage from './displayErrorMessage';\nimport downloadPdf from './downloadPdf';\nimport enableAllElements from './enableAllElements';\nimport enableAnnotations from './enableAnnotations';\nimport enableDownload from './enableDownload';\nimport enableElement from './enableElement';\nimport enableElements from './enableElements';\nimport enableHighContrastMode from './enableHighContrastMode';\nimport enableFeatures from './enableFeatures';\nimport enableFilePicker from './enableFilePicker';\nimport enableLocalStorage from './enableLocalStorage';\nimport enableMeasurement from './enableMeasurement';\nimport enableNativeScrolling from './enableNativeScrolling';\nimport enableNotesPanel from './enableNotesPanel';\nimport enablePrint from './enablePrint';\nimport enableRedaction from './enableRedaction';\nimport enableTextSelection from './enableTextSelection';\nimport enableTool from './enableTool';\nimport enableTools from './enableTools';\nimport enableTouchScrollLock from './enableTouchScrollLock';\nimport extractPagesWithAnnotations from './extractPagesWithAnnotations';\nimport focusNote from './focusNote';\nimport getAnnotationUser from './getAnnotationUser';\nimport getBBAnnotManager from './getBBAnnotManager';\nimport getCurrentPageNumber from './getCurrentPageNumber';\nimport getFitMode from './getFitMode';\nimport getLayoutMode from './getLayoutMode';\nimport getPageCount from './getPageCount';\nimport getSelectedThumbnailPageNumbers from './getSelectedThumbnailPageNumbers';\nimport getSelectors from './getSelectors';\nimport getShowSideWindow from './getShowSideWindow';\nimport getSideWindowVisibility from './getSideWindowVisibility';\nimport getToolMode from './getToolMode';\nimport getZoomLevel from './getZoomLevel';\nimport getMaxZoomLevel from './getMaxZoomLevel';\nimport getMinZoomLevel from './getMinZoomLevel';\nimport getIsHighContrastMode from './getIsHighContrastMode';\nimport goToFirstPage from './goToFirstPage';\nimport goToLastPage from './goToLastPage';\nimport goToNextPage from './goToNextPage';\nimport goToPrevPage from './goToPrevPage';\nimport hideOutlineControl from './hideOutlineControl';\nimport hotkeys from './hotkeys';\nimport isAdminUser from './isAdminUser';\nimport isElementDisabled from './isElementDisabled';\nimport isElementOpen from './isElementOpen';\nimport isHighContrastModeEnabled from './isHighContrastModeEnabled';\nimport isMobileDevice from './isMobileDevice';\nimport isReadOnly from './isReadOnly';\nimport isToolDisabled from './isToolDisabled';\nimport isFullscreen from './isFullscreen';\nimport loadDocument from './loadDocument';\nimport mentions from './mentions';\nimport settingsMenuOverlay from './menuOverlay';\nimport openElement from './openElement';\nimport openElements from './openElements';\nimport print from './print';\nimport printInBackground from './printInBackground';\nimport cancelPrint from './cancelPrint';\nimport registerTool from './registerTool';\nimport removeSearchListener from './removeSearchListener';\nimport rotateClockwise from './rotateClockwise';\nimport rotateCounterClockwise from './rotateCounterClockwise';\nimport saveAnnotations from './saveAnnotations';\nimport searchText from './searchText';\nimport searchTextFull from './searchTextFull';\nimport setWv3dPropertiesPanelModelData from './setWv3dPropertiesPanelModelData';\nimport setWv3dPropertiesPanelSchema from './setWv3dPropertiesPanelSchema';\nimport setActiveHeaderGroup from './setActiveHeaderGroup';\nimport setActiveLeftPanel from './setActiveLeftPanel';\nimport setAdminUser from './setAdminUser';\nimport setAnnotationUser from './setAnnotationUser';\nimport setActivePalette from './setActivePalette';\nimport setColorPalette from './setColorPalette';\nimport setPageReplacementModalFileList from './setPageReplacementModalFileList';\nimport setHighContrastMode from './setHighContrastMode';\nimport setCurrentPageNumber from './setCurrentPageNumber';\nimport addCustomModal, { setCustomModal } from './addCustomModal';\nimport setCustomNoteFilter from './setCustomNoteFilter';\nimport setCustomPanel from './setCustomPanel';\nimport exportBookmarks from './exportBookmarks';\nimport importBookmarks from './importBookmarks';\nimport setFitMode from './setFitMode';\nimport setHeaderItems from './setHeaderItems';\nimport setIconColor from './setIconColor';\nimport setLanguage from './setLanguage';\nimport setTranslations from './setTranslations';\nimport setLayoutMode from './setLayoutMode';\nimport setMaxZoomLevel from './setMaxZoomLevel';\nimport setMinZoomLevel from './setMinZoomLevel';\nimport setNoteDateFormat from './setNoteDateFormat';\nimport setPrintedNoteDateFormat from './setPrintedNoteDateFormat';\nimport setNotesPanelSort from './setNotesPanelSort';\nimport setPageLabels from './setPageLabels';\nimport setPrintQuality from './setPrintQuality';\nimport setDefaultPrintOptions from './setDefaultPrintOptions';\nimport setSelectedTab from './setSelectedTab';\nimport setSideWindowVisibility from './setSideWindowVisibility';\nimport setSortNotesBy from './setSortNotesBy';\nimport setNotesPanelSortStrategy from './setNotesPanelSortStrategy';\nimport setSwipeOrientation from './setSwipeOrientation';\nimport setTheme from './setTheme';\nimport setToolbarGroup from './setToolbarGroup';\nimport createToolbarGroup from './createToolbarGroup';\nimport setToolMode from './setToolMode';\nimport setZoomLevel from './setZoomLevel';\nimport setZoomList from './setZoomList';\nimport showErrorMessage from './showErrorMessage';\nimport showOutlineControl from './showOutlineControl';\nimport showWarningMessage from './showWarningMessage';\nimport syncNamespaces from './syncNamespaces';\nimport textPopup from './textPopup';\nimport toggleElement from './toggleElement';\nimport toggleFullScreen from './toggleFullScreen';\nimport {\n  enableToolDefaultStyleUpdateFromAnnotationPopup,\n  disableToolDefaultStyleUpdateFromAnnotationPopup,\n} from './toolDefaultStyleUpdateFromAnnotationPopup';\nimport unregisterTool from './unregisterTool';\nimport updateElement from './updateElement';\nimport updateOutlines from './updateOutlines';\nimport updateTool from './updateTool';\nimport useEmbeddedPrint from './useEmbeddedPrint';\nimport useNativeScroll from './useNativeScroll';\nimport setDisplayedSignaturesFilterFunction from './setDisplayedSignaturesFilterFunction';\nimport setMeasurementUnits from './setMeasurementUnits';\nimport setMaxSignaturesCount from './setMaxSignaturesCount';\nimport setSignatureFonts from './setSignatureFonts';\nimport disableReplyForAnnotations from './disableReplyForAnnotations';\nimport getCustomData from './getCustomData';\nimport setCustomMeasurementOverlayInfo from './setCustomMeasurementOverlayInfo';\nimport setNoteTransformFunction from './setNoteTransformFunction';\nimport setCustomNoteSelectionFunction from './setCustomNoteSelectionFunction';\nimport setCustomApplyRedactionsHandler from './setCustomApplyRedactionsHandler';\nimport selectThumbnailPages from './selectThumbnailPages';\nimport unselectThumbnailPages from './unselectThumbnailPages';\nimport setSearchResults from './setSearchResults';\nimport setActiveResult from './setActiveResult';\nimport setAnnotationContentOverlayHandler from './setAnnotationContentOverlayHandler';\nimport overrideSearchExecution from './overrideSearchExecution';\nimport reactElements from './reactElements';\nimport { addTrustedCertificates, loadTrustList } from './verificationOptions';\nimport {\n  enableTextCollapse,\n  disableTextCollapse,\n  enableReplyCollapse,\n  disableReplyCollapse,\n  disableAutoExpandCommentThread,\n  enableAutoExpandCommentThread,\n} from './notesPanel';\nimport {\n  enableMultiselect,\n  disableMultiselect,\n  selectPages,\n  unselectPages,\n  getSelectedPageNumbers,\n  setThumbnailSelectionMode,\n} from './thumbnailsPanel';\nimport toggleReaderMode from './toggleReaderMode';\nimport toggleElementVisibility from './toggleElementVisibility';\nimport setAnnotationReadState from './setAnnotationReadState';\nimport getAnnotationReadState from './getAnnotationReadState';\nimport enableClearSearchOnPanelClose from './enableClearSearchOnPanelClose';\nimport disableClearSearchOnPanelClose from './disableClearSearchOnPanelClose';\nimport disableFadePageNavigationComponent from './disableFadePageNavigationComponent';\nimport enableFadePageNavigationComponent from './enableFadePageNavigationComponent';\nimport disablePageDeletionConfirmationModal from './disablePageDeletionConfirmationModal';\nimport enablePageDeletionConfirmationModal from './enablePageDeletionConfirmationModal';\nimport addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\nimport enableDesktopOnlyMode from './enableDesktopOnlyMode';\nimport disableDesktopOnlyMode from './disableDesktopOnlyMode';\nimport isInDesktopOnlyMode from './isInDesktopOnlyMode';\nimport pageManipulationOverlay from './pageManipulationOverlay';\nimport thumbnailControlMenu from './thumbnailControlMenu';\nimport getWatermarkModalOptions from './getWatermarkModalOptions';\nimport enableNoteSubmissionWithEnter from './enableNoteSubmissionWithEnter';\nimport willUseEmbeddedPrinting from 'src/apis/willUseEmbeddedPrinting';\nimport reloadOutline from './reloadOutline';\nimport Fonts from 'src/apis/fonts';\nimport TabManagerAPI from './TabManagerAPI';\nimport getAvailableLanguages from './getAvailableLanguages';\nimport replaceRedactionSearchPattern from './replaceRedactionSearchPattern';\nimport setPresetCropDimensions from './setPresetCropDimensions';\nimport addDateTimeFormat from './addDateTimeFormat';\nimport addRedactionSearchPattern from './addRedactionSearchPattern';\nimport removeRedactionSearchPattern from './removeRedactionSearchPattern';\nimport getZoomStepFactors from './getZoomStepFactors';\nimport setZoomStepFactors from './setZoomStepFactors';\n\nexport default store => {\n  const CORE_NAMESPACE = 'Core';\n  const UI_NAMESPACE = 'UI';\n  const objForWebViewerCore = {\n    Tools: window.Core.Tools,\n    Annotations: window.Annotations,\n    // keep CoreControls for backwards compabililty\n    // remove this in 9.0\n    CoreControls: window.Core,\n    PartRetrievers: window.Core.PartRetrievers,\n    Actions: window.Actions,\n    PDFNet: window.PDFNet,\n  };\n  const objForWebViewerUI = {\n    FitMode,\n    LayoutMode,\n    Feature,\n    Events,\n    ToolbarGroup,\n    NotesPanelSortStrategy,\n    Theme,\n    RedactionSearchPatterns,\n    addSearchListener,\n    addSortStrategy: addSortStrategy(store),\n    annotationPopup: annotationPopup(store),\n    closeDocument: closeDocument(store),\n    closeElements: closeElements(store),\n    contextMenuPopup: contextMenuPopup(store),\n    disableElements: disableElements(store),\n    setWv3dPropertiesPanelModelData: setWv3dPropertiesPanelModelData(store),\n    setWv3dPropertiesPanelSchema: setWv3dPropertiesPanelSchema(store),\n    disableFeatures: disableFeatures(store),\n    disableTools: disableTools(store),\n    disableReplyForAnnotations: disableReplyForAnnotations(store),\n    displayErrorMessage: displayErrorMessage(store),\n    disableHighContrastMode: disableHighContrastMode(store),\n    downloadPdf: downloadPdf(store),\n    enableElements: enableElements(store),\n    enableFeatures: enableFeatures(store),\n    enableTools: enableTools(store),\n    focusNote: focusNote(store),\n    getFitMode: getFitMode(store),\n    getLayoutMode: getLayoutMode(store),\n    getToolMode,\n    getZoomLevel,\n    getMaxZoomLevel,\n    getMinZoomLevel,\n    hotkeys,\n    hideOutlineControl: hideOutlineControl(store),\n    isElementDisabled: isElementDisabled(store),\n    isElementOpen: isElementOpen(store),\n    isToolDisabled: isToolDisabled(store),\n    isHighContrastModeEnabled: isHighContrastModeEnabled(store),\n    isFullscreen,\n    loadDocument: loadDocument(store),\n    settingsMenuOverlay: settingsMenuOverlay(store),\n    pageManipulationOverlay: pageManipulationOverlay(store),\n    thumbnailControlMenu: thumbnailControlMenu(store),\n    openElements: openElements(store),\n    print: print(store),\n    printInBackground: printInBackground(store),\n    cancelPrint,\n    registerTool: registerTool(store),\n    removeSearchListener,\n    searchText: searchText(store.dispatch),\n    searchTextFull: searchTextFull(store.dispatch),\n    overrideSearchExecution,\n    setActiveHeaderGroup: setActiveHeaderGroup(store),\n    setActiveLeftPanel: setActiveLeftPanel(store),\n    setCustomModal: setCustomModal(store),\n    addCustomModal: addCustomModal(store),\n    showOutlineControl: showOutlineControl(store),\n    setCustomNoteFilter: setCustomNoteFilter(store),\n    setCustomPanel: setCustomPanel(store),\n    exportBookmarks: exportBookmarks(store),\n    extractPagesWithAnnotations,\n    importBookmarks: importBookmarks(store),\n    setFitMode,\n    setHeaderItems: setHeaderItems(store),\n    setIconColor: setIconColor(store),\n    setLanguage: setLanguage(store),\n    setTranslations,\n    setLayoutMode,\n    setMaxZoomLevel: setMaxZoomLevel(store),\n    setMinZoomLevel: setMinZoomLevel(store),\n    setNoteDateFormat: setNoteDateFormat(store),\n    setPrintedNoteDateFormat: setPrintedNoteDateFormat(store),\n    setMeasurementUnits: setMeasurementUnits(store),\n    setPageLabels: setPageLabels(store),\n    setPrintQuality: setPrintQuality(store),\n    setDefaultPrintOptions: setDefaultPrintOptions(store),\n    setNotesPanelSortStrategy: setNotesPanelSortStrategy(store),\n    setSwipeOrientation,\n    setTheme: setTheme(store),\n    setToolbarGroup: setToolbarGroup(store),\n    createToolbarGroup: createToolbarGroup(store),\n    dangerouslySetNoteTransformFunction: setNoteTransformFunction(store),\n    setCustomNoteSelectionFunction: setCustomNoteSelectionFunction(store),\n    setCustomApplyRedactionsHandler: setCustomApplyRedactionsHandler(store),\n    setToolMode,\n    setZoomLevel,\n    setZoomList: setZoomList(store),\n    setSearchResults,\n    setActiveResult,\n    textPopup: textPopup(store),\n    toggleElementVisibility: toggleElementVisibility(store),\n    toggleFullScreen,\n    unregisterTool: unregisterTool(store),\n    updateTool: updateTool(store),\n    updateElement: updateElement(store),\n    useEmbeddedPrint: useEmbeddedPrint(store),\n    willUseEmbeddedPrinting: willUseEmbeddedPrinting(store),\n    setMaxSignaturesCount: setMaxSignaturesCount(store),\n    mentions: mentions(store),\n    setCustomMeasurementOverlayInfo: setCustomMeasurementOverlayInfo(store),\n    setSignatureFonts: setSignatureFonts(store),\n    setSelectedTab: setSelectedTab(store),\n\n    setDisplayedSignaturesFilter: setDisplayedSignaturesFilterFunction(store),\n\n    setAnnotationContentOverlayHandler: setAnnotationContentOverlayHandler(store),\n    VerificationOptions: {\n      addTrustedCertificates: addTrustedCertificates(store),\n      loadTrustList: loadTrustList(store),\n    },\n    ThumbnailsPanel: {\n      selectPages: selectPages(store),\n      unselectPages: unselectPages(store),\n      getSelectedPageNumbers: getSelectedPageNumbers(store),\n      enableMultiselect: enableMultiselect(store),\n      disableMultiselect: disableMultiselect(store),\n      setThumbnailSelectionMode: setThumbnailSelectionMode(store),\n    },\n    NotesPanel: {\n      enableTextCollapse: enableTextCollapse(store),\n      disableTextCollapse: disableTextCollapse(store),\n      enableReplyCollapse: enableReplyCollapse(store),\n      disableReplyCollapse: disableReplyCollapse(store),\n      disableAutoExpandCommentThread: disableAutoExpandCommentThread(store),\n      enableAutoExpandCommentThread: enableAutoExpandCommentThread(store),\n    },\n    getWatermarkModalOptions: getWatermarkModalOptions(store),\n    // undocumented and deprecated, to be removed in 7.0\n    disableAnnotations: disableAnnotations(store),\n    disableDownload: disableDownload(store),\n    disableElement: disableElement(store),\n    disableFilePicker: disableFilePicker(store),\n    disableLocalStorage,\n    disableMeasurement: disableMeasurement(store),\n    disableNotesPanel: disableNotesPanel(store),\n    disableNoteSubmissionWithEnter: disableNoteSubmissionWithEnter(store),\n    disablePrint: disablePrint(store),\n    disableRedaction: disableRedaction(store),\n    disableTextSelection: disableTextSelection(store),\n    disableTouchScrollLock,\n    enableAnnotations: enableAnnotations(store),\n    enableDownload: enableDownload(store),\n    enableElement: enableElement(store),\n    enableFilePicker: enableFilePicker(store),\n    enableHighContrastMode: enableHighContrastMode(store),\n    enableLocalStorage,\n    enableMeasurement: enableMeasurement(store),\n    enableNotesPanel: enableNotesPanel(store),\n    enableNoteSubmissionWithEnter: enableNoteSubmissionWithEnter(store),\n    enablePrint: enablePrint(store),\n    enableRedaction: enableRedaction(store),\n    enableTextSelection: enableTextSelection(store),\n    enableTool: enableTool(store),\n    enableTouchScrollLock,\n    enableNativeScrolling,\n    getAnnotationUser,\n    getCurrentPageNumber: getCurrentPageNumber(store),\n    getPageCount: getPageCount(store),\n    getShowSideWindow: getShowSideWindow(store),\n    getSideWindowVisibility: getSideWindowVisibility(store),\n    setNotesPanelSort: setNotesPanelSort(store),\n    setActivePalette: setActivePalette(store),\n    setColorPalette: setColorPalette(store),\n    setPageReplacementModalFileList: setPageReplacementModalFileList(store),\n    disableTool: disableTool(store),\n    enableAllElements: enableAllElements(store),\n    goToFirstPage,\n    goToLastPage: goToLastPage(store),\n    goToNextPage: goToNextPage(store),\n    goToPrevPage: goToPrevPage(store),\n    isAdminUser,\n    isMobileDevice,\n    isReadOnly,\n    openElement: openElement(store),\n    rotateClockwise,\n    rotateCounterClockwise,\n    saveAnnotations: saveAnnotations(store),\n    setAdminUser,\n    setAnnotationUser,\n    setCurrentPageNumber,\n    setSortNotesBy: setSortNotesBy(store),\n    getCustomData,\n    toggleReaderMode: toggleReaderMode(store),\n    enableToolDefaultStyleUpdateFromAnnotationPopup,\n    disableToolDefaultStyleUpdateFromAnnotationPopup,\n    addEventListener,\n    removeEventListener,\n    syncNamespaces,\n    Fonts: Fonts(store),\n    reloadOutline: reloadOutline(store),\n    TabManager: TabManagerAPI(store),\n    getAvailableLanguages,\n    replaceRedactionSearchPattern: replaceRedactionSearchPattern(store),\n    setPresetCropDimensions: setPresetCropDimensions(store),\n    addDateTimeFormat: addDateTimeFormat(store),\n    addRedactionSearchPattern: addRedactionSearchPattern(store),\n    removeRedactionSearchPattern: removeRedactionSearchPattern(store),\n    setThumbnailSelectionMode: setThumbnailSelectionMode(store),\n\n    // deprecated, to be removed in 8.0\n    useNativeScroll,\n    showErrorMessage: showErrorMessage(store),\n    toggleElement: toggleElement(store),\n    setSideWindowVisibility: setSideWindowVisibility(store),\n    setHighContrastMode: setHighContrastMode(store),\n    getIsHighContrastMode: getIsHighContrastMode(store),\n\n    // deprecated, to be removed in 9.0\n    updateOutlines: updateOutlines(store),\n    selectThumbnailPages: selectThumbnailPages(store),\n    unselectThumbnailPages: unselectThumbnailPages(store),\n    getSelectedThumbnailPageNumbers: getSelectedThumbnailPageNumbers(store),\n\n    // undocumented\n    loadedFromServer: false,\n    serverFailed: false,\n    i18n: i18next,\n    showWarningMessage: showWarningMessage(store),\n    getBBAnnotManager,\n    selectors: getSelectors(store),\n    reactElements,\n    enableClearSearchOnPanelClose: enableClearSearchOnPanelClose(store),\n    disableClearSearchOnPanelClose: disableClearSearchOnPanelClose(store),\n    disableNativeScrolling,\n    setAnnotationReadState: setAnnotationReadState(store),\n    getAnnotationReadState: getAnnotationReadState(store),\n    disableFadePageNavigationComponent: disableFadePageNavigationComponent(store),\n    enableFadePageNavigationComponent: enableFadePageNavigationComponent(store),\n    enableDesktopOnlyMode: enableDesktopOnlyMode(store),\n    disableDesktopOnlyMode: disableDesktopOnlyMode(store),\n    isInDesktopOnlyMode: isInDesktopOnlyMode(store),\n    disablePageDeletionConfirmationModal: disablePageDeletionConfirmationModal(store),\n    enablePageDeletionConfirmationModal: enablePageDeletionConfirmationModal(store),\n    getZoomStepFactors: getZoomStepFactors(store),\n    setZoomStepFactors: setZoomStepFactors(store),\n  };\n\n  window.instance = {\n    // keys needed for webviewer.js\n    CORE_NAMESPACE_KEY: CORE_NAMESPACE,\n    UI_NAMESPACE_KEY: UI_NAMESPACE,\n    [CORE_NAMESPACE]: {\n      ...objForWebViewerCore,\n      ...window.Core,\n      documentViewer: window.documentViewer,\n      annotationManager: window.documentViewer.getAnnotationManager(),\n    },\n    [UI_NAMESPACE]: objForWebViewerUI,\n\n    // keep them here for backwards compatibililty. should remove them in 9.0\n    ...objForWebViewerCore,\n    ...objForWebViewerUI,\n    docViewer: window.documentViewer,\n    annotManager: window.documentViewer.getAnnotationManager(),\n  };\n};\n","import core from 'core';\n\nexport default state => {\n  core.setCurrentUser(state.user.name);\n  core.setIsAdminUser(state.user.isAdmin);\n};","import 'core-js/stable';\nimport \"regenerator-runtime/runtime\";\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport { I18nextProvider } from 'react-i18next';\nimport i18next from 'i18next';\nimport thunk from 'redux-thunk';\nimport { DndProvider } from 'react-dnd'\nimport { HTML5Backend } from 'react-dnd-html5-backend'\n\nimport core from 'core';\nimport actions from 'actions';\nimport App from 'components/App';\nimport { workerTypes } from 'constants/types';\nimport defaultTool from 'constants/defaultTool';\nimport getBackendPromise from 'helpers/getBackendPromise';\nimport loadCustomCSS from 'helpers/loadCustomCSS';\nimport loadScript, { loadConfig } from 'helpers/loadScript';\nimport setupLoadAnnotationsFromServer from 'helpers/setupLoadAnnotationsFromServer';\nimport eventHandler from 'helpers/eventHandler';\nimport setupI18n from 'helpers/setupI18n';\nimport setAutoSwitch from 'helpers/setAutoSwitch';\nimport setDefaultDisabledElements from 'helpers/setDefaultDisabledElements';\nimport setupDocViewer from 'helpers/setupDocViewer';\nimport setDefaultToolStyles from 'helpers/setDefaultToolStyles';\nimport setUserPermission from 'helpers/setUserPermission';\nimport logDebugInfo from 'helpers/logDebugInfo';\nimport rootReducer from 'reducers/rootReducer';\nimport { persistStore } from 'redux-persist';\nimport { PersistGate } from 'redux-persist/integration/react';\nimport getHashParameters from 'helpers/getHashParameters';\nimport defineWebViewerInstanceUIAPIs from 'src/apis';\n\nimport './index.scss';\nimport hotkeysManager from './helpers/hotkeysManager';\n\nconst middleware = [thunk];\n\nlet composeEnhancer = function noopStoreComposeEnhancer(middleware) {\n  return middleware;\n};\n\nif (process.env.NODE_ENV === 'development') {\n  const isSpamDisabled = localStorage.getItem('spamDisabled') === 'true';\n  if (!isSpamDisabled) {\n    const { createLogger } = require('redux-logger');\n    middleware.push(createLogger({ collapsed: true }));\n  }\n  const { composeWithDevTools } = require('redux-devtools-extension/logOnlyInProduction');\n  composeEnhancer = composeWithDevTools({});\n}\n\n\nconst store = createStore(rootReducer, composeEnhancer(applyMiddleware(...middleware)));\nconst persistor = persistStore(store);\n\nif (process.env.NODE_ENV === 'development' && module.hot) {\n  module.hot.accept('reducers/rootReducer', () => {\n    const updatedReducer = require('reducers/rootReducer').default;\n    store.replaceReducer(updatedReducer);\n  });\n\n  module.hot.accept();\n}\n\nif (process.env.NODE_ENV === 'development') {\n  window.disableSpam = () => {\n    localStorage.setItem('spamDisabled', 'true');\n    location.reload();\n  };\n\n  window.enableSpam = () => {\n    localStorage.setItem('spamDisabled', 'false');\n    location.reload();\n  };\n}\n\nif (window.CanvasRenderingContext2D) {\n  let fullAPIReady = Promise.resolve();\n  const state = store.getState();\n\n  if (state.advanced.fullAPI) {\n    window.Core.enableFullPDF();\n    fullAPIReady = loadScript('../core/pdf/PDFNet.js');\n  }\n\n  if (getHashParameters('disableLogs', false)) {\n    window.Core.disableLogs(true);\n  }\n\n  window._disableStreaming = getHashParameters('disableStreaming', false);\n  window.Core.setWorkerPath('../core');\n  window.Core.setResourcesPath('../core/assets');\n\n  try {\n    if (state.advanced.useSharedWorker && window.parent.WebViewer) {\n      var workerTransportPromise = window.parent.WebViewer.workerTransportPromise(window.frameElement);\n      // originally the option was just for the pdf worker transport promise, now it can be an object\n      // containing both the pdf and office promises\n      if (workerTransportPromise.pdf || workerTransportPromise.office) {\n        window.Core.setWorkerTransportPromise(workerTransportPromise);\n      } else {\n        window.Core.setWorkerTransportPromise({ 'pdf': workerTransportPromise });\n      }\n    }\n  } catch (e) {\n    console.warn(e);\n    if (e.name === 'SecurityError') {\n      console.warn('workerTransportPromise option cannot be used with CORS');\n    }\n  }\n\n  const backendType = getHashParameters('pdf');\n  if (backendType) {\n    window.Core.forceBackendType(backendType);\n  }\n\n  const { enableOptimizedWorkers } = state.advanced;\n\n  if (!enableOptimizedWorkers) {\n    window.Core.disableOptimizedWorkers();\n  }\n\n  const { preloadWorker } = state.advanced;\n\n  function initTransports() {\n    const { PDF, OFFICE, LEGACY_OFFICE, CONTENT_EDIT, ALL } = workerTypes;\n    if (preloadWorker.includes(PDF) || preloadWorker === ALL) {\n      getBackendPromise(getHashParameters('pdf', 'auto')).then(pdfType => {\n        window.Core.initPDFWorkerTransports(pdfType, {\n          workerLoadingProgress: percent => {\n            store.dispatch(actions.setLoadingProgress(percent));\n          },\n        }, window.sampleL);\n      });\n    }\n\n    if (preloadWorker.includes(OFFICE) || preloadWorker === ALL) {\n      getBackendPromise(getHashParameters('office', 'auto')).then(officeType => {\n        window.Core.initOfficeWorkerTransports(officeType, {\n          workerLoadingProgress: percent => {\n            store.dispatch(actions.setLoadingProgress(percent));\n          },\n        }, window.sampleL);\n      });\n    }\n\n    if (preloadWorker.includes(LEGACY_OFFICE) || preloadWorker === ALL) {\n      getBackendPromise(getHashParameters('legacyOffice', 'auto')).then(officeType => {\n        window.Core.initLegacyOfficeWorkerTransports(officeType, {\n          workerLoadingProgress: percent => {\n            store.dispatch(actions.setLoadingProgress(percent));\n          },\n        }, window.sampleL);\n      });\n    }\n\n    if (preloadWorker.includes(CONTENT_EDIT) || preloadWorker === ALL) {\n      window.Core.ContentEdit.preloadWorker(window.documentViewer);\n    }\n  }\n\n  loadCustomCSS(state.advanced.customCSS);\n\n  logDebugInfo();\n\n  const documentViewer = new window.Core.DocumentViewer();\n  window.documentViewer = documentViewer;\n  defineWebViewerInstanceUIAPIs(store);\n  hotkeysManager.initialize(store);\n\n  setupDocViewer();\n  setupI18n(state);\n  setUserPermission(state);\n  setAutoSwitch();\n  setDefaultToolStyles();\n  core.setToolMode(defaultTool);\n\n  const { addEventHandlers, removeEventHandlers } = eventHandler(store);\n\n  fullAPIReady.then(() => loadConfig()).then(() => {\n    if (preloadWorker) {\n      initTransports();\n    }\n\n    if (getHashParameters('disableVirtualDisplayMode', false)) {\n      const displayMode = documentViewer.getDisplayModeManager();\n      displayMode.disableVirtualDisplayMode();\n    }\n\n    if (getHashParameters('enableViewStateAnnotations', false)) {\n      const tool = documentViewer.getTool(window.Core.Tools.ToolNames.STICKY);\n      tool?.setSaveViewState(true);\n    }\n\n    setupLoadAnnotationsFromServer(store);\n\n    ReactDOM.render(\n      <Provider store={store}>\n        <PersistGate loading={null} persistor={persistor}>\n          <I18nextProvider i18n={i18next}>\n            <DndProvider backend={HTML5Backend}>\n              <App removeEventHandlers={removeEventHandlers} />\n            </DndProvider>\n          </I18nextProvider>\n        </PersistGate>\n      </Provider>,\n      document.getElementById('app'),\n    );\n  });\n\n  addEventHandlers();\n  setDefaultDisabledElements(store);\n}\n\nwindow.addEventListener('hashchange', () => {\n  window.location.reload();\n});\n\n/* The following adds a data attribute to `<html>` when user is keyboard navigating. */\n\nfunction onTab(event) {\n  if (event.key === 'Tab') {\n    document.documentElement.setAttribute('data-tabbing', 'true');\n    window.removeEventListener('keydown', onTab);\n    window.addEventListener('mousedown', onMouse);\n  }\n}\n\nfunction onMouse() {\n  document.documentElement.removeAttribute('data-tabbing');\n  window.removeEventListener('mousedown', onMouse);\n  window.addEventListener('keydown', onTab);\n}\n\nwindow.addEventListener('keydown', onTab);\n","export default CSSFile => {\n  if (CSSFile) {\n    const link = document.createElement('link');\n\n    link.rel = 'stylesheet';\n    link.type = 'text/css';\n    link.href = CSSFile;\n\n    document.getElementsByTagName('head')[0].appendChild(link);\n  }\n};","import getHashParameters from 'helpers/getHashParameters';\nimport packageConfig from '../../package.json';\n\n/* eslint-disable no-console */\nexport default () => {\n  // log UI and Core versions and warn/error if necessary\n  const coreVersion = window.Core.DocumentViewer.prototype.version;\n  const coreBuild = window.Core.DocumentViewer.prototype.build;\n  const uiVersion = packageConfig.version;\n  const webViewerJSVersion = getHashParameters('webViewerJSVersion', null);\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  const fullAPI = !!getHashParameters('pdfnet', false);\n  const disableLogs = getHashParameters('disableLogs', false);\n  if (disableLogs) {\n    return;\n  }\n\n  if (coreVersion && uiVersion) {\n    // we are using semantic versioning (ie ###.###.###) so the first number is the major version, follow by the minor version, and the patch number\n    const [coreMajorVersion, coreMinorVersion] = coreVersion\n      .split('.')\n      .map(version => parseInt(version, 10));\n    const [uiMajorVersion, uiMinorVersion] = uiVersion\n      .split('.')\n      .map(version => parseInt(version, 10));\n\n    let webViewerJSMajorVersion = null;\n    let webViewerJSMinorVersion = null;\n    if (webViewerJSVersion) {\n      [webViewerJSMajorVersion, webViewerJSMinorVersion] = webViewerJSVersion\n        .split('.')\n        .map(version => parseInt(version, 10));\n    }\n\n    if (console.table) {\n      const versions = {\n        'UI version': uiVersion,\n        'Core version': coreVersion,\n        'webviewer.min.js': webViewerJSVersion,\n        'Build': coreBuild,\n        'WebViewer Server': wvServer,\n        'Full API': fullAPI,\n      };\n      console.table(versions);\n    } else {\n      console.log(\n        `[WebViewer] UI version: ${uiVersion}, Core version: ${coreVersion}, Build: ${coreBuild}, WebViewer Server: ${wvServer}, Full API: ${fullAPI}`,\n      );\n    }\n\n    // if there's any major version differences, log with console.error\n    // if there's only minor version differences, log with console.warn\n    const webViewerComponents = [\n      {\n        name: 'Core',\n        version: coreVersion,\n        majorVersion: coreMajorVersion,\n        minorVersion: coreMinorVersion\n      },\n      {\n        name: 'UI',\n        version: uiVersion,\n        majorVersion: uiMajorVersion,\n        minorVersion: uiMinorVersion\n      },\n    ];\n\n    if (webViewerJSVersion === null) {\n      console.error(\n        'WebViewerJS version not found. Please update webviewer.min.js to the latest version.',\n      );\n    } else {\n      webViewerComponents.push({\n        name: 'webviewer.min.js',\n        version: webViewerJSVersion,\n        majorVersion: webViewerJSMajorVersion,\n        minorVersion: webViewerJSMinorVersion,\n      });\n    }\n\n    webViewerComponents.sort((a, b) => {\n      let comparison = null;\n      if (a.majorVersion !== b.majorVersion) {\n        comparison = b.majorVersion - a.majorVersion;\n      } else if (a.minorVersion !== b.minorVersion) {\n        comparison = b.minorVersion - a.minorVersion;\n      }\n      return comparison;\n    });\n\n    let warningText = '[WebViewer] Version Mismatch: ';\n    const majorVersionOutdatedComponents = [];\n    const minorVersionOutdatedComponents = [];\n    const latestComponent = webViewerComponents[0];\n\n    webViewerComponents.forEach(component => {\n      if (latestComponent.majorVersion > component.majorVersion) {\n        majorVersionOutdatedComponents.push(component.name);\n      } else if (latestComponent.minorVersion > component.minorVersion) {\n        minorVersionOutdatedComponents.push(component.name);\n      }\n    });\n    if (majorVersionOutdatedComponents.length) {\n      const outdatedComponents =\n        majorVersionOutdatedComponents.concat(minorVersionOutdatedComponents);\n      warningText += `${outdatedComponents.join(' and ')} should be updated to version ${latestComponent.version}`;\n      console.error(warningText);\n    } else if (minorVersionOutdatedComponents.length) {\n      warningText += `${minorVersionOutdatedComponents.join(' and ')} should be updated to version ${latestComponent.version}`;\n      console.warn(warningText);\n    }\n  }\n};","/**\n * Closes the document that's currently opened.\n * @method UI.closeDocument\n * @return {Promise<void>} A promise resolved after document is closed.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      setTimeout(function() {\n        instance.UI.closeDocument().then(function() {\n          console.log('Document is closed');\n        });\n      }, 3000);\n    });\n  });\n */\n\nimport core from 'core';\n\nexport default ({ dispatch }) => () => core.closeDocument(dispatch);","import { isIOS, isAndroid } from 'helpers/device';\n\nexport default () => {\n  if (isIOS || isAndroid) {\n    window.Core.Tools.Tool.ENABLE_AUTO_SWITCH = false;\n  }\n};\n","import core from 'core';\nimport actions from 'actions';\nimport { isIOS } from 'helpers/device';\nimport getDefaultPageLabels from 'helpers/getDefaultPageLabels';\n\nexport default dispatch => () => {\n  // if we are opening an password-protected pdf,\n  // this event will only be trigger after we enter the correct password, so it's safe to close this modal here\n  dispatch(actions.closeElement('passwordModal'));\n\n  const totalPages = core.getTotalPages();\n\n  if (isIOS) {\n    // enough so that we can enable high res thumb\n    window.Core.SetPreRenderLevel(2);\n  }\n  const displayModeManager = window.documentViewer.getDisplayModeManager();\n  if (totalPages >= 500 && !displayModeManager.isVirtualDisplayEnabled()) {\n    core.setDisplayMode(window.Core.DisplayModes.Single);\n  }\n\n  dispatch(actions.setPageLabels(getDefaultPageLabels(totalPages)));\n  dispatch(actions.setTotalPages(totalPages));\n\n  const currentPage = core.getCurrentPage();\n  dispatch(actions.setCurrentPage(currentPage));\n};\n","import core from 'core';\nimport actions from 'actions';\n\nexport default dispatch => () => {\n  dispatch(actions.closeElements(['annotationPopup', 'textPopup', 'contextMenuPopup']));\n  dispatch(actions.setDisplayMode(core.getDisplayMode()));\n};","import core from 'core';\nimport actions from 'actions';\nimport { isAndroid } from 'helpers/device';\n\nexport default dispatch => fitMode => {\n  const docViewer = core.getDocumentViewer();\n\n  if (fitMode === docViewer.FitMode.Zoom) {\n    dispatch(actions.setFitMode('Zoom'));\n  } else if (fitMode === docViewer.FitMode.FitWidth) {\n    dispatch(actions.setFitMode('FitWidth'));\n  } else if (fitMode === docViewer.FitMode.FitPage) {\n    // In Android, if you focus on an input field, it brings up virtual keyboard,\n    // and page gets re-rendered, which blurs out.\n    // To prevent that, we change the fit mode to Zoom.\n    if (isAndroid) {\n      core.fitToZoom();\n    }\n    dispatch(actions.setFitMode('FitPage'));\n  }\n};","import actions from 'actions';\n\nexport default dispatch => rotation => {\n  dispatch(actions.setRotation(rotation));\n};","import actions from 'actions';\n\nexport default dispatch => zoom => {\n  dispatch(actions.setZoom(zoom));\n};","import actions from 'actions';\n\nexport default dispatch => pageNumber => {\n  dispatch(actions.setCurrentPage(pageNumber));\n};","import core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\nimport enableTools from 'src/apis/enableTools';\nimport disableTools from 'src/apis/disableTools';\nimport disableFeatures from 'src/apis/disableFeatures';\nimport enableFeatures from 'src/apis/enableFeatures';\nimport Feature from 'constants/feature';\n\nexport default store => () => {\n  const { dispatch } = store;\n  const isReadOnly = core.getIsReadOnly();\n\n  if (isReadOnly) {\n    disableTools(store)();\n    disableFeatures(store)([Feature.Annotating]);\n    core.setToolMode(defaultTool);\n    dispatch(actions.setActiveToolGroup(''));\n  } else {\n    enableTools(store)();\n    enableFeatures(store)([Feature.Annotating]);\n  }\n\n  dispatch(actions.setReadOnly(core.getIsReadOnly()));\n  dispatch(actions.setAdminUser(core.getIsAdminUser()));\n  dispatch(actions.setUserName(core.getCurrentUser()));\n  core.drawAnnotationsFromList(core.getSelectedAnnotations());\n};","import core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\n\nexport default dispatch => stampAnnotation => {\n  core.setToolMode(defaultTool);\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(stampAnnotation);\n};","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\n\nexport default () => signatureAnnotation => {\n  core.setToolMode(defaultTool);\n  core.getTool('AnnotationCreateSignature').hidePreview();\n  core.selectAnnotation(signatureAnnotation);\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n\n  signatureTool.annot = null;\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport defaultTool from 'constants/defaultTool';\n\nexport default ({ dispatch, getState }) => annotation => {\n  const state = getState();\n  const isNotesPanelDisabled = selectors.isElementDisabled(state, 'notesPanel');\n  const isNotesPanelOpen = selectors.isElementOpen(state, 'notesPanel');\n\n  if (isNotesPanelDisabled) {\n    return;\n  }\n\n  core.setToolMode(defaultTool);\n  dispatch(actions.setActiveToolGroup(''));\n  dispatch(actions.closeElement('searchPanel'));\n  dispatch(actions.closeElement('redactionPanel'));\n  dispatch(actions.openElement('notesPanel'));\n  // wait for the notes panel to be fully opened before focusing\n  setTimeout(() => {\n    core.selectAnnotation(annotation);\n    dispatch(actions.triggerNoteEditing());\n  }, isNotesPanelOpen ? 0 : 400);\n};\n","import actions from 'actions';\n\nexport default ({ dispatch }) => () => {\n  let isFullScreen = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;\n  isFullScreen = !!isFullScreen;\n\n  dispatch(actions.setFullScreen(isFullScreen));\n};","import core from 'core';\nimport actions from 'actions';\nimport getDefaultPageLabels from 'helpers/getDefaultPageLabels';\n\nexport default dispatch => ({ added, removed, moved }) => {\n  const movedKeys = Object.keys(moved);\n  if (added.length || removed.length || movedKeys.length) {\n    const totalPages = core.getTotalPages();\n    dispatch(actions.setTotalPages(totalPages));\n\n    core.getOutlines(outlines => {\n      dispatch(actions.setOutlines(outlines));\n    });\n\n    setTimeout(() => {\n      // this 'onLayoutChange' handler get trigger before the other 'onLayoutChange' event handler in core (that added by annotationManager to update page numbers) gets triggered\n      // use 'setTimeout' so the other 'onLayoutChange' handler finishes before we call 'setPageLabels'\n      dispatch(actions.setPageLabels(getDefaultPageLabels(totalPages)));\n    }, 0);\n  }\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\n\nexport default () => rubberStampAnnotation => {\n  core.setToolMode(defaultTool);\n  core.getTool('AnnotationCreateRubberStamp').hidePreview();\n  core.selectAnnotation(rubberStampAnnotation);\n};","import disableElements from 'src/apis/disableElements';\nimport enableElements from 'src/apis/enableElements';\n\nexport default store => isReadOnly => {\n  if (isReadOnly) {\n    disableElements(store)(['documentControl', 'thumbnailControl']);\n  } else {\n    enableElements(store)(['documentControl', 'thumbnailControl']);\n  }\n};","import core from 'core';\n\nexport default store => pageNumber => {\n  const state = store.getState();\n  if (state.viewer.isAccessibleMode) {\n    core.getDocument().loadPageText(pageNumber, text => {\n      const textContainer = document.createElement('div');\n      textContainer.tabIndex = 0;\n      // TODO: page-num\n      textContainer.textContent = `Page ${pageNumber}.\\n${text}\\nEnd of page ${pageNumber}.`;\n      textContainer.style = 'font-size: 5px; overflow: auto; position: absolute; z-index: -99999; top: 0; bottom: 0;';\n      const id = `pageText${pageNumber}`;\n      textContainer.id = id;\n      // remove duplicate / pre-existing divs first before appending again\n      // TODO: page-num\n      const pageContainerElement = document.getElementById(`pageContainer${pageNumber}`);\n      const existingTextContainer = pageContainerElement.querySelector(`#${id}`);\n      if (existingTextContainer) {\n        pageContainerElement.removeChild(existingTextContainer);\n      }\n      pageContainerElement.appendChild(textContainer);\n    });\n  }\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\n\nexport default () => () => {\n  core.setToolMode(defaultTool);\n};\n","import { saveAs } from 'file-saver';\n\nexport default () => fileMeta => {\n  const { fileData, fileName } = fileMeta;\n  saveAs(fileData, fileName);\n};\n","import core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default (dispatch, store) => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  let savedSignatures = signatureTool.getSavedSignatures();\n  const maxSignaturesCount = selectors.getMaxSignaturesCount(store.getState());\n  const numberOfSignaturesToRemove = savedSignatures.length - maxSignaturesCount;\n\n  if (numberOfSignaturesToRemove > 0) {\n    // to keep the UI sync with the signatures saved in the tool\n    for (let i = 0; i < numberOfSignaturesToRemove; i++) {\n      signatureTool.deleteSavedSignature(0);\n    }\n  }\n\n  savedSignatures = signatureTool.getSavedSignatures();\n  const signaturesToStore = await getSignatureDataToStore(savedSignatures);\n  dispatch(actions.setSavedSignatures(signaturesToStore));\n};","import core from 'core';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default dispatch => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const coreSavedSignatures = signatureTool.getSavedSignatures();\n  const newSavedSignatures = await getSignatureDataToStore(coreSavedSignatures);\n  dispatch(actions.setSavedSignatures(newSavedSignatures));\n};\n","import actions from 'actions';\n\nexport default dispatch => () => {\n  const canUndo = window.documentViewer.getAnnotationHistoryManager().canUndo();\n  dispatch(actions.setCanUndo(canUndo));\n  const canRedo = window.documentViewer.getAnnotationHistoryManager().canRedo();\n  dispatch(actions.setCanRedo(canRedo));\n};\n","import actions from 'actions';\n\nexport default dispatch => () => {\n  dispatch(actions.setCustomElementOverrides('downloadButton', { disabled: true }));\n  dispatch(actions.setCustomElementOverrides('printButton', { disabled: true }));\n  dispatch(actions.setCustomElementOverrides('filePickerButton', { disabled: true }));\n};\n","import actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (dispatch, store) => () => {\n  dispatch(actions.setCustomElementOverrides('downloadButton', { disabled: false }));\n  dispatch(actions.setCustomElementOverrides('printButton', { disabled: false }));\n  dispatch(actions.setCustomElementOverrides('filePickerButton', { disabled: false }));\n\n  // Ensure we are not left in the Forms toolbargroup when we end form builder mode\n  const currentToolbarGroup = selectors.getCurrentToolbarGroup(store.getState());\n  if (currentToolbarGroup === 'toolbarGroup-Forms') {\n    dispatch(actions.setToolbarGroup('toolbarGroup-View'));\n  }\n};\n","import core from 'core';\nimport { workerTypes } from 'constants/types';\n\nexport default store => {\n  const state = store.getState();\n  let { serverUrl } = state.advanced;\n  const { serverUrlHeaders } = state.advanced;\n\n  if (!serverUrl) {\n    return;\n  }\n\n  const getAnnotsFromServer = (originalData, callback) => {\n    const documentId = core.getDocument().getDocumentId();\n    if (window.instance.UI.serverFailed) {\n      callback(originalData);\n      return;\n    }\n    if (window.instance.UI.loadedFromServer) {\n      callback('');\n      return;\n    }\n\n    // make sure we are not getting cached responses\n    if (serverUrl.indexOf('?') === -1) {\n      serverUrl += `?_=${Date.now()}`;\n    } else {\n      serverUrl += `&_=${Date.now()}`;\n    }\n\n    if (documentId) {\n      serverUrl += `&did=${documentId}`;\n    }\n\n    serverUrl = documentId ? `${serverUrl}?did=${documentId}` : serverUrl;\n\n    fetch(serverUrl, {\n      headers: serverUrlHeaders,\n      credentials: 'include'\n    })\n      .then(response => {\n        if (response.ok) {\n          return response.text();\n        }\n\n        return Promise.reject(response);\n      })\n      .then(data => {\n        if (data !== null && data !== undefined) {\n          window.instance.UI.loadedFromServer = true;\n          callback(data);\n        } else {\n          window.instance.UI.serverFailed = true;\n          callback(originalData);\n        }\n      })\n      .catch(e => {\n        window.instance.UI.serverFailed = true;\n        console.warn(\n          `Error ${e.status}: Annotations could not be loaded from the server.`,\n        );\n        callback(originalData);\n      });\n  };\n\n  core.setInternalAnnotationsTransform(getAnnotsFromServer);\n  core.setPagesUpdatedInternalAnnotationsTransform(\n    (origData, pages, callback) => {\n      getAnnotsFromServer(origData, callback);\n    },\n  );\n  core.addEventListener('documentLoaded', function() {\n    if (window.documentViewer.getDocument().getType() === workerTypes.OFFICE) {\n      getAnnotsFromServer(null, function(data) {\n        window.documentViewer.getAnnotationManager().importAnnotations(data);\n      });\n    }\n  });\n};\n","import core from 'core';\r\nimport createDisableFeatures from 'src/apis/disableFeatures';\r\nimport getHashParameters from 'helpers/getHashParameters';\r\nimport { isIOS, isMobileDevice } from 'helpers/device';\r\nimport { PRIORITY_THREE, PRIORITY_TWO, PRIORITY_ONE } from 'constants/actionPriority';\r\nimport Feature from 'constants/feature';\r\nimport actions from 'actions';\r\n\r\nexport default store => {\r\n  const { dispatch, getState } = store;\r\n  const state = getState();\r\n\r\n  const disableFeatures = createDisableFeatures(store);\r\n\r\n  if (state.advanced.defaultDisabledElements) {\r\n    const elements = state.advanced.defaultDisabledElements.split(',');\r\n    dispatch(actions.disableElements(elements, PRIORITY_THREE));\r\n  }\r\n\r\n  // disabling/enabling elements will be handled in onUpdateAnnotationPermission.js\r\n  // the reason for doing this is to avoid duplicate code for handling the `enableReadOnly` constructor option\r\n  // and the effect of programmatically calling instance.setReadOnly\r\n  if (state.viewer.isReadOnly) {\r\n    core.setReadOnly(state.viewer.isReadOnly);\r\n  }\r\n\r\n  const notesInLeftPanel = getHashParameters('notesInLeftPanel', false);\r\n  if (notesInLeftPanel) {\r\n    dispatch(\r\n      actions.disableElements(\r\n        [\r\n          'toggleNotesButton',\r\n        ]\r\n      )\r\n    );\r\n  }\r\n\r\n  const annotationDisabled = !getHashParameters('a', false);\r\n  if (annotationDisabled) {\r\n    disableFeatures([Feature.Annotations]);\r\n  }\r\n\r\n  const filePickerDisabled = !getHashParameters('filepicker', false);\r\n  if (filePickerDisabled) {\r\n    disableFeatures([Feature.FilePicker]);\r\n  }\r\n\r\n  const hideAnnotationPanel = getHashParameters('hideAnnotationPanel', false);\r\n  if (hideAnnotationPanel) {\r\n    disableFeatures([Feature.NotesPanel]);\r\n  }\r\n\r\n  const toolGroupReorderingDisabled = getHashParameters('disableToolGroupReordering', false);\r\n  if (toolGroupReorderingDisabled) {\r\n    dispatch(actions.setEnableToolGroupReordering(false));\r\n  }\r\n\r\n  const measurementsDisabled = !getHashParameters('enableMeasurement', false);\r\n  if (measurementsDisabled) {\r\n    disableFeatures([Feature.Measurement]);\r\n  } else {\r\n    dispatch(\r\n      actions.disableElements(\r\n        [\r\n          'cloudyRectangleAreaToolGroupButton',\r\n        ]\r\n      )\r\n    );\r\n  }\r\n\r\n  const redactionsDisabled = !(\r\n    getHashParameters('enableRedaction', false) || core.isCreateRedactionEnabled()\r\n  );\r\n  if (redactionsDisabled) {\r\n    disableFeatures([Feature.Redaction]);\r\n  }\r\n\r\n  const toolBarDisabled = !getHashParameters('toolbar', true);\r\n  if (toolBarDisabled) {\r\n    dispatch(actions.disableElement('header', PRIORITY_ONE));\r\n  }\r\n\r\n  if (isMobileDevice) {\r\n    dispatch(actions.disableElement('marqueeToolButton', PRIORITY_THREE));\r\n  } else {\r\n    // we could have used the 'hidden' property in the initialState.js to hide this button by css,\r\n    // but that actually checks the window.innerWidth to hide the button, not based on the actual device.\r\n    // we could potentially improve the 'hidden' property in the future.\r\n    dispatch(actions.disableElement('textSelectButton', PRIORITY_THREE));\r\n  }\r\n\r\n  // disabling the fullscreen button in iOS because it only has partial support for the fullscreen mode\r\n  // which is also buggy in WebViewer the last time we tested it\r\n  if (isIOS) {\r\n    dispatch(actions.disableElements(['fullscreenButton'], PRIORITY_THREE));\r\n  }\r\n\r\n  if (!core.isFullPDFEnabled()) {\r\n    dispatch(\r\n      actions.disableElements(\r\n        [\r\n          'measurementSnappingOption',\r\n          'signaturePanel',\r\n          'signaturePanelButton',\r\n        ],\r\n        PRIORITY_THREE,\r\n      ),\r\n    );\r\n    disableFeatures([Feature.OutlineEditing]);\r\n  }\r\n\r\n  dispatch(actions.disableElements(['contentEditButton'], PRIORITY_TWO));\r\n\r\n  dispatch(\r\n    actions.disableElements(\r\n      [\r\n        // disable layersPanel by default, it will be enabled in onDocumentLoaded.js\r\n        'layersPanel',\r\n        'layersPanelButton',\r\n        'bookmarksPanel',\r\n        'bookmarksPanelButton',\r\n        'wildCardSearchOption',\r\n        'readerPageTransitionButton',\r\n        'mathSymbolsButton',\r\n        'threeDToolGroupButton',\r\n        'attachmentPanelButton'\r\n      ],\r\n      PRIORITY_ONE,\r\n    ),\r\n  );\r\n\r\n  const enableChangeView = getHashParameters('ChangeView', false);\r\n  if (!enableChangeView) {\r\n    disableFeatures([Feature.ChangeView]);\r\n  }\r\n};","export var INIT_COORDS = 'dnd-core/INIT_COORDS';\nexport var BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexport var PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexport var HOVER = 'dnd-core/HOVER';\nexport var DROP = 'dnd-core/DROP';\nexport var END_DRAG = 'dnd-core/END_DRAG';","import { INIT_COORDS } from '../types';\nexport function setClientOffset(clientOffset, sourceClientOffset) {\n  return {\n    type: INIT_COORDS,\n    payload: {\n      sourceClientOffset: sourceClientOffset || null,\n      clientOffset: clientOffset || null\n    }\n  };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get(obj, path, defaultValue) {\n  return path.split('.').reduce(function (a, c) {\n    return a && a[c] ? a[c] : defaultValue || null;\n  }, obj);\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n  return items.filter(function (i) {\n    return i !== item;\n  });\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isString(input) {\n  return typeof input === 'string';\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isObject(input) {\n  return _typeof(input) === 'object';\n}\n/**\n * repalcement for _.xor\n * @param itemsA\n * @param itemsB\n */\n\nexport function xor(itemsA, itemsB) {\n  var map = new Map();\n\n  var insertItem = function insertItem(item) {\n    map.set(item, map.has(item) ? map.get(item) + 1 : 1);\n  };\n\n  itemsA.forEach(insertItem);\n  itemsB.forEach(insertItem);\n  var result = [];\n  map.forEach(function (count, key) {\n    if (count === 1) {\n      result.push(key);\n    }\n  });\n  return result;\n}\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\n\nexport function intersection(itemsA, itemsB) {\n  return itemsA.filter(function (t) {\n    return itemsB.indexOf(t) > -1;\n  });\n}","import { invariant } from '@react-dnd/invariant';\nimport { setClientOffset } from './local/setClientOffset';\nimport { isObject } from '../../utils/js_utils';\nimport { BEGIN_DRAG, INIT_COORDS } from './types';\nvar ResetCoordinatesAction = {\n  type: INIT_COORDS,\n  payload: {\n    clientOffset: null,\n    sourceClientOffset: null\n  }\n};\nexport function createBeginDrag(manager) {\n  return function beginDrag() {\n    var sourceIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      publishSource: true\n    };\n    var _options$publishSourc = options.publishSource,\n        publishSource = _options$publishSourc === void 0 ? true : _options$publishSourc,\n        clientOffset = options.clientOffset,\n        getSourceClientOffset = options.getSourceClientOffset;\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry(); // Initialize the coordinates using the client offset\n\n    manager.dispatch(setClientOffset(clientOffset));\n    verifyInvariants(sourceIds, monitor, registry); // Get the draggable source\n\n    var sourceId = getDraggableSource(sourceIds, monitor);\n\n    if (sourceId === null) {\n      manager.dispatch(ResetCoordinatesAction);\n      return;\n    } // Get the source client offset\n\n\n    var sourceClientOffset = null;\n\n    if (clientOffset) {\n      if (!getSourceClientOffset) {\n        throw new Error('getSourceClientOffset must be defined');\n      }\n\n      verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n      sourceClientOffset = getSourceClientOffset(sourceId);\n    } // Initialize the full coordinates\n\n\n    manager.dispatch(setClientOffset(clientOffset, sourceClientOffset));\n    var source = registry.getSource(sourceId);\n    var item = source.beginDrag(monitor, sourceId); // If source.beginDrag returns null, this is an indicator to cancel the drag\n\n    if (item == null) {\n      return undefined;\n    }\n\n    verifyItemIsObject(item);\n    registry.pinSource(sourceId);\n    var itemType = registry.getSourceType(sourceId);\n    return {\n      type: BEGIN_DRAG,\n      payload: {\n        itemType: itemType,\n        item: item,\n        sourceId: sourceId,\n        clientOffset: clientOffset || null,\n        sourceClientOffset: sourceClientOffset || null,\n        isSourcePublic: !!publishSource\n      }\n    };\n  };\n}\n\nfunction verifyInvariants(sourceIds, monitor, registry) {\n  invariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n  sourceIds.forEach(function (sourceId) {\n    invariant(registry.getSource(sourceId), 'Expected sourceIds to be registered.');\n  });\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n  invariant(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\n\nfunction verifyItemIsObject(item) {\n  invariant(isObject(item), 'Item must be an object.');\n}\n\nfunction getDraggableSource(sourceIds, monitor) {\n  var sourceId = null;\n\n  for (var i = sourceIds.length - 1; i >= 0; i--) {\n    if (monitor.canDragSource(sourceIds[i])) {\n      sourceId = sourceIds[i];\n      break;\n    }\n  }\n\n  return sourceId;\n}","import { PUBLISH_DRAG_SOURCE } from './types';\nexport function createPublishDragSource(manager) {\n  return function publishDragSource() {\n    var monitor = manager.getMonitor();\n\n    if (monitor.isDragging()) {\n      return {\n        type: PUBLISH_DRAG_SOURCE\n      };\n    }\n  };\n}","export function matchesType(targetType, draggedItemType) {\n  if (draggedItemType === null) {\n    return targetType === null;\n  }\n\n  return Array.isArray(targetType) ? targetType.some(function (t) {\n    return t === draggedItemType;\n  }) : targetType === draggedItemType;\n}","import { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../../utils/matchesType';\nimport { HOVER } from './types';\nexport function createHover(manager) {\n  return function hover(targetIdsArg) {\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        clientOffset = _ref.clientOffset;\n\n    verifyTargetIdsIsArray(targetIdsArg);\n    var targetIds = targetIdsArg.slice(0);\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    checkInvariants(targetIds, monitor, registry);\n    var draggedItemType = monitor.getItemType();\n    removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n    hoverAllTargets(targetIds, monitor, registry);\n    return {\n      type: HOVER,\n      payload: {\n        targetIds: targetIds,\n        clientOffset: clientOffset || null\n      }\n    };\n  };\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n  invariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\n\nfunction checkInvariants(targetIds, monitor, registry) {\n  invariant(monitor.isDragging(), 'Cannot call hover while not dragging.');\n  invariant(!monitor.didDrop(), 'Cannot call hover after drop.');\n\n  for (var i = 0; i < targetIds.length; i++) {\n    var targetId = targetIds[i];\n    invariant(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n    var target = registry.getTarget(targetId);\n    invariant(target, 'Expected targetIds to be registered.');\n  }\n}\n\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n  // Remove those targetIds that don't match the targetType.  This\n  // fixes shallow isOver which would only be non-shallow because of\n  // non-matching targets.\n  for (var i = targetIds.length - 1; i >= 0; i--) {\n    var targetId = targetIds[i];\n    var targetType = registry.getTargetType(targetId);\n\n    if (!matchesType(targetType, draggedItemType)) {\n      targetIds.splice(i, 1);\n    }\n  }\n}\n\nfunction hoverAllTargets(targetIds, monitor, registry) {\n  // Finally call hover on all matching targets.\n  targetIds.forEach(function (targetId) {\n    var target = registry.getTarget(targetId);\n    target.hover(monitor, targetId);\n  });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { DROP } from './types';\nimport { isObject } from '../../utils/js_utils';\nexport function createDrop(manager) {\n  return function drop() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    verifyInvariants(monitor);\n    var targetIds = getDroppableTargets(monitor); // Multiple actions are dispatched here, which is why this doesn't return an action\n\n    targetIds.forEach(function (targetId, index) {\n      var dropResult = determineDropResult(targetId, index, registry, monitor);\n      var action = {\n        type: DROP,\n        payload: {\n          dropResult: _objectSpread(_objectSpread({}, options), dropResult)\n        }\n      };\n      manager.dispatch(action);\n    });\n  };\n}\n\nfunction verifyInvariants(monitor) {\n  invariant(monitor.isDragging(), 'Cannot call drop while not dragging.');\n  invariant(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\n\nfunction determineDropResult(targetId, index, registry, monitor) {\n  var target = registry.getTarget(targetId);\n  var dropResult = target ? target.drop(monitor, targetId) : undefined;\n  verifyDropResultType(dropResult);\n\n  if (typeof dropResult === 'undefined') {\n    dropResult = index === 0 ? {} : monitor.getDropResult();\n  }\n\n  return dropResult;\n}\n\nfunction verifyDropResultType(dropResult) {\n  invariant(typeof dropResult === 'undefined' || isObject(dropResult), 'Drop result must either be an object or undefined.');\n}\n\nfunction getDroppableTargets(monitor) {\n  var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);\n  targetIds.reverse();\n  return targetIds;\n}","import { invariant } from '@react-dnd/invariant';\nimport { END_DRAG } from './types';\nexport function createEndDrag(manager) {\n  return function endDrag() {\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    verifyIsDragging(monitor);\n    var sourceId = monitor.getSourceId();\n\n    if (sourceId != null) {\n      var source = registry.getSource(sourceId, true);\n      source.endDrag(monitor, sourceId);\n      registry.unpinSource();\n    }\n\n    return {\n      type: END_DRAG\n    };\n  };\n}\n\nfunction verifyIsDragging(monitor) {\n  invariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createDragDropActions } from '../actions/dragDrop';\nexport var DragDropManagerImpl = /*#__PURE__*/function () {\n  function DragDropManagerImpl(store, monitor) {\n    var _this = this;\n\n    _classCallCheck(this, DragDropManagerImpl);\n\n    _defineProperty(this, \"store\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"backend\", void 0);\n\n    _defineProperty(this, \"isSetUp\", false);\n\n    _defineProperty(this, \"handleRefCountChange\", function () {\n      var shouldSetUp = _this.store.getState().refCount > 0;\n\n      if (_this.backend) {\n        if (shouldSetUp && !_this.isSetUp) {\n          _this.backend.setup();\n\n          _this.isSetUp = true;\n        } else if (!shouldSetUp && _this.isSetUp) {\n          _this.backend.teardown();\n\n          _this.isSetUp = false;\n        }\n      }\n    });\n\n    this.store = store;\n    this.monitor = monitor;\n    store.subscribe(this.handleRefCountChange);\n  }\n\n  _createClass(DragDropManagerImpl, [{\n    key: \"receiveBackend\",\n    value: function receiveBackend(backend) {\n      this.backend = backend;\n    }\n  }, {\n    key: \"getMonitor\",\n    value: function getMonitor() {\n      return this.monitor;\n    }\n  }, {\n    key: \"getBackend\",\n    value: function getBackend() {\n      return this.backend;\n    }\n  }, {\n    key: \"getRegistry\",\n    value: function getRegistry() {\n      return this.monitor.registry;\n    }\n  }, {\n    key: \"getActions\",\n    value: function getActions() {\n      /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n      var manager = this;\n      var dispatch = this.store.dispatch;\n\n      function bindActionCreator(actionCreator) {\n        return function () {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n\n          var action = actionCreator.apply(manager, args);\n\n          if (typeof action !== 'undefined') {\n            dispatch(action);\n          }\n        };\n      }\n\n      var actions = createDragDropActions(this);\n      return Object.keys(actions).reduce(function (boundActions, key) {\n        var action = actions[key];\n        boundActions[key] = bindActionCreator(action);\n        return boundActions;\n      }, {});\n    }\n  }, {\n    key: \"dispatch\",\n    value: function dispatch(action) {\n      this.store.dispatch(action);\n    }\n  }]);\n\n  return DragDropManagerImpl;\n}();","import { createBeginDrag } from './beginDrag';\nimport { createPublishDragSource } from './publishDragSource';\nimport { createHover } from './hover';\nimport { createDrop } from './drop';\nimport { createEndDrag } from './endDrag';\nexport * from './types';\nexport function createDragDropActions(manager) {\n  return {\n    beginDrag: createBeginDrag(manager),\n    publishDragSource: createPublishDragSource(manager),\n    hover: createHover(manager),\n    drop: createDrop(manager),\n    endDrag: createEndDrag(manager)\n  };\n}","export var strictEquality = function strictEquality(a, b) {\n  return a === b;\n};\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\n\nexport function areCoordsEqual(offsetA, offsetB) {\n  if (!offsetA && !offsetB) {\n    return true;\n  } else if (!offsetA || !offsetB) {\n    return false;\n  } else {\n    return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n  }\n}\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\n\nexport function areArraysEqual(a, b) {\n  var isEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : strictEquality;\n\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  for (var i = 0; i < a.length; ++i) {\n    if (!isEqual(a[i], b[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { INIT_COORDS, BEGIN_DRAG, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { areCoordsEqual } from '../utils/equality';\nvar initialState = {\n  initialSourceClientOffset: null,\n  initialClientOffset: null,\n  clientOffset: null\n};\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  var payload = action.payload;\n\n  switch (action.type) {\n    case INIT_COORDS:\n    case BEGIN_DRAG:\n      return {\n        initialSourceClientOffset: payload.sourceClientOffset,\n        initialClientOffset: payload.clientOffset,\n        clientOffset: payload.clientOffset\n      };\n\n    case HOVER:\n      if (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n        return state;\n      }\n\n      return _objectSpread(_objectSpread({}, state), {}, {\n        clientOffset: payload.clientOffset\n      });\n\n    case END_DRAG:\n    case DROP:\n      return initialState;\n\n    default:\n      return state;\n  }\n}","export var ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexport var ADD_TARGET = 'dnd-core/ADD_TARGET';\nexport var REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexport var REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nexport function addSource(sourceId) {\n  return {\n    type: ADD_SOURCE,\n    payload: {\n      sourceId: sourceId\n    }\n  };\n}\nexport function addTarget(targetId) {\n  return {\n    type: ADD_TARGET,\n    payload: {\n      targetId: targetId\n    }\n  };\n}\nexport function removeSource(sourceId) {\n  return {\n    type: REMOVE_SOURCE,\n    payload: {\n      sourceId: sourceId\n    }\n  };\n}\nexport function removeTarget(targetId) {\n  return {\n    type: REMOVE_TARGET,\n    payload: {\n      targetId: targetId\n    }\n  };\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { REMOVE_TARGET } from '../actions/registry';\nimport { without } from '../utils/js_utils';\nvar initialState = {\n  itemType: null,\n  item: null,\n  sourceId: null,\n  targetIds: [],\n  dropResult: null,\n  didDrop: false,\n  isSourcePublic: null\n};\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  var payload = action.payload;\n\n  switch (action.type) {\n    case BEGIN_DRAG:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        itemType: payload.itemType,\n        item: payload.item,\n        sourceId: payload.sourceId,\n        isSourcePublic: payload.isSourcePublic,\n        dropResult: null,\n        didDrop: false\n      });\n\n    case PUBLISH_DRAG_SOURCE:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isSourcePublic: true\n      });\n\n    case HOVER:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        targetIds: payload.targetIds\n      });\n\n    case REMOVE_TARGET:\n      if (state.targetIds.indexOf(payload.targetId) === -1) {\n        return state;\n      }\n\n      return _objectSpread(_objectSpread({}, state), {}, {\n        targetIds: without(state.targetIds, payload.targetId)\n      });\n\n    case DROP:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        dropResult: payload.dropResult,\n        didDrop: true,\n        targetIds: []\n      });\n\n    case END_DRAG:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        itemType: null,\n        item: null,\n        sourceId: null,\n        dropResult: null,\n        didDrop: false,\n        isSourcePublic: null,\n        targetIds: []\n      });\n\n    default:\n      return state;\n  }\n}","import { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case ADD_SOURCE:\n    case ADD_TARGET:\n      return state + 1;\n\n    case REMOVE_SOURCE:\n    case REMOVE_TARGET:\n      return state - 1;\n\n    default:\n      return state;\n  }\n}","import { intersection } from './js_utils';\nexport var NONE = [];\nexport var ALL = [];\nNONE.__IS_NONE__ = true;\nALL.__IS_ALL__ = true;\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\n\nexport function areDirty(dirtyIds, handlerIds) {\n  if (dirtyIds === NONE) {\n    return false;\n  }\n\n  if (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n    return true;\n  }\n\n  var commonIds = intersection(handlerIds, dirtyIds);\n  return commonIds.length > 0;\n}","import { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nimport { areArraysEqual } from '../utils/equality';\nimport { NONE, ALL } from '../utils/dirtiness';\nimport { xor } from '../utils/js_utils';\nexport function reduce() {\n  var _state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NONE;\n\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case HOVER:\n      break;\n\n    case ADD_SOURCE:\n    case ADD_TARGET:\n    case REMOVE_TARGET:\n    case REMOVE_SOURCE:\n      return NONE;\n\n    case BEGIN_DRAG:\n    case PUBLISH_DRAG_SOURCE:\n    case END_DRAG:\n    case DROP:\n    default:\n      return ALL;\n  }\n\n  var _action$payload = action.payload,\n      _action$payload$targe = _action$payload.targetIds,\n      targetIds = _action$payload$targe === void 0 ? [] : _action$payload$targe,\n      _action$payload$prevT = _action$payload.prevTargetIds,\n      prevTargetIds = _action$payload$prevT === void 0 ? [] : _action$payload$prevT;\n  var result = xor(targetIds, prevTargetIds);\n  var didChange = result.length > 0 || !areArraysEqual(targetIds, prevTargetIds);\n\n  if (!didChange) {\n    return NONE;\n  } // Check the target ids at the innermost position. If they are valid, add them\n  // to the result\n\n\n  var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n  var innermostTargetId = targetIds[targetIds.length - 1];\n\n  if (prevInnermostTargetId !== innermostTargetId) {\n    if (prevInnermostTargetId) {\n      result.push(prevInnermostTargetId);\n    }\n\n    if (innermostTargetId) {\n      result.push(innermostTargetId);\n    }\n  }\n\n  return result;\n}","export function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  return state + 1;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { reduce as dragOffset } from './dragOffset';\nimport { reduce as dragOperation } from './dragOperation';\nimport { reduce as refCount } from './refCount';\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds';\nimport { reduce as stateId } from './stateId';\nimport { get } from '../utils/js_utils';\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  return {\n    dirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n      type: action.type,\n      payload: _objectSpread(_objectSpread({}, action.payload), {}, {\n        prevTargetIds: get(state, 'dragOperation.targetIds', [])\n      })\n    }),\n    dragOffset: dragOffset(state.dragOffset, action),\n    refCount: refCount(state.refCount, action),\n    dragOperation: dragOperation(state.dragOperation, action),\n    stateId: stateId(state.stateId)\n  };\n}","/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a, b) {\n  return {\n    x: a.x + b.x,\n    y: a.y + b.y\n  };\n}\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\n\nexport function subtract(a, b) {\n  return {\n    x: a.x - b.x,\n    y: a.y - b.y\n  };\n}\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\n\nexport function getSourceClientOffset(state) {\n  var clientOffset = state.clientOffset,\n      initialClientOffset = state.initialClientOffset,\n      initialSourceClientOffset = state.initialSourceClientOffset;\n\n  if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n    return null;\n  }\n\n  return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\n\nexport function getDifferenceFromInitialOffset(state) {\n  var clientOffset = state.clientOffset,\n      initialClientOffset = state.initialClientOffset;\n\n  if (!clientOffset || !initialClientOffset) {\n    return null;\n  }\n\n  return subtract(clientOffset, initialClientOffset);\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../utils/matchesType';\nimport { getSourceClientOffset as _getSourceClientOffset, getDifferenceFromInitialOffset as _getDifferenceFromInitialOffset } from '../utils/coords';\nimport { areDirty } from '../utils/dirtiness';\nexport var DragDropMonitorImpl = /*#__PURE__*/function () {\n  function DragDropMonitorImpl(store, registry) {\n    _classCallCheck(this, DragDropMonitorImpl);\n\n    _defineProperty(this, \"store\", void 0);\n\n    _defineProperty(this, \"registry\", void 0);\n\n    this.store = store;\n    this.registry = registry;\n  }\n\n  _createClass(DragDropMonitorImpl, [{\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        handlerIds: undefined\n      };\n      var handlerIds = options.handlerIds;\n      invariant(typeof listener === 'function', 'listener must be a function.');\n      invariant(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n      var prevStateId = this.store.getState().stateId;\n\n      var handleChange = function handleChange() {\n        var state = _this.store.getState();\n\n        var currentStateId = state.stateId;\n\n        try {\n          var canSkipListener = currentStateId === prevStateId || currentStateId === prevStateId + 1 && !areDirty(state.dirtyHandlerIds, handlerIds);\n\n          if (!canSkipListener) {\n            listener();\n          }\n        } finally {\n          prevStateId = currentStateId;\n        }\n      };\n\n      return this.store.subscribe(handleChange);\n    }\n  }, {\n    key: \"subscribeToOffsetChange\",\n    value: function subscribeToOffsetChange(listener) {\n      var _this2 = this;\n\n      invariant(typeof listener === 'function', 'listener must be a function.');\n      var previousState = this.store.getState().dragOffset;\n\n      var handleChange = function handleChange() {\n        var nextState = _this2.store.getState().dragOffset;\n\n        if (nextState === previousState) {\n          return;\n        }\n\n        previousState = nextState;\n        listener();\n      };\n\n      return this.store.subscribe(handleChange);\n    }\n  }, {\n    key: \"canDragSource\",\n    value: function canDragSource(sourceId) {\n      if (!sourceId) {\n        return false;\n      }\n\n      var source = this.registry.getSource(sourceId);\n      invariant(source, \"Expected to find a valid source. sourceId=\".concat(sourceId));\n\n      if (this.isDragging()) {\n        return false;\n      }\n\n      return source.canDrag(this, sourceId);\n    }\n  }, {\n    key: \"canDropOnTarget\",\n    value: function canDropOnTarget(targetId) {\n      // undefined on initial render\n      if (!targetId) {\n        return false;\n      }\n\n      var target = this.registry.getTarget(targetId);\n      invariant(target, \"Expected to find a valid target. targetId=\".concat(targetId));\n\n      if (!this.isDragging() || this.didDrop()) {\n        return false;\n      }\n\n      var targetType = this.registry.getTargetType(targetId);\n      var draggedItemType = this.getItemType();\n      return matchesType(targetType, draggedItemType) && target.canDrop(this, targetId);\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging() {\n      return Boolean(this.getItemType());\n    }\n  }, {\n    key: \"isDraggingSource\",\n    value: function isDraggingSource(sourceId) {\n      // undefined on initial render\n      if (!sourceId) {\n        return false;\n      }\n\n      var source = this.registry.getSource(sourceId, true);\n      invariant(source, \"Expected to find a valid source. sourceId=\".concat(sourceId));\n\n      if (!this.isDragging() || !this.isSourcePublic()) {\n        return false;\n      }\n\n      var sourceType = this.registry.getSourceType(sourceId);\n      var draggedItemType = this.getItemType();\n\n      if (sourceType !== draggedItemType) {\n        return false;\n      }\n\n      return source.isDragging(this, sourceId);\n    }\n  }, {\n    key: \"isOverTarget\",\n    value: function isOverTarget(targetId) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        shallow: false\n      };\n\n      // undefined on initial render\n      if (!targetId) {\n        return false;\n      }\n\n      var shallow = options.shallow;\n\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      var targetType = this.registry.getTargetType(targetId);\n      var draggedItemType = this.getItemType();\n\n      if (draggedItemType && !matchesType(targetType, draggedItemType)) {\n        return false;\n      }\n\n      var targetIds = this.getTargetIds();\n\n      if (!targetIds.length) {\n        return false;\n      }\n\n      var index = targetIds.indexOf(targetId);\n\n      if (shallow) {\n        return index === targetIds.length - 1;\n      } else {\n        return index > -1;\n      }\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.store.getState().dragOperation.itemType;\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.store.getState().dragOperation.item;\n    }\n  }, {\n    key: \"getSourceId\",\n    value: function getSourceId() {\n      return this.store.getState().dragOperation.sourceId;\n    }\n  }, {\n    key: \"getTargetIds\",\n    value: function getTargetIds() {\n      return this.store.getState().dragOperation.targetIds;\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.store.getState().dragOperation.dropResult;\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.store.getState().dragOperation.didDrop;\n    }\n  }, {\n    key: \"isSourcePublic\",\n    value: function isSourcePublic() {\n      return Boolean(this.store.getState().dragOperation.isSourcePublic);\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.store.getState().dragOffset.initialClientOffset;\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.store.getState().dragOffset.initialSourceClientOffset;\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.store.getState().dragOffset.clientOffset;\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return _getSourceClientOffset(this.store.getState().dragOffset);\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return _getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n    }\n  }]);\n\n  return DragDropMonitorImpl;\n}();","export var HandlerRole;\n\n(function (HandlerRole) {\n  HandlerRole[\"SOURCE\"] = \"SOURCE\";\n  HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole || (HandlerRole = {}));","var nextUniqueId = 0;\nexport function getNextUniqueId() {\n  return nextUniqueId++;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { invariant } from '@react-dnd/invariant';\nexport function validateSourceContract(source) {\n  invariant(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n  invariant(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n  invariant(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexport function validateTargetContract(target) {\n  invariant(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n  invariant(typeof target.hover === 'function', 'Expected hover to be a function.');\n  invariant(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexport function validateType(type, allowArray) {\n  if (allowArray && Array.isArray(type)) {\n    type.forEach(function (t) {\n      return validateType(t, false);\n    });\n    return;\n  }\n\n  invariant(typeof type === 'string' || _typeof(type) === 'symbol', allowArray ? 'Type can only be a string, a symbol, or an array of either.' : 'Type can only be a string or a symbol.');\n}","function _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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { addSource as _addSource, addTarget as _addTarget, removeSource as _removeSource, removeTarget as _removeTarget } from '../actions/registry';\nimport { getNextUniqueId } from '../utils/getNextUniqueId';\nimport { HandlerRole } from '../interfaces';\nimport { validateSourceContract, validateTargetContract, validateType } from '../contracts';\nimport { asap } from '@react-dnd/asap';\n\nfunction getNextHandlerId(role) {\n  var id = getNextUniqueId().toString();\n\n  switch (role) {\n    case HandlerRole.SOURCE:\n      return \"S\".concat(id);\n\n    case HandlerRole.TARGET:\n      return \"T\".concat(id);\n\n    default:\n      throw new Error(\"Unknown Handler Role: \".concat(role));\n  }\n}\n\nfunction parseRoleFromHandlerId(handlerId) {\n  switch (handlerId[0]) {\n    case 'S':\n      return HandlerRole.SOURCE;\n\n    case 'T':\n      return HandlerRole.TARGET;\n\n    default:\n      invariant(false, \"Cannot parse handler ID: \".concat(handlerId));\n  }\n}\n\nfunction mapContainsValue(map, searchValue) {\n  var entries = map.entries();\n  var isDone = false;\n\n  do {\n    var _entries$next = entries.next(),\n        done = _entries$next.done,\n        _entries$next$value = _slicedToArray(_entries$next.value, 2),\n        value = _entries$next$value[1];\n\n    if (value === searchValue) {\n      return true;\n    }\n\n    isDone = !!done;\n  } while (!isDone);\n\n  return false;\n}\n\nexport var HandlerRegistryImpl = /*#__PURE__*/function () {\n  function HandlerRegistryImpl(store) {\n    _classCallCheck(this, HandlerRegistryImpl);\n\n    _defineProperty(this, \"types\", new Map());\n\n    _defineProperty(this, \"dragSources\", new Map());\n\n    _defineProperty(this, \"dropTargets\", new Map());\n\n    _defineProperty(this, \"pinnedSourceId\", null);\n\n    _defineProperty(this, \"pinnedSource\", null);\n\n    _defineProperty(this, \"store\", void 0);\n\n    this.store = store;\n  }\n\n  _createClass(HandlerRegistryImpl, [{\n    key: \"addSource\",\n    value: function addSource(type, source) {\n      validateType(type);\n      validateSourceContract(source);\n      var sourceId = this.addHandler(HandlerRole.SOURCE, type, source);\n      this.store.dispatch(_addSource(sourceId));\n      return sourceId;\n    }\n  }, {\n    key: \"addTarget\",\n    value: function addTarget(type, target) {\n      validateType(type, true);\n      validateTargetContract(target);\n      var targetId = this.addHandler(HandlerRole.TARGET, type, target);\n      this.store.dispatch(_addTarget(targetId));\n      return targetId;\n    }\n  }, {\n    key: \"containsHandler\",\n    value: function containsHandler(handler) {\n      return mapContainsValue(this.dragSources, handler) || mapContainsValue(this.dropTargets, handler);\n    }\n  }, {\n    key: \"getSource\",\n    value: function getSource(sourceId) {\n      var includePinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n      var isPinned = includePinned && sourceId === this.pinnedSourceId;\n      var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n      return source;\n    }\n  }, {\n    key: \"getTarget\",\n    value: function getTarget(targetId) {\n      invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n      return this.dropTargets.get(targetId);\n    }\n  }, {\n    key: \"getSourceType\",\n    value: function getSourceType(sourceId) {\n      invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n      return this.types.get(sourceId);\n    }\n  }, {\n    key: \"getTargetType\",\n    value: function getTargetType(targetId) {\n      invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n      return this.types.get(targetId);\n    }\n  }, {\n    key: \"isSourceId\",\n    value: function isSourceId(handlerId) {\n      var role = parseRoleFromHandlerId(handlerId);\n      return role === HandlerRole.SOURCE;\n    }\n  }, {\n    key: \"isTargetId\",\n    value: function isTargetId(handlerId) {\n      var role = parseRoleFromHandlerId(handlerId);\n      return role === HandlerRole.TARGET;\n    }\n  }, {\n    key: \"removeSource\",\n    value: function removeSource(sourceId) {\n      var _this = this;\n\n      invariant(this.getSource(sourceId), 'Expected an existing source.');\n      this.store.dispatch(_removeSource(sourceId));\n      asap(function () {\n        _this.dragSources.delete(sourceId);\n\n        _this.types.delete(sourceId);\n      });\n    }\n  }, {\n    key: \"removeTarget\",\n    value: function removeTarget(targetId) {\n      invariant(this.getTarget(targetId), 'Expected an existing target.');\n      this.store.dispatch(_removeTarget(targetId));\n      this.dropTargets.delete(targetId);\n      this.types.delete(targetId);\n    }\n  }, {\n    key: \"pinSource\",\n    value: function pinSource(sourceId) {\n      var source = this.getSource(sourceId);\n      invariant(source, 'Expected an existing source.');\n      this.pinnedSourceId = sourceId;\n      this.pinnedSource = source;\n    }\n  }, {\n    key: \"unpinSource\",\n    value: function unpinSource() {\n      invariant(this.pinnedSource, 'No source is pinned at the time.');\n      this.pinnedSourceId = null;\n      this.pinnedSource = null;\n    }\n  }, {\n    key: \"addHandler\",\n    value: function addHandler(role, type, handler) {\n      var id = getNextHandlerId(role);\n      this.types.set(id, type);\n\n      if (role === HandlerRole.SOURCE) {\n        this.dragSources.set(id, handler);\n      } else if (role === HandlerRole.TARGET) {\n        this.dropTargets.set(id, handler);\n      }\n\n      return id;\n    }\n  }]);\n\n  return HandlerRegistryImpl;\n}();","import { DragDropManagerImpl } from './classes/DragDropManagerImpl';\nimport { createStore } from 'redux';\nimport { reduce } from './reducers';\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl';\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl';\nexport function createDragDropManager(backendFactory) {\n  var globalContext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n  var backendOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var debugMode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  var store = makeStoreInstance(debugMode);\n  var monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store));\n  var manager = new DragDropManagerImpl(store, monitor);\n  var backend = backendFactory(manager, globalContext, backendOptions);\n  manager.receiveBackend(backend);\n  return manager;\n}\n\nfunction makeStoreInstance(debugMode) {\n  // TODO: if we ever make a react-native version of this,\n  // we'll need to consider how to pull off dev-tooling\n  var reduxDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;\n  return createStore(reduce, debugMode && reduxDevTools && reduxDevTools({\n    name: 'dnd-core',\n    instanceId: 'dnd-core'\n  }));\n}","var _excluded = [\"children\"];\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, memo } from 'react';\nimport { createDragDropManager } from 'dnd-core';\nimport { DndContext } from './DndContext';\nvar refCount = 0;\nvar INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__');\n/**\n * A React component that provides the React-DnD context\n */\n\nexport var DndProvider = memo(function DndProvider(_ref) {\n  var children = _ref.children,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  var _getDndContextValue = getDndContextValue(props),\n      _getDndContextValue2 = _slicedToArray(_getDndContextValue, 2),\n      manager = _getDndContextValue2[0],\n      isGlobalInstance = _getDndContextValue2[1]; // memoized from props\n\n  /**\n   * If the global context was used to store the DND context\n   * then where theres no more references to it we should\n   * clean it up to avoid memory leaks\n   */\n\n\n  useEffect(function () {\n    if (isGlobalInstance) {\n      var context = getGlobalContext();\n      ++refCount;\n      return function () {\n        if (--refCount === 0) {\n          context[INSTANCE_SYM] = null;\n        }\n      };\n    }\n  }, []);\n  return _jsx(DndContext.Provider, Object.assign({\n    value: manager\n  }, {\n    children: children\n  }), void 0);\n});\n\nfunction getDndContextValue(props) {\n  if ('manager' in props) {\n    var _manager = {\n      dragDropManager: props.manager\n    };\n    return [_manager, false];\n  }\n\n  var manager = createSingletonDndContext(props.backend, props.context, props.options, props.debugMode);\n  var isGlobalInstance = !props.context;\n  return [manager, isGlobalInstance];\n}\n\nfunction createSingletonDndContext(backend) {\n  var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getGlobalContext();\n  var options = arguments.length > 2 ? arguments[2] : undefined;\n  var debugMode = arguments.length > 3 ? arguments[3] : undefined;\n  var ctx = context;\n\n  if (!ctx[INSTANCE_SYM]) {\n    ctx[INSTANCE_SYM] = {\n      dragDropManager: createDragDropManager(backend, context, options, debugMode)\n    };\n  }\n\n  return ctx[INSTANCE_SYM];\n}\n\nfunction getGlobalContext() {\n  return typeof global !== 'undefined' ? global : window;\n}"],"sourceRoot":""}